summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2013-05-15 21:43:59 +0200
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2013-05-15 21:43:59 +0200
commitb2e3c7da703d4c3dda41d4f1e18cd976e6c4381a (patch)
tree7462cd2988228ae24c40b37a9382d35874bbf099
parent23d8d191eff180ba312a4d1b4fec8597e5a988d5 (diff)
parent4ef61f2ad4ff509ee05c7051d359009511f81226 (diff)
downloadllvm-b2e3c7da703d4c3dda41d4f1e18cd976e6c4381a.tar.gz
llvm-b2e3c7da703d4c3dda41d4f1e18cd976e6c4381a.tar.bz2
llvm-b2e3c7da703d4c3dda41d4f1e18cd976e6c4381a.tar.xz
Merge branch 'master' into embtk-support-masterembtk-support-master
-rw-r--r--docs/CodeGenerator.rst2
-rw-r--r--docs/CommandGuide/FileCheck.rst49
-rw-r--r--docs/ReleaseNotes.rst14
-rw-r--r--examples/ExceptionDemo/ExceptionDemo.cpp4
-rw-r--r--include/llvm/ADT/IntervalMap.h2
-rw-r--r--include/llvm/ADT/OwningPtr.h5
-rw-r--r--include/llvm/ADT/PointerUnion.h12
-rw-r--r--include/llvm/Analysis/InlineCost.h2
-rw-r--r--include/llvm/CodeGen/AsmPrinter.h7
-rw-r--r--include/llvm/CodeGen/MachineModuleInfo.h16
-rw-r--r--include/llvm/CodeGen/SlotIndexes.h2
-rw-r--r--include/llvm/ExecutionEngine/ExecutionEngine.h32
-rw-r--r--include/llvm/ExecutionEngine/SectionMemoryManager.h52
-rw-r--r--include/llvm/MC/MCAsmInfo.h11
-rw-r--r--include/llvm/MC/MCELFObjectWriter.h7
-rw-r--r--include/llvm/MC/MachineLocation.h29
-rw-r--r--include/llvm/Support/CallSite.h2
-rw-r--r--include/llvm/Support/TargetRegistry.h10
-rw-r--r--include/llvm/Support/YAMLParser.h4
-rw-r--r--include/llvm/Target/TargetMachine.h1
-rw-r--r--lib/Analysis/MemoryDependenceAnalysis.cpp2
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp9
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp39
-rw-r--r--lib/CodeGen/AsmPrinter/DIE.cpp4
-rw-r--r--lib/CodeGen/AsmPrinter/DIE.h6
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfException.h1
-rw-r--r--lib/CodeGen/LLVMTargetMachine.cpp19
-rw-r--r--lib/CodeGen/MachineModuleInfo.cpp35
-rw-r--r--lib/CodeGen/RegAllocGreedy.cpp2
-rw-r--r--lib/CodeGen/SelectionDAG/DAGCombiner.cpp34
-rw-r--r--lib/CodeGen/SjLjEHPrepare.cpp4
-rw-r--r--lib/CodeGen/StackColoring.cpp5
-rw-r--r--lib/ExecutionEngine/ExecutionEngine.cpp17
-rw-r--r--lib/ExecutionEngine/MCJIT/MCJIT.cpp10
-rw-r--r--lib/ExecutionEngine/MCJIT/MCJIT.h2
-rw-r--r--lib/IR/Value.cpp27
-rw-r--r--lib/MC/ELFObjectWriter.cpp3
-rw-r--r--lib/MC/MCDisassembler/Disassembler.cpp10
-rw-r--r--lib/MC/MCDwarf.cpp39
-rw-r--r--lib/MC/MCELFObjectTargetWriter.cpp18
-rw-r--r--lib/MC/MCParser/AsmParser.cpp2
-rw-r--r--lib/Object/MachOObjectFile.cpp5
-rw-r--r--lib/Support/APFloat.cpp29
-rw-r--r--lib/Support/SourceMgr.cpp2
-rw-r--r--lib/Support/Triple.cpp2
-rw-r--r--lib/Support/Unix/Memory.inc1
-rw-r--r--lib/Support/Windows/Windows.h3
-rw-r--r--lib/Target/AArch64/AArch64TargetMachine.cpp1
-rw-r--r--lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp9
-rw-r--r--lib/Target/ARM/ARMBaseRegisterInfo.cpp1
-rw-r--r--lib/Target/ARM/ARMISelLowering.cpp59
-rw-r--r--lib/Target/ARM/ARMInstrInfo.td10
-rw-r--r--lib/Target/ARM/ARMRegisterInfo.td25
-rw-r--r--lib/Target/ARM/ARMSubtarget.cpp21
-rw-r--r--lib/Target/ARM/ARMTargetMachine.cpp2
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassembler.cpp18
-rw-r--r--lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp2
-rw-r--r--lib/Target/Hexagon/CMakeLists.txt1
-rw-r--r--lib/Target/Hexagon/Hexagon.h2
-rw-r--r--lib/Target/Hexagon/HexagonCopyToCombine.cpp676
-rw-r--r--lib/Target/Hexagon/HexagonInstrInfo.td6
-rw-r--r--lib/Target/Hexagon/HexagonInstrInfoV4.td87
-rw-r--r--lib/Target/Hexagon/HexagonNewValueJump.cpp1
-rw-r--r--lib/Target/Hexagon/HexagonTargetMachine.cpp5
-rw-r--r--lib/Target/Hexagon/HexagonVLIWPacketizer.cpp36
-rw-r--r--lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp9
-rw-r--r--lib/Target/MBlaze/MBlazeTargetMachine.cpp1
-rw-r--r--lib/Target/MBlaze/MCTargetDesc/MBlazeMCTargetDesc.cpp2
-rw-r--r--lib/Target/MSP430/MSP430TargetMachine.cpp4
-rw-r--r--lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp8
-rw-r--r--lib/Target/Mips/Mips16HardFloat.cpp277
-rw-r--r--lib/Target/Mips/Mips16InstrInfo.cpp4
-rw-r--r--lib/Target/Mips/Mips16InstrInfo.h4
-rw-r--r--lib/Target/Mips/MipsInstrFPU.td14
-rw-r--r--lib/Target/Mips/MipsInstrInfo.cpp23
-rw-r--r--lib/Target/Mips/MipsInstrInfo.h10
-rw-r--r--lib/Target/Mips/MipsInstrInfo.td3
-rw-r--r--lib/Target/Mips/MipsLongBranch.cpp2
-rw-r--r--lib/Target/Mips/MipsSEInstrInfo.cpp84
-rw-r--r--lib/Target/Mips/MipsSEInstrInfo.h15
-rw-r--r--lib/Target/Mips/MipsTargetMachine.cpp1
-rw-r--r--lib/Target/NVPTX/NVPTXTargetMachine.cpp4
-rw-r--r--lib/Target/PowerPC/CMakeLists.txt1
-rw-r--r--lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp36
-rw-r--r--lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp58
-rw-r--r--lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp8
-rw-r--r--lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp9
-rw-r--r--lib/Target/PowerPC/PPCFrameLowering.cpp1
-rw-r--r--lib/Target/PowerPC/PPCISelLowering.cpp5
-rw-r--r--lib/Target/PowerPC/PPCISelLowering.h34
-rw-r--r--lib/Target/PowerPC/PPCInstrFormats.td13
-rw-r--r--lib/Target/PowerPC/PPCInstrInfo.td10
-rw-r--r--lib/Target/PowerPC/PPCTargetMachine.cpp1
-rw-r--r--lib/Target/PowerPC/PPCTargetObjectFile.cpp57
-rw-r--r--lib/Target/PowerPC/PPCTargetObjectFile.h32
-rw-r--r--lib/Target/R600/AMDGPUTargetMachine.cpp1
-rw-r--r--lib/Target/R600/AMDILDeviceInfo.cpp3
-rw-r--r--lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.cpp2
-rw-r--r--lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h4
-rw-r--r--lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp13
-rw-r--r--lib/Target/R600/Processors.td1
-rw-r--r--lib/Target/Sparc/SparcTargetMachine.cpp1
-rw-r--r--lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp127
-rw-r--r--lib/Target/SystemZ/CMakeLists.txt2
-rw-r--r--lib/Target/SystemZ/Disassembler/CMakeLists.txt7
-rw-r--r--lib/Target/SystemZ/Disassembler/LLVMBuild.txt23
-rw-r--r--lib/Target/SystemZ/Disassembler/Makefile16
-rw-r--r--lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp301
-rw-r--r--lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp20
-rw-r--r--lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h1
-rw-r--r--lib/Target/SystemZ/LLVMBuild.txt3
-rw-r--r--lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp96
-rw-r--r--lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp52
-rw-r--r--lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h10
-rw-r--r--lib/Target/SystemZ/Makefile3
-rw-r--r--lib/Target/SystemZ/README.txt98
-rw-r--r--lib/Target/SystemZ/SystemZInstrFP.td49
-rw-r--r--lib/Target/SystemZ/SystemZInstrFormats.td444
-rw-r--r--lib/Target/SystemZ/SystemZInstrInfo.td111
-rw-r--r--lib/Target/SystemZ/SystemZOperands.td56
-rw-r--r--lib/Target/SystemZ/SystemZTargetMachine.cpp1
-rw-r--r--lib/Target/X86/AsmParser/X86AsmParser.cpp1
-rw-r--r--lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp16
-rw-r--r--lib/Target/X86/X86InstrMMX.td14
-rw-r--r--lib/Target/X86/X86TargetMachine.cpp2
-rw-r--r--lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.cpp8
-rw-r--r--lib/Target/XCore/XCoreTargetMachine.cpp1
-rw-r--r--lib/Transforms/IPO/GlobalOpt.cpp6
-rw-r--r--lib/Transforms/InstCombine/InstCombineMulDivRem.cpp2
-rw-r--r--lib/Transforms/ObjCARC/ObjCARCOpts.cpp131
-rw-r--r--lib/Transforms/Vectorize/LoopVectorize.cpp162
-rw-r--r--lib/Transforms/Vectorize/VecUtils.cpp44
-rw-r--r--test/CodeGen/ARM/2013-05-13-DAGCombiner-undef-mask.ll10
-rw-r--r--test/CodeGen/ARM/call-tc.ll17
-rw-r--r--test/CodeGen/ARM/fast-isel-GEP-coalesce.ll4
-rw-r--r--test/CodeGen/ARM/fast-isel-br-const.ll12
-rw-r--r--test/CodeGen/ARM/fast-isel-call-multi-reg-return.ll4
-rw-r--r--test/CodeGen/ARM/fast-isel-call.ll159
-rw-r--r--test/CodeGen/ARM/fast-isel-crash.ll2
-rw-r--r--test/CodeGen/ARM/fast-isel-crash2.ll2
-rw-r--r--test/CodeGen/ARM/fast-isel-deadcode.ll2
-rw-r--r--test/CodeGen/ARM/fast-isel-intrinsic.ll72
-rw-r--r--test/CodeGen/ARM/fast-isel-ldr-str-arm.ll2
-rw-r--r--test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll2
-rw-r--r--test/CodeGen/ARM/fast-isel-mvn.ll4
-rw-r--r--test/CodeGen/ARM/fast-isel-pic.ll8
-rw-r--r--test/CodeGen/ARM/fast-isel-redefinition.ll2
-rw-r--r--test/CodeGen/ARM/fast-isel-select.ll2
-rw-r--r--test/CodeGen/ARM/fast-isel-static.ll6
-rw-r--r--test/CodeGen/ARM/fast-isel.ll12
-rw-r--r--test/CodeGen/ARM/vmul.ll24
-rw-r--r--test/CodeGen/Hexagon/BranchPredict.ll79
-rw-r--r--test/CodeGen/Hexagon/args.ll9
-rw-r--r--test/CodeGen/Hexagon/extload-combine.ll80
-rw-r--r--test/CodeGen/Hexagon/packetize_cond_inst.ll32
-rw-r--r--test/CodeGen/Hexagon/tfr-to-combine.ll35
-rw-r--r--test/CodeGen/Mips/hf16call32.ll1028
-rw-r--r--test/CodeGen/Mips/mno-ldc1-sdc1.ll45
-rw-r--r--test/CodeGen/Mips/stackcoloring.ll39
-rw-r--r--test/CodeGen/PowerPC/addrfuncstr.ll27
-rw-r--r--test/CodeGen/PowerPC/crsave.ll12
-rw-r--r--test/CodeGen/R600/llvm.AMDGPU.imax.ll21
-rw-r--r--test/CodeGen/R600/llvm.AMDGPU.imin.ll21
-rw-r--r--test/CodeGen/R600/llvm.AMDGPU.trunc.ll22
-rw-r--r--test/CodeGen/R600/llvm.AMDGPU.umax.ll21
-rw-r--r--test/CodeGen/R600/llvm.AMDGPU.umin.ll21
-rw-r--r--test/CodeGen/R600/uitofp.ll16
-rw-r--r--test/CodeGen/SPARC/64cond.ll4
-rw-r--r--test/CodeGen/SystemZ/int-sub-07.ll131
-rw-r--r--test/CodeGen/Thumb2/large-call.ll2
-rw-r--r--test/CodeGen/X86/x86-64-psub.ll213
-rw-r--r--test/ExecutionEngine/MCJIT/eh.ll2
-rw-r--r--test/FileCheck/check-dag-xfails.txt85
-rw-r--r--test/FileCheck/check-dag.txt25
-rw-r--r--test/MC/ARM/basic-arm-instructions.s14
-rw-r--r--test/MC/ARM/data-in-code.ll14
-rw-r--r--test/MC/Disassembler/ARM/basic-arm-instructions.txt4
-rw-r--r--test/MC/Disassembler/SystemZ/insns-pcrel.txt933
-rw-r--r--test/MC/Disassembler/SystemZ/insns.txt6071
-rw-r--r--test/MC/Disassembler/SystemZ/invalid-regs.txt22
-rw-r--r--test/MC/Disassembler/SystemZ/lit.local.cfg6
-rw-r--r--test/MC/Disassembler/SystemZ/trunc-01.txt5
-rw-r--r--test/MC/Disassembler/SystemZ/trunc-02.txt5
-rw-r--r--test/MC/Disassembler/SystemZ/trunc-03.txt5
-rw-r--r--test/MC/Disassembler/SystemZ/unmapped.txt32
-rw-r--r--test/MC/Mips/mips-alu-instructions.s2
-rw-r--r--test/MC/PowerPC/ppc64-encoding.s3
-rw-r--r--test/MC/PowerPC/ppc64-fixup-apply.s38
-rw-r--r--test/MC/PowerPC/ppc64-fixups.s84
-rw-r--r--test/MC/SystemZ/insn-a-01.s17
-rw-r--r--test/MC/SystemZ/insn-a-02.s10
-rw-r--r--test/MC/SystemZ/insn-adb-01.s17
-rw-r--r--test/MC/SystemZ/insn-adb-02.s10
-rw-r--r--test/MC/SystemZ/insn-adbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-aeb-01.s17
-rw-r--r--test/MC/SystemZ/insn-aeb-02.s10
-rw-r--r--test/MC/SystemZ/insn-aebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-afi-01.s15
-rw-r--r--test/MC/SystemZ/insn-afi-02.s10
-rw-r--r--test/MC/SystemZ/insn-ag-01.s23
-rw-r--r--test/MC/SystemZ/insn-ag-02.s10
-rw-r--r--test/MC/SystemZ/insn-agf-01.s23
-rw-r--r--test/MC/SystemZ/insn-agf-02.s10
-rw-r--r--test/MC/SystemZ/insn-agfi-01.s15
-rw-r--r--test/MC/SystemZ/insn-agfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-agfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-aghi-01.s15
-rw-r--r--test/MC/SystemZ/insn-aghi-02.s13
-rw-r--r--test/MC/SystemZ/insn-agr-01.s11
-rw-r--r--test/MC/SystemZ/insn-agsi-01.s29
-rw-r--r--test/MC/SystemZ/insn-agsi-02.s19
-rw-r--r--test/MC/SystemZ/insn-ah-01.s17
-rw-r--r--test/MC/SystemZ/insn-ah-02.s10
-rw-r--r--test/MC/SystemZ/insn-ahi-01.s15
-rw-r--r--test/MC/SystemZ/insn-ahi-02.s13
-rw-r--r--test/MC/SystemZ/insn-ahy-01.s23
-rw-r--r--test/MC/SystemZ/insn-ahy-02.s10
-rw-r--r--test/MC/SystemZ/insn-al-01.s17
-rw-r--r--test/MC/SystemZ/insn-al-02.s10
-rw-r--r--test/MC/SystemZ/insn-alc-01.s23
-rw-r--r--test/MC/SystemZ/insn-alc-02.s10
-rw-r--r--test/MC/SystemZ/insn-alcg-01.s23
-rw-r--r--test/MC/SystemZ/insn-alcg-02.s10
-rw-r--r--test/MC/SystemZ/insn-alcgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-alcr-01.s11
-rw-r--r--test/MC/SystemZ/insn-alfi-01.s9
-rw-r--r--test/MC/SystemZ/insn-alfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-alg-01.s23
-rw-r--r--test/MC/SystemZ/insn-alg-02.s10
-rw-r--r--test/MC/SystemZ/insn-algf-01.s23
-rw-r--r--test/MC/SystemZ/insn-algf-02.s10
-rw-r--r--test/MC/SystemZ/insn-algfi-01.s9
-rw-r--r--test/MC/SystemZ/insn-algfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-algfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-algr-01.s11
-rw-r--r--test/MC/SystemZ/insn-alr-01.s11
-rw-r--r--test/MC/SystemZ/insn-aly-01.s23
-rw-r--r--test/MC/SystemZ/insn-aly-02.s10
-rw-r--r--test/MC/SystemZ/insn-ar-01.s11
-rw-r--r--test/MC/SystemZ/insn-asi-01.s29
-rw-r--r--test/MC/SystemZ/insn-asi-02.s19
-rw-r--r--test/MC/SystemZ/insn-axbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-axbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-ay-01.s23
-rw-r--r--test/MC/SystemZ/insn-ay-02.s10
-rw-r--r--test/MC/SystemZ/insn-bad.s2787
-rw-r--r--test/MC/SystemZ/insn-basr-01.s12
-rw-r--r--test/MC/SystemZ/insn-br-01.s9
-rw-r--r--test/MC/SystemZ/insn-bras-01.s31
-rw-r--r--test/MC/SystemZ/insn-brasl-01.s31
-rw-r--r--test/MC/SystemZ/insn-brc-01.s238
-rw-r--r--test/MC/SystemZ/insn-brc-02.s13
-rw-r--r--test/MC/SystemZ/insn-brcl-01.s238
-rw-r--r--test/MC/SystemZ/insn-brcl-02.s13
-rw-r--r--test/MC/SystemZ/insn-c-01.s17
-rw-r--r--test/MC/SystemZ/insn-c-02.s10
-rw-r--r--test/MC/SystemZ/insn-cdb-01.s17
-rw-r--r--test/MC/SystemZ/insn-cdb-02.s10
-rw-r--r--test/MC/SystemZ/insn-cdbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-cdfbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cdfbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-cdgbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cdgbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-ceb-01.s17
-rw-r--r--test/MC/SystemZ/insn-ceb-02.s10
-rw-r--r--test/MC/SystemZ/insn-cebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-cefbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cefbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-cegbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cegbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-cfdbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cfdbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-cfebr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cfebr-02.s16
-rw-r--r--test/MC/SystemZ/insn-cfi-01.s15
-rw-r--r--test/MC/SystemZ/insn-cfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-cfxbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cfxbr-02.s23
-rw-r--r--test/MC/SystemZ/insn-cg-01.s23
-rw-r--r--test/MC/SystemZ/insn-cg-02.s10
-rw-r--r--test/MC/SystemZ/insn-cgdbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cgdbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-cgebr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cgebr-02.s16
-rw-r--r--test/MC/SystemZ/insn-cgf-01.s23
-rw-r--r--test/MC/SystemZ/insn-cgf-02.s10
-rw-r--r--test/MC/SystemZ/insn-cgfi-01.s15
-rw-r--r--test/MC/SystemZ/insn-cgfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-cgfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-cgfrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-cgh-01.s23
-rw-r--r--test/MC/SystemZ/insn-cgh-02.s10
-rw-r--r--test/MC/SystemZ/insn-cghi-01.s15
-rw-r--r--test/MC/SystemZ/insn-cghi-02.s13
-rw-r--r--test/MC/SystemZ/insn-cghrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-cghsi-01.s25
-rw-r--r--test/MC/SystemZ/insn-cghsi-02.s19
-rw-r--r--test/MC/SystemZ/insn-cgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-cgrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-cgxbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cgxbr-02.s23
-rw-r--r--test/MC/SystemZ/insn-ch-01.s17
-rw-r--r--test/MC/SystemZ/insn-ch-02.s10
-rw-r--r--test/MC/SystemZ/insn-chhsi-01.s25
-rw-r--r--test/MC/SystemZ/insn-chhsi-02.s19
-rw-r--r--test/MC/SystemZ/insn-chi-01.s15
-rw-r--r--test/MC/SystemZ/insn-chi-02.s13
-rw-r--r--test/MC/SystemZ/insn-chrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-chsi-01.s25
-rw-r--r--test/MC/SystemZ/insn-chsi-02.s19
-rw-r--r--test/MC/SystemZ/insn-chy-01.s23
-rw-r--r--test/MC/SystemZ/insn-chy-02.s10
-rw-r--r--test/MC/SystemZ/insn-cl-01.s17
-rw-r--r--test/MC/SystemZ/insn-cl-02.s10
-rw-r--r--test/MC/SystemZ/insn-clfhsi-01.s17
-rw-r--r--test/MC/SystemZ/insn-clfhsi-02.s19
-rw-r--r--test/MC/SystemZ/insn-clfi-01.s9
-rw-r--r--test/MC/SystemZ/insn-clfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-clg-01.s23
-rw-r--r--test/MC/SystemZ/insn-clg-02.s10
-rw-r--r--test/MC/SystemZ/insn-clgf-01.s23
-rw-r--r--test/MC/SystemZ/insn-clgf-02.s10
-rw-r--r--test/MC/SystemZ/insn-clgfi-01.s9
-rw-r--r--test/MC/SystemZ/insn-clgfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-clgfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-clgfrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-clghrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-clghsi-01.s17
-rw-r--r--test/MC/SystemZ/insn-clghsi-02.s19
-rw-r--r--test/MC/SystemZ/insn-clgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-clgrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-clhhsi-01.s17
-rw-r--r--test/MC/SystemZ/insn-clhhsi-02.s19
-rw-r--r--test/MC/SystemZ/insn-clhrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-cli-01.s17
-rw-r--r--test/MC/SystemZ/insn-cli-02.s19
-rw-r--r--test/MC/SystemZ/insn-cliy-01.s23
-rw-r--r--test/MC/SystemZ/insn-cliy-02.s19
-rw-r--r--test/MC/SystemZ/insn-clr-01.s11
-rw-r--r--test/MC/SystemZ/insn-clrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-cly-01.s23
-rw-r--r--test/MC/SystemZ/insn-cly-02.s10
-rw-r--r--test/MC/SystemZ/insn-cpsdr-01.s16
-rw-r--r--test/MC/SystemZ/insn-cr-01.s11
-rw-r--r--test/MC/SystemZ/insn-crl-01.s31
-rw-r--r--test/MC/SystemZ/insn-cs-01.s19
-rw-r--r--test/MC/SystemZ/insn-cs-02.s13
-rw-r--r--test/MC/SystemZ/insn-csg-01.s25
-rw-r--r--test/MC/SystemZ/insn-csg-02.s13
-rw-r--r--test/MC/SystemZ/insn-csy-01.s25
-rw-r--r--test/MC/SystemZ/insn-csy-02.s13
-rw-r--r--test/MC/SystemZ/insn-cxbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-cxbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-cxfbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cxfbr-02.s22
-rw-r--r--test/MC/SystemZ/insn-cxgbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-cxgbr-02.s22
-rw-r--r--test/MC/SystemZ/insn-cy-01.s23
-rw-r--r--test/MC/SystemZ/insn-cy-02.s10
-rw-r--r--test/MC/SystemZ/insn-ddb-01.s17
-rw-r--r--test/MC/SystemZ/insn-ddb-02.s10
-rw-r--r--test/MC/SystemZ/insn-ddbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-deb-01.s17
-rw-r--r--test/MC/SystemZ/insn-deb-02.s10
-rw-r--r--test/MC/SystemZ/insn-debr-01.s11
-rw-r--r--test/MC/SystemZ/insn-dl-01.s23
-rw-r--r--test/MC/SystemZ/insn-dl-02.s16
-rw-r--r--test/MC/SystemZ/insn-dlg-01.s23
-rw-r--r--test/MC/SystemZ/insn-dlg-02.s16
-rw-r--r--test/MC/SystemZ/insn-dlgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-dlgr-02.s10
-rw-r--r--test/MC/SystemZ/insn-dlr-01.s11
-rw-r--r--test/MC/SystemZ/insn-dlr-02.s10
-rw-r--r--test/MC/SystemZ/insn-dsg-01.s23
-rw-r--r--test/MC/SystemZ/insn-dsg-02.s16
-rw-r--r--test/MC/SystemZ/insn-dsgf-01.s23
-rw-r--r--test/MC/SystemZ/insn-dsgf-02.s16
-rw-r--r--test/MC/SystemZ/insn-dsgfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-dsgfr-02.s10
-rw-r--r--test/MC/SystemZ/insn-dsgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-dsgr-02.s10
-rw-r--r--test/MC/SystemZ/insn-dxbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-dxbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-ear-01.s13
-rw-r--r--test/MC/SystemZ/insn-ear-02.s13
-rw-r--r--test/MC/SystemZ/insn-fidbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-fidbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-fiebr-01.s13
-rw-r--r--test/MC/SystemZ/insn-fiebr-02.s16
-rw-r--r--test/MC/SystemZ/insn-fixbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-fixbr-02.s28
-rw-r--r--test/MC/SystemZ/insn-flogr-01.s11
-rw-r--r--test/MC/SystemZ/insn-flogr-02.s10
-rw-r--r--test/MC/SystemZ/insn-good.s6077
-rw-r--r--test/MC/SystemZ/insn-ic-01.s17
-rw-r--r--test/MC/SystemZ/insn-ic-02.s10
-rw-r--r--test/MC/SystemZ/insn-icy-01.s23
-rw-r--r--test/MC/SystemZ/insn-icy-02.s10
-rw-r--r--test/MC/SystemZ/insn-iihf-01.s9
-rw-r--r--test/MC/SystemZ/insn-iihf-02.s10
-rw-r--r--test/MC/SystemZ/insn-iihh-01.s11
-rw-r--r--test/MC/SystemZ/insn-iihh-02.s10
-rw-r--r--test/MC/SystemZ/insn-iihl-01.s11
-rw-r--r--test/MC/SystemZ/insn-iihl-02.s10
-rw-r--r--test/MC/SystemZ/insn-iilf-01.s9
-rw-r--r--test/MC/SystemZ/insn-iilf-02.s10
-rw-r--r--test/MC/SystemZ/insn-iilh-01.s11
-rw-r--r--test/MC/SystemZ/insn-iilh-02.s10
-rw-r--r--test/MC/SystemZ/insn-iill-01.s11
-rw-r--r--test/MC/SystemZ/insn-iill-02.s10
-rw-r--r--test/MC/SystemZ/insn-l-01.s17
-rw-r--r--test/MC/SystemZ/insn-l-02.s10
-rw-r--r--test/MC/SystemZ/insn-la-01.s17
-rw-r--r--test/MC/SystemZ/insn-la-02.s10
-rw-r--r--test/MC/SystemZ/insn-larl-01.s31
-rw-r--r--test/MC/SystemZ/insn-lay-01.s23
-rw-r--r--test/MC/SystemZ/insn-lay-02.s10
-rw-r--r--test/MC/SystemZ/insn-lb-01.s23
-rw-r--r--test/MC/SystemZ/insn-lb-02.s10
-rw-r--r--test/MC/SystemZ/insn-lbr-01.s9
-rw-r--r--test/MC/SystemZ/insn-lcdbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lcebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lcgfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lcgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lcr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lcxbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lcxbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-ld-01.s17
-rw-r--r--test/MC/SystemZ/insn-ld-02.s10
-rw-r--r--test/MC/SystemZ/insn-ldeb-01.s17
-rw-r--r--test/MC/SystemZ/insn-ldeb-02.s10
-rw-r--r--test/MC/SystemZ/insn-ldebr-01.s9
-rw-r--r--test/MC/SystemZ/insn-ldgr-01.s13
-rw-r--r--test/MC/SystemZ/insn-ldgr-02.s16
-rw-r--r--test/MC/SystemZ/insn-ldr-01.s11
-rw-r--r--test/MC/SystemZ/insn-ldxbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-ldxbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-ldy-01.s23
-rw-r--r--test/MC/SystemZ/insn-ldy-02.s10
-rw-r--r--test/MC/SystemZ/insn-le-01.s17
-rw-r--r--test/MC/SystemZ/insn-le-02.s10
-rw-r--r--test/MC/SystemZ/insn-ledbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-ler-01.s11
-rw-r--r--test/MC/SystemZ/insn-lexbr-01.s13
-rw-r--r--test/MC/SystemZ/insn-lexbr-02.s16
-rw-r--r--test/MC/SystemZ/insn-ley-01.s23
-rw-r--r--test/MC/SystemZ/insn-ley-02.s10
-rw-r--r--test/MC/SystemZ/insn-lg-01.s23
-rw-r--r--test/MC/SystemZ/insn-lg-02.s10
-rw-r--r--test/MC/SystemZ/insn-lgb-01.s24
-rw-r--r--test/MC/SystemZ/insn-lgb-02.s10
-rw-r--r--test/MC/SystemZ/insn-lgbr-01.s9
-rw-r--r--test/MC/SystemZ/insn-lgdr-01.s13
-rw-r--r--test/MC/SystemZ/insn-lgdr-02.s16
-rw-r--r--test/MC/SystemZ/insn-lgf-01.s24
-rw-r--r--test/MC/SystemZ/insn-lgf-02.s10
-rw-r--r--test/MC/SystemZ/insn-lgfi-01.s15
-rw-r--r--test/MC/SystemZ/insn-lgfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-lgfr-01.s9
-rw-r--r--test/MC/SystemZ/insn-lgfrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-lgh-01.s24
-rw-r--r--test/MC/SystemZ/insn-lgh-02.s10
-rw-r--r--test/MC/SystemZ/insn-lghi-01.s15
-rw-r--r--test/MC/SystemZ/insn-lghi-02.s13
-rw-r--r--test/MC/SystemZ/insn-lghr-01.s9
-rw-r--r--test/MC/SystemZ/insn-lghrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-lgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lgrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-lh-01.s17
-rw-r--r--test/MC/SystemZ/insn-lh-02.s10
-rw-r--r--test/MC/SystemZ/insn-lhi-01.s15
-rw-r--r--test/MC/SystemZ/insn-lhi-02.s13
-rw-r--r--test/MC/SystemZ/insn-lhr-01.s9
-rw-r--r--test/MC/SystemZ/insn-lhrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-lhy-01.s23
-rw-r--r--test/MC/SystemZ/insn-lhy-02.s10
-rw-r--r--test/MC/SystemZ/insn-llc-01.s23
-rw-r--r--test/MC/SystemZ/insn-llc-02.s10
-rw-r--r--test/MC/SystemZ/insn-llcr-01.s9
-rw-r--r--test/MC/SystemZ/insn-llgc-01.s24
-rw-r--r--test/MC/SystemZ/insn-llgc-02.s10
-rw-r--r--test/MC/SystemZ/insn-llgcr-01.s9
-rw-r--r--test/MC/SystemZ/insn-llgf-01.s24
-rw-r--r--test/MC/SystemZ/insn-llgf-02.s10
-rw-r--r--test/MC/SystemZ/insn-llgfr-01.s9
-rw-r--r--test/MC/SystemZ/insn-llgfrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-llgh-01.s24
-rw-r--r--test/MC/SystemZ/insn-llgh-02.s10
-rw-r--r--test/MC/SystemZ/insn-llghr-01.s9
-rw-r--r--test/MC/SystemZ/insn-llghrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-llh-01.s23
-rw-r--r--test/MC/SystemZ/insn-llh-02.s10
-rw-r--r--test/MC/SystemZ/insn-llhr-01.s9
-rw-r--r--test/MC/SystemZ/insn-llhrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-llihf-01.s9
-rw-r--r--test/MC/SystemZ/insn-llihf-02.s10
-rw-r--r--test/MC/SystemZ/insn-llihh-01.s11
-rw-r--r--test/MC/SystemZ/insn-llihh-02.s10
-rw-r--r--test/MC/SystemZ/insn-llihl-01.s11
-rw-r--r--test/MC/SystemZ/insn-llihl-02.s10
-rw-r--r--test/MC/SystemZ/insn-llilf-01.s9
-rw-r--r--test/MC/SystemZ/insn-llilf-02.s10
-rw-r--r--test/MC/SystemZ/insn-llilh-01.s11
-rw-r--r--test/MC/SystemZ/insn-llilh-02.s10
-rw-r--r--test/MC/SystemZ/insn-llill-01.s11
-rw-r--r--test/MC/SystemZ/insn-llill-02.s10
-rw-r--r--test/MC/SystemZ/insn-lmg-01.s29
-rw-r--r--test/MC/SystemZ/insn-lmg-02.s13
-rw-r--r--test/MC/SystemZ/insn-lndbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lnebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lnxbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lnxbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-lpdbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lpebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lpxbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lpxbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-lr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-lrv-01.s23
-rw-r--r--test/MC/SystemZ/insn-lrv-02.s10
-rw-r--r--test/MC/SystemZ/insn-lrvg-01.s23
-rw-r--r--test/MC/SystemZ/insn-lrvg-02.s10
-rw-r--r--test/MC/SystemZ/insn-lrvgr-01.s13
-rw-r--r--test/MC/SystemZ/insn-lrvr-01.s13
-rw-r--r--test/MC/SystemZ/insn-lxr-01.s11
-rw-r--r--test/MC/SystemZ/insn-lxr-02.s16
-rw-r--r--test/MC/SystemZ/insn-ly-01.s23
-rw-r--r--test/MC/SystemZ/insn-ly-02.s10
-rw-r--r--test/MC/SystemZ/insn-lzdr-01.s9
-rw-r--r--test/MC/SystemZ/insn-lzer-01.s9
-rw-r--r--test/MC/SystemZ/insn-lzxr-01.s9
-rw-r--r--test/MC/SystemZ/insn-lzxr-02.s13
-rw-r--r--test/MC/SystemZ/insn-madb-01.s21
-rw-r--r--test/MC/SystemZ/insn-madb-02.s10
-rw-r--r--test/MC/SystemZ/insn-madbr-01.s15
-rw-r--r--test/MC/SystemZ/insn-maeb-01.s21
-rw-r--r--test/MC/SystemZ/insn-maeb-02.s10
-rw-r--r--test/MC/SystemZ/insn-maebr-01.s15
-rw-r--r--test/MC/SystemZ/insn-mdb-01.s17
-rw-r--r--test/MC/SystemZ/insn-mdb-02.s10
-rw-r--r--test/MC/SystemZ/insn-mdbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-mdeb-01.s17
-rw-r--r--test/MC/SystemZ/insn-mdeb-02.s10
-rw-r--r--test/MC/SystemZ/insn-mdebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-meeb-01.s17
-rw-r--r--test/MC/SystemZ/insn-meeb-02.s10
-rw-r--r--test/MC/SystemZ/insn-meebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-mghi-01.s15
-rw-r--r--test/MC/SystemZ/insn-mghi-02.s13
-rw-r--r--test/MC/SystemZ/insn-mh-01.s17
-rw-r--r--test/MC/SystemZ/insn-mh-02.s10
-rw-r--r--test/MC/SystemZ/insn-mhi-01.s15
-rw-r--r--test/MC/SystemZ/insn-mhi-02.s13
-rw-r--r--test/MC/SystemZ/insn-mhy-01.s23
-rw-r--r--test/MC/SystemZ/insn-mhy-02.s10
-rw-r--r--test/MC/SystemZ/insn-mlg-01.s23
-rw-r--r--test/MC/SystemZ/insn-mlg-02.s16
-rw-r--r--test/MC/SystemZ/insn-mlgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-mlgr-02.s10
-rw-r--r--test/MC/SystemZ/insn-ms-01.s17
-rw-r--r--test/MC/SystemZ/insn-ms-02.s10
-rw-r--r--test/MC/SystemZ/insn-msdb-01.s21
-rw-r--r--test/MC/SystemZ/insn-msdb-02.s10
-rw-r--r--test/MC/SystemZ/insn-msdbr-01.s15
-rw-r--r--test/MC/SystemZ/insn-mseb-01.s21
-rw-r--r--test/MC/SystemZ/insn-mseb-02.s10
-rw-r--r--test/MC/SystemZ/insn-msebr-01.s15
-rw-r--r--test/MC/SystemZ/insn-msfi-01.s15
-rw-r--r--test/MC/SystemZ/insn-msfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-msg-01.s23
-rw-r--r--test/MC/SystemZ/insn-msg-02.s10
-rw-r--r--test/MC/SystemZ/insn-msgf-01.s23
-rw-r--r--test/MC/SystemZ/insn-msgf-02.s10
-rw-r--r--test/MC/SystemZ/insn-msgfi-01.s15
-rw-r--r--test/MC/SystemZ/insn-msgfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-msgfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-msgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-msr-01.s11
-rw-r--r--test/MC/SystemZ/insn-msy-01.s23
-rw-r--r--test/MC/SystemZ/insn-msy-02.s10
-rw-r--r--test/MC/SystemZ/insn-mvghi-01.s25
-rw-r--r--test/MC/SystemZ/insn-mvghi-02.s19
-rw-r--r--test/MC/SystemZ/insn-mvhhi-01.s25
-rw-r--r--test/MC/SystemZ/insn-mvhhi-02.s19
-rw-r--r--test/MC/SystemZ/insn-mvhi-01.s25
-rw-r--r--test/MC/SystemZ/insn-mvhi-02.s19
-rw-r--r--test/MC/SystemZ/insn-mvi-01.s17
-rw-r--r--test/MC/SystemZ/insn-mvi-02.s19
-rw-r--r--test/MC/SystemZ/insn-mviy-01.s23
-rw-r--r--test/MC/SystemZ/insn-mviy-02.s19
-rw-r--r--test/MC/SystemZ/insn-mxbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-mxbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-mxdb-01.s17
-rw-r--r--test/MC/SystemZ/insn-mxdb-02.s16
-rw-r--r--test/MC/SystemZ/insn-mxdbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-mxdbr-02.s10
-rw-r--r--test/MC/SystemZ/insn-n-01.s17
-rw-r--r--test/MC/SystemZ/insn-n-02.s10
-rw-r--r--test/MC/SystemZ/insn-ng-01.s23
-rw-r--r--test/MC/SystemZ/insn-ng-02.s10
-rw-r--r--test/MC/SystemZ/insn-ngr-01.s11
-rw-r--r--test/MC/SystemZ/insn-ni-01.s17
-rw-r--r--test/MC/SystemZ/insn-ni-02.s19
-rw-r--r--test/MC/SystemZ/insn-nihf-01.s9
-rw-r--r--test/MC/SystemZ/insn-nihf-02.s10
-rw-r--r--test/MC/SystemZ/insn-nihh-01.s11
-rw-r--r--test/MC/SystemZ/insn-nihh-02.s10
-rw-r--r--test/MC/SystemZ/insn-nihl-01.s11
-rw-r--r--test/MC/SystemZ/insn-nihl-02.s10
-rw-r--r--test/MC/SystemZ/insn-nilf-01.s9
-rw-r--r--test/MC/SystemZ/insn-nilf-02.s10
-rw-r--r--test/MC/SystemZ/insn-nilh-01.s11
-rw-r--r--test/MC/SystemZ/insn-nilh-02.s10
-rw-r--r--test/MC/SystemZ/insn-nill-01.s11
-rw-r--r--test/MC/SystemZ/insn-nill-02.s10
-rw-r--r--test/MC/SystemZ/insn-niy-01.s23
-rw-r--r--test/MC/SystemZ/insn-niy-02.s19
-rw-r--r--test/MC/SystemZ/insn-nr-01.s11
-rw-r--r--test/MC/SystemZ/insn-ny-01.s23
-rw-r--r--test/MC/SystemZ/insn-ny-02.s10
-rw-r--r--test/MC/SystemZ/insn-o-01.s17
-rw-r--r--test/MC/SystemZ/insn-o-02.s10
-rw-r--r--test/MC/SystemZ/insn-og-01.s23
-rw-r--r--test/MC/SystemZ/insn-og-02.s10
-rw-r--r--test/MC/SystemZ/insn-ogr-01.s11
-rw-r--r--test/MC/SystemZ/insn-oi-01.s17
-rw-r--r--test/MC/SystemZ/insn-oi-02.s19
-rw-r--r--test/MC/SystemZ/insn-oihf-01.s9
-rw-r--r--test/MC/SystemZ/insn-oihf-02.s10
-rw-r--r--test/MC/SystemZ/insn-oihh-01.s11
-rw-r--r--test/MC/SystemZ/insn-oihh-02.s10
-rw-r--r--test/MC/SystemZ/insn-oihl-01.s11
-rw-r--r--test/MC/SystemZ/insn-oihl-02.s10
-rw-r--r--test/MC/SystemZ/insn-oilf-01.s9
-rw-r--r--test/MC/SystemZ/insn-oilf-02.s10
-rw-r--r--test/MC/SystemZ/insn-oilh-01.s11
-rw-r--r--test/MC/SystemZ/insn-oilh-02.s10
-rw-r--r--test/MC/SystemZ/insn-oill-01.s11
-rw-r--r--test/MC/SystemZ/insn-oill-02.s10
-rw-r--r--test/MC/SystemZ/insn-oiy-01.s23
-rw-r--r--test/MC/SystemZ/insn-oiy-02.s19
-rw-r--r--test/MC/SystemZ/insn-or-01.s11
-rw-r--r--test/MC/SystemZ/insn-oy-01.s23
-rw-r--r--test/MC/SystemZ/insn-oy-02.s10
-rw-r--r--test/MC/SystemZ/insn-risbg-01.s17
-rw-r--r--test/MC/SystemZ/insn-risbg-02.s22
-rw-r--r--test/MC/SystemZ/insn-rll-01.s27
-rw-r--r--test/MC/SystemZ/insn-rll-02.s16
-rw-r--r--test/MC/SystemZ/insn-rllg-01.s27
-rw-r--r--test/MC/SystemZ/insn-rllg-02.s16
-rw-r--r--test/MC/SystemZ/insn-s-01.s17
-rw-r--r--test/MC/SystemZ/insn-s-02.s10
-rw-r--r--test/MC/SystemZ/insn-sdb-01.s17
-rw-r--r--test/MC/SystemZ/insn-sdb-02.s10
-rw-r--r--test/MC/SystemZ/insn-sdbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-seb-01.s17
-rw-r--r--test/MC/SystemZ/insn-seb-02.s10
-rw-r--r--test/MC/SystemZ/insn-sebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sg-01.s23
-rw-r--r--test/MC/SystemZ/insn-sg-02.s10
-rw-r--r--test/MC/SystemZ/insn-sgf-01.s23
-rw-r--r--test/MC/SystemZ/insn-sgf-02.s10
-rw-r--r--test/MC/SystemZ/insn-sgfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sl-01.s17
-rw-r--r--test/MC/SystemZ/insn-sl-02.s10
-rw-r--r--test/MC/SystemZ/insn-slb-01.s23
-rw-r--r--test/MC/SystemZ/insn-slb-02.s10
-rw-r--r--test/MC/SystemZ/insn-slbg-01.s23
-rw-r--r--test/MC/SystemZ/insn-slbg-02.s10
-rw-r--r--test/MC/SystemZ/insn-slbgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-slbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-slfi-01.s9
-rw-r--r--test/MC/SystemZ/insn-slfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-slg-01.s23
-rw-r--r--test/MC/SystemZ/insn-slg-02.s10
-rw-r--r--test/MC/SystemZ/insn-slgf-01.s23
-rw-r--r--test/MC/SystemZ/insn-slgf-02.s10
-rw-r--r--test/MC/SystemZ/insn-slgfi-01.s9
-rw-r--r--test/MC/SystemZ/insn-slgfi-02.s10
-rw-r--r--test/MC/SystemZ/insn-slgfr-01.s11
-rw-r--r--test/MC/SystemZ/insn-slgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sll-01.s19
-rw-r--r--test/MC/SystemZ/insn-sll-02.s16
-rw-r--r--test/MC/SystemZ/insn-sllg-01.s27
-rw-r--r--test/MC/SystemZ/insn-sllg-02.s16
-rw-r--r--test/MC/SystemZ/insn-slr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sly-01.s23
-rw-r--r--test/MC/SystemZ/insn-sly-02.s10
-rw-r--r--test/MC/SystemZ/insn-sqdb-01.s17
-rw-r--r--test/MC/SystemZ/insn-sqdb-02.s10
-rw-r--r--test/MC/SystemZ/insn-sqdbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sqeb-01.s17
-rw-r--r--test/MC/SystemZ/insn-sqeb-02.s10
-rw-r--r--test/MC/SystemZ/insn-sqebr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sqxbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sqxbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-sr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sra-01.s19
-rw-r--r--test/MC/SystemZ/insn-sra-02.s16
-rw-r--r--test/MC/SystemZ/insn-srag-01.s27
-rw-r--r--test/MC/SystemZ/insn-srag-02.s16
-rw-r--r--test/MC/SystemZ/insn-srl-01.s19
-rw-r--r--test/MC/SystemZ/insn-srl-02.s16
-rw-r--r--test/MC/SystemZ/insn-srlg-01.s27
-rw-r--r--test/MC/SystemZ/insn-srlg-02.s16
-rw-r--r--test/MC/SystemZ/insn-st-01.s17
-rw-r--r--test/MC/SystemZ/insn-st-02.s10
-rw-r--r--test/MC/SystemZ/insn-stc-01.s17
-rw-r--r--test/MC/SystemZ/insn-stc-02.s10
-rw-r--r--test/MC/SystemZ/insn-stcy-01.s23
-rw-r--r--test/MC/SystemZ/insn-stcy-02.s10
-rw-r--r--test/MC/SystemZ/insn-std-01.s17
-rw-r--r--test/MC/SystemZ/insn-std-02.s10
-rw-r--r--test/MC/SystemZ/insn-stdy-01.s23
-rw-r--r--test/MC/SystemZ/insn-stdy-02.s10
-rw-r--r--test/MC/SystemZ/insn-ste-01.s17
-rw-r--r--test/MC/SystemZ/insn-ste-02.s10
-rw-r--r--test/MC/SystemZ/insn-stey-01.s23
-rw-r--r--test/MC/SystemZ/insn-stey-02.s10
-rw-r--r--test/MC/SystemZ/insn-stg-01.s23
-rw-r--r--test/MC/SystemZ/insn-stg-02.s10
-rw-r--r--test/MC/SystemZ/insn-stgrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-sth-01.s17
-rw-r--r--test/MC/SystemZ/insn-sth-02.s10
-rw-r--r--test/MC/SystemZ/insn-sthrl-01.s31
-rw-r--r--test/MC/SystemZ/insn-sthy-01.s23
-rw-r--r--test/MC/SystemZ/insn-sthy-02.s10
-rw-r--r--test/MC/SystemZ/insn-stmg-01.s29
-rw-r--r--test/MC/SystemZ/insn-stmg-02.s13
-rw-r--r--test/MC/SystemZ/insn-strl-01.s31
-rw-r--r--test/MC/SystemZ/insn-strv-01.s23
-rw-r--r--test/MC/SystemZ/insn-strv-02.s10
-rw-r--r--test/MC/SystemZ/insn-strvg-01.s23
-rw-r--r--test/MC/SystemZ/insn-strvg-02.s10
-rw-r--r--test/MC/SystemZ/insn-sty-01.s23
-rw-r--r--test/MC/SystemZ/insn-sty-02.s10
-rw-r--r--test/MC/SystemZ/insn-sxbr-01.s11
-rw-r--r--test/MC/SystemZ/insn-sxbr-02.s17
-rw-r--r--test/MC/SystemZ/insn-sy-01.s23
-rw-r--r--test/MC/SystemZ/insn-sy-02.s10
-rw-r--r--test/MC/SystemZ/insn-x-01.s17
-rw-r--r--test/MC/SystemZ/insn-x-02.s10
-rw-r--r--test/MC/SystemZ/insn-xg-01.s23
-rw-r--r--test/MC/SystemZ/insn-xg-02.s10
-rw-r--r--test/MC/SystemZ/insn-xgr-01.s11
-rw-r--r--test/MC/SystemZ/insn-xi-01.s17
-rw-r--r--test/MC/SystemZ/insn-xi-02.s19
-rw-r--r--test/MC/SystemZ/insn-xihf-01.s9
-rw-r--r--test/MC/SystemZ/insn-xihf-02.s10
-rw-r--r--test/MC/SystemZ/insn-xilf-01.s9
-rw-r--r--test/MC/SystemZ/insn-xilf-02.s10
-rw-r--r--test/MC/SystemZ/insn-xiy-01.s23
-rw-r--r--test/MC/SystemZ/insn-xiy-02.s19
-rw-r--r--test/MC/SystemZ/insn-xr-01.s11
-rw-r--r--test/MC/SystemZ/insn-xy-01.s23
-rw-r--r--test/MC/SystemZ/insn-xy-02.s10
-rw-r--r--test/MC/SystemZ/regs-01.s19
-rw-r--r--test/MC/SystemZ/regs-02.s19
-rw-r--r--test/MC/SystemZ/regs-03.s19
-rw-r--r--test/MC/SystemZ/regs-04.s19
-rw-r--r--test/MC/SystemZ/regs-05.s19
-rw-r--r--test/MC/SystemZ/regs-06.s11
-rw-r--r--test/MC/SystemZ/regs-07.s28
-rw-r--r--test/MC/SystemZ/regs-08.s28
-rw-r--r--test/MC/SystemZ/regs-09.s31
-rw-r--r--test/MC/SystemZ/regs-10.s28
-rw-r--r--test/MC/SystemZ/regs-11.s28
-rw-r--r--test/MC/SystemZ/regs-12.s31
-rw-r--r--test/MC/SystemZ/regs-13.s69
-rw-r--r--test/MC/SystemZ/regs-14.s18
-rw-r--r--test/MC/SystemZ/regs-15.s19
-rw-r--r--test/MC/SystemZ/regs-bad.s197
-rw-r--r--test/MC/SystemZ/regs-good.s169
-rw-r--r--test/Object/X86/objdump-disassembly-inline-relocations.test35
-rw-r--r--test/Transforms/GlobalOpt/atexit.ll6
-rw-r--r--test/Transforms/LoopVectorize/hoist-loads.ll69
-rw-r--r--test/Transforms/LoopVectorize/induction.ll30
-rw-r--r--test/Transforms/ObjCARC/allocas.ll203
-rw-r--r--test/Transforms/SLPVectorizer/X86/diamond.ll32
-rw-r--r--tools/bugpoint/Miscompilation.cpp2
-rw-r--r--tools/lli/lli.cpp14
-rw-r--r--tools/llvm-mc/llvm-mc.cpp6
-rw-r--r--tools/llvm-objdump/MachODump.cpp5
-rw-r--r--tools/llvm-objdump/llvm-objdump.cpp15
-rw-r--r--unittests/ADT/APFloatTest.cpp23
-rw-r--r--unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp2
-rw-r--r--unittests/ExecutionEngine/MCJIT/MCJITTestBase.h4
-rw-r--r--unittests/Support/ManagedStatic.cpp3
-rw-r--r--utils/FileCheck/FileCheck.cpp312
-rw-r--r--utils/unittest/CMakeLists.txt4
791 files changed, 22366 insertions, 10720 deletions
diff --git a/docs/CodeGenerator.rst b/docs/CodeGenerator.rst
index 10ca307b78..d54df0f6f4 100644
--- a/docs/CodeGenerator.rst
+++ b/docs/CodeGenerator.rst
@@ -1838,7 +1838,7 @@ Here is the table:
:raw-html:`<td class="no"></td> <!-- Mips -->`
:raw-html:`<td class="na"></td> <!-- NVPTX -->`
:raw-html:`<td class="no"></td> <!-- PowerPC -->`
-:raw-html:`<td class="no"></td> <!-- SystemZ -->`
+:raw-html:`<td class="yes"></td> <!-- SystemZ -->`
:raw-html:`<td class="no"></td> <!-- Sparc -->`
:raw-html:`<td class="yes"></td> <!-- X86 -->`
:raw-html:`<td class="yes"></td> <!-- XCore -->`
diff --git a/docs/CommandGuide/FileCheck.rst b/docs/CommandGuide/FileCheck.rst
index fce63ba688..0d9834918a 100644
--- a/docs/CommandGuide/FileCheck.rst
+++ b/docs/CommandGuide/FileCheck.rst
@@ -194,6 +194,55 @@ can be used:
; CHECK: ret i8
}
+The "CHECK-DAG:" directive
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If it's necessary to match strings that don't occur in a strictly sequential
+order, "``CHECK-DAG:``" could be used to verify them between two matches (or
+before the first match, or after the last match). For example, clang emits
+vtable globals in reverse order. Using ``CHECK-DAG:``, we can keep the checks
+in the natural order:
+
+.. code-block:: c++
+
+ // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
+
+ struct Foo { virtual void method(); };
+ Foo f; // emit vtable
+ // CHECK-DAG: @_ZTV3Foo =
+
+ struct Bar { virtual void method(); };
+ Bar b;
+ // CHECK-DAG: @_ZTV3Bar =
+
+
+With captured variables, ``CHECK-DAG:`` is able to match valid topological
+orderings of a DAG with edges from the definition of a variable to its use.
+It's useful, e.g., when your test cases need to match different output
+sequences from the instruction scheduler. For example,
+
+.. code-block:: llvm
+
+ ; CHECK-DAG: add [[REG1:r[0-9]+]], r1, r2
+ ; CHECK-DAG: add [[REG2:r[0-9]+]], r3, r4
+ ; CHECK: mul r5, [[REG1]], [[REG2]]
+
+In this case, any order of that two ``add`` instructions will be allowed.
+
+``CHECK-NOT:`` directives could be mixed with ``CHECK-DAG:`` directives to
+exclude strings between the surrounding ``CHECK-DAG:`` directives. As a result,
+the surrounding ``CHECK-DAG:`` directives cannot be reordered, i.e. all
+occurrences matching ``CHECK-DAG:`` before ``CHECK-NOT:`` must not fall behind
+occurrences matching ``CHECK-DAG:`` after ``CHECK-NOT:``. For example,
+
+.. code-block:: llvm
+
+ ; CHECK-DAG: BEFORE
+ ; CHECK-NOT: NOT
+ ; CHECK-DAG: AFTER
+
+This case will reject input strings where ``BEFORE`` occurs after ``AFTER``.
+
FileCheck Pattern Matching Syntax
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index cb60df73d9..96461e51b9 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -191,6 +191,20 @@ LLVM-based code generators "on the fly" for the designed TTA processors and
loads them in to the compiler backend as runtime libraries to avoid
per-target recompilation of larger parts of the compiler chain.
+Just-in-time Adaptive Decoder Engine (Jade)
+-------------------------------------------
+
+`Jade <https://github.com/orcc/jade>`_ (Just-in-time Adaptive Decoder Engine)
+is a generic video decoder engine using LLVM for just-in-time compilation of
+video decoder configurations. Those configurations are designed by MPEG
+Reconfigurable Video Coding (RVC) committee. MPEG RVC standard is built on a
+stream-based dataflow representation of decoders. It is composed of a standard
+library of coding tools written in RVC-CAL language and a dataflow
+configuration --- block diagram --- of a decoder.
+
+Jade project is hosted as part of the Open RVC-CAL Compiler
+(`Orcc <http://orcc.sf.net>`_) and requires it to translate the RVC-CAL standard
+library of video coding tools into an LLVM assembly code.
Additional Information
======================
diff --git a/examples/ExceptionDemo/ExceptionDemo.cpp b/examples/ExceptionDemo/ExceptionDemo.cpp
index cf39ea7792..7d8e5729c2 100644
--- a/examples/ExceptionDemo/ExceptionDemo.cpp
+++ b/examples/ExceptionDemo/ExceptionDemo.cpp
@@ -1959,14 +1959,14 @@ int main(int argc, char *argv[]) {
// Make the module, which holds all the code.
llvm::Module *module = new llvm::Module("my cool jit", context);
- llvm::JITMemoryManager *MemMgr = new llvm::SectionMemoryManager();
+ llvm::RTDyldMemoryManager *MemMgr = new llvm::SectionMemoryManager();
// Build engine with JIT
llvm::EngineBuilder factory(module);
factory.setEngineKind(llvm::EngineKind::JIT);
factory.setAllocateGVsWithCode(false);
factory.setTargetOptions(Opts);
- factory.setJITMemoryManager(MemMgr);
+ factory.setMCJITMemoryManager(MemMgr);
factory.setUseMCJIT(true);
llvm::ExecutionEngine *executionEngine = factory.create();
diff --git a/include/llvm/ADT/IntervalMap.h b/include/llvm/ADT/IntervalMap.h
index c4083eed6a..44a61fff85 100644
--- a/include/llvm/ADT/IntervalMap.h
+++ b/include/llvm/ADT/IntervalMap.h
@@ -496,7 +496,7 @@ public:
NodeRef() {}
/// operator bool - Detect a null ref.
- operator bool() const { return pip.getOpaqueValue(); }
+ LLVM_EXPLICIT operator bool() const { return pip.getOpaqueValue(); }
/// NodeRef - Create a reference to the node p with n elements.
template <typename NodeT>
diff --git a/include/llvm/ADT/OwningPtr.h b/include/llvm/ADT/OwningPtr.h
index 86f9feee2c..6b9e42eaec 100644
--- a/include/llvm/ADT/OwningPtr.h
+++ b/include/llvm/ADT/OwningPtr.h
@@ -70,8 +70,9 @@ public:
T *operator->() const { return Ptr; }
T *get() const { return Ptr; }
- operator bool() const { return Ptr != 0; }
+ LLVM_EXPLICIT operator bool() const { return Ptr != 0; }
bool operator!() const { return Ptr == 0; }
+ bool isValid() const { return Ptr != 0; }
void swap(OwningPtr &RHS) {
T *Tmp = RHS.Ptr;
@@ -132,7 +133,7 @@ public:
}
T *get() const { return Ptr; }
- operator bool() const { return Ptr != 0; }
+ LLVM_EXPLICIT operator bool() const { return Ptr != 0; }
bool operator!() const { return Ptr == 0; }
void swap(OwningArrayPtr &RHS) {
diff --git a/include/llvm/ADT/PointerUnion.h b/include/llvm/ADT/PointerUnion.h
index f42515ac77..c1a6d74412 100644
--- a/include/llvm/ADT/PointerUnion.h
+++ b/include/llvm/ADT/PointerUnion.h
@@ -15,6 +15,7 @@
#ifndef LLVM_ADT_POINTERUNION_H
#define LLVM_ADT_POINTERUNION_H
+#include "llvm/Support/Compiler.h"
#include "llvm/ADT/PointerIntPair.h"
namespace llvm {
@@ -109,7 +110,7 @@ namespace llvm {
// we recursively strip off low bits if we have a nested PointerUnion.
return !PointerLikeTypeTraits<PT1>::getFromVoidPointer(Val.getPointer());
}
- operator bool() const { return !isNull(); }
+ LLVM_EXPLICIT operator bool() const { return !isNull(); }
/// is<T>() return true if the Union currently holds the type matching T.
template<typename T>
@@ -174,6 +175,11 @@ namespace llvm {
return V;
}
};
+
+ template<typename PT1, typename PT2>
+ bool operator==(PointerUnion<PT1, PT2> lhs, PointerUnion<PT1, PT2> rhs) {
+ return lhs.getOpaqueValue() == rhs.getOpaqueValue();
+ }
// Teach SmallPtrSet that PointerUnion is "basically a pointer", that has
// # low bits available = min(PT1bits,PT2bits)-1.
@@ -251,7 +257,7 @@ namespace llvm {
/// isNull - Return true if the pointer held in the union is null,
/// regardless of which type it is.
bool isNull() const { return Val.isNull(); }
- operator bool() const { return !isNull(); }
+ LLVM_EXPLICIT operator bool() const { return !isNull(); }
/// is<T>() return true if the Union currently holds the type matching T.
template<typename T>
@@ -359,7 +365,7 @@ namespace llvm {
/// isNull - Return true if the pointer held in the union is null,
/// regardless of which type it is.
bool isNull() const { return Val.isNull(); }
- operator bool() const { return !isNull(); }
+ LLVM_EXPLICIT operator bool() const { return !isNull(); }
/// is<T>() return true if the Union currently holds the type matching T.
template<typename T>
diff --git a/include/llvm/Analysis/InlineCost.h b/include/llvm/Analysis/InlineCost.h
index bc7924e10f..28baa9eb94 100644
--- a/include/llvm/Analysis/InlineCost.h
+++ b/include/llvm/Analysis/InlineCost.h
@@ -77,7 +77,7 @@ public:
}
/// \brief Test whether the inline cost is low enough for inlining.
- operator bool() const {
+ LLVM_EXPLICIT operator bool() const {
return Cost < Threshold;
}
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h
index c2fd6ce367..5973255047 100644
--- a/include/llvm/CodeGen/AsmPrinter.h
+++ b/include/llvm/CodeGen/AsmPrinter.h
@@ -38,8 +38,8 @@ namespace llvm {
class MachineConstantPoolValue;
class MachineJumpTableInfo;
class MachineModuleInfo;
- class MachineMove;
class MCAsmInfo;
+ class MCCFIInstruction;
class MCContext;
class MCSection;
class MCStreamer;
@@ -417,9 +417,8 @@ namespace llvm {
// Dwarf Lowering Routines
//===------------------------------------------------------------------===//
- /// EmitCFIFrameMove - Emit frame instruction to describe the layout of the
- /// frame.
- void EmitCFIFrameMove(const MachineMove &Move) const;
+ /// \brief Emit frame instruction to describe the layout of the frame.
+ void emitCFIInstruction(const MCCFIInstruction &Inst) const;
//===------------------------------------------------------------------===//
// Inline Asm Support
diff --git a/include/llvm/CodeGen/MachineModuleInfo.h b/include/llvm/CodeGen/MachineModuleInfo.h
index b719757822..95eb1e40dc 100644
--- a/include/llvm/CodeGen/MachineModuleInfo.h
+++ b/include/llvm/CodeGen/MachineModuleInfo.h
@@ -106,9 +106,9 @@ class MachineModuleInfo : public ImmutablePass {
/// want.
MachineModuleInfoImpl *ObjFileMMI;
- /// FrameMoves - List of moves done by a function's prolog. Used to construct
- /// frame maps by debug and exception handling consumers.
- std::vector<MachineMove> FrameMoves;
+ /// List of moves done by a function's prolog. Used to construct frame maps
+ /// by debug and exception handling consumers.
+ std::vector<MCCFIInstruction> FrameInstructions;
/// CompactUnwindEncoding - If the target supports it, this is the compact
/// unwind encoding. It replaces a function's CIE and FDE.
@@ -231,15 +231,15 @@ public:
UsesVAFloatArgument = b;
}
- /// getFrameMoves - Returns a reference to a list of moves done in the current
+ /// \brief Returns a reference to a list of cfi instructions in the current
/// function's prologue. Used to construct frame maps for debug and exception
/// handling comsumers.
- const std::vector<MachineMove> &getFrameMoves() { return FrameMoves; }
+ const std::vector<MCCFIInstruction> &getFrameInstructions() {
+ return FrameInstructions;
+ }
void addFrameMove(MCSymbol *Label, const MachineLocation &Dst,
- const MachineLocation &Src) {
- FrameMoves.push_back(MachineMove(Label, Dst, Src));
- }
+ const MachineLocation &Src);
/// getCompactUnwindEncoding - Returns the compact unwind encoding for a
/// function if the target supports the encoding. This encoding replaces a
diff --git a/include/llvm/CodeGen/SlotIndexes.h b/include/llvm/CodeGen/SlotIndexes.h
index 26d0433f3e..676cdaf7fb 100644
--- a/include/llvm/CodeGen/SlotIndexes.h
+++ b/include/llvm/CodeGen/SlotIndexes.h
@@ -162,7 +162,7 @@ namespace llvm {
}
/// Return true for a valid index.
- operator bool() const { return isValid(); }
+ LLVM_EXPLICIT operator bool() const { return isValid(); }
/// Print this index to the given raw_ostream.
void print(raw_ostream &os) const;
diff --git a/include/llvm/ExecutionEngine/ExecutionEngine.h b/include/llvm/ExecutionEngine/ExecutionEngine.h
index bbaebc6f90..83a672de2b 100644
--- a/include/llvm/ExecutionEngine/ExecutionEngine.h
+++ b/include/llvm/ExecutionEngine/ExecutionEngine.h
@@ -34,6 +34,7 @@ namespace llvm {
struct GenericValue;
class Constant;
+class DataLayout;
class ExecutionEngine;
class Function;
class GlobalVariable;
@@ -44,7 +45,7 @@ class MachineCodeInfo;
class Module;
class MutexGuard;
class ObjectCache;
-class DataLayout;
+class RTDyldMemoryManager;
class Triple;
class Type;
@@ -142,7 +143,7 @@ protected:
static ExecutionEngine *(*MCJITCtor)(
Module *M,
std::string *ErrorStr,
- JITMemoryManager *JMM,
+ RTDyldMemoryManager *MCJMM,
bool GVsWithCode,
TargetMachine *TM);
static ExecutionEngine *(*InterpCtor)(Module *M, std::string *ErrorStr);
@@ -496,6 +497,7 @@ private:
EngineKind::Kind WhichEngine;
std::string *ErrorStr;
CodeGenOpt::Level OptLevel;
+ RTDyldMemoryManager *MCJMM;
JITMemoryManager *JMM;
bool AllocateGVsWithCode;
TargetOptions Options;
@@ -511,6 +513,7 @@ private:
WhichEngine = EngineKind::Either;
ErrorStr = NULL;
OptLevel = CodeGenOpt::Default;
+ MCJMM = NULL;
JMM = NULL;
Options = TargetOptions();
AllocateGVsWithCode = false;
@@ -532,12 +535,29 @@ public:
WhichEngine = w;
return *this;
}
+
+ /// setMCJITMemoryManager - Sets the MCJIT memory manager to use. This allows
+ /// clients to customize their memory allocation policies for the MCJIT. This
+ /// is only appropriate for the MCJIT; setting this and configuring the builder
+ /// to create anything other than MCJIT will cause a runtime error. If create()
+ /// is called and is successful, the created engine takes ownership of the
+ /// memory manager. This option defaults to NULL. Using this option nullifies
+ /// the setJITMemoryManager() option.
+ EngineBuilder &setMCJITMemoryManager(RTDyldMemoryManager *mcjmm) {
+ MCJMM = mcjmm;
+ JMM = NULL;
+ return *this;
+ }
- /// setJITMemoryManager - Sets the memory manager to use. This allows
- /// clients to customize their memory allocation policies. If create() is
- /// called and is successful, the created engine takes ownership of the
- /// memory manager. This option defaults to NULL.
+ /// setJITMemoryManager - Sets the JIT memory manager to use. This allows
+ /// clients to customize their memory allocation policies. This is only
+ /// appropriate for either JIT or MCJIT; setting this and configuring the
+ /// builder to create an interpreter will cause a runtime error. If create()
+ /// is called and is successful, the created engine takes ownership of the
+ /// memory manager. This option defaults to NULL. This option overrides
+ /// setMCJITMemoryManager() as well.
EngineBuilder &setJITMemoryManager(JITMemoryManager *jmm) {
+ MCJMM = NULL;
JMM = jmm;
return *this;
}
diff --git a/include/llvm/ExecutionEngine/SectionMemoryManager.h b/include/llvm/ExecutionEngine/SectionMemoryManager.h
index 07e6832324..305a96619a 100644
--- a/include/llvm/ExecutionEngine/SectionMemoryManager.h
+++ b/include/llvm/ExecutionEngine/SectionMemoryManager.h
@@ -16,7 +16,7 @@
#define LLVM_EXECUTIONENGINE_SECTIONMEMORYMANAGER_H
#include "llvm/ADT/SmallVector.h"
-#include "llvm/ExecutionEngine/JITMemoryManager.h"
+#include "llvm/ExecutionEngine/RuntimeDyld.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Memory.h"
@@ -35,7 +35,7 @@ namespace llvm {
/// in the JITed object. Permissions can be applied either by calling
/// MCJIT::finalizeObject or by calling SectionMemoryManager::applyPermissions
/// directly. Clients of MCJIT should call MCJIT::finalizeObject.
-class SectionMemoryManager : public JITMemoryManager {
+class SectionMemoryManager : public RTDyldMemoryManager {
SectionMemoryManager(const SectionMemoryManager&) LLVM_DELETED_FUNCTION;
void operator=(const SectionMemoryManager&) LLVM_DELETED_FUNCTION;
@@ -108,54 +108,6 @@ private:
MemoryGroup CodeMem;
MemoryGroup RWDataMem;
MemoryGroup RODataMem;
-
-public:
- ///
- /// Functions below are not used by MCJIT or RuntimeDyld, but must be
- /// implemented because they are declared as pure virtuals in the base class.
- ///
-
- virtual void setMemoryWritable() {
- llvm_unreachable("Unexpected call!");
- }
- virtual void setMemoryExecutable() {
- llvm_unreachable("Unexpected call!");
- }
- virtual void setPoisonMemory(bool poison) {
- llvm_unreachable("Unexpected call!");
- }
- virtual void AllocateGOT() {
- llvm_unreachable("Unexpected call!");
- }
- virtual uint8_t *getGOTBase() const {
- llvm_unreachable("Unexpected call!");
- return 0;
- }
- virtual uint8_t *startFunctionBody(const Function *F,
- uintptr_t &ActualSize){
- llvm_unreachable("Unexpected call!");
- return 0;
- }
- virtual uint8_t *allocateStub(const GlobalValue *F, unsigned StubSize,
- unsigned Alignment) {
- llvm_unreachable("Unexpected call!");
- return 0;
- }
- virtual void endFunctionBody(const Function *F, uint8_t *FunctionStart,
- uint8_t *FunctionEnd) {
- llvm_unreachable("Unexpected call!");
- }
- virtual uint8_t *allocateSpace(intptr_t Size, unsigned Alignment) {
- llvm_unreachable("Unexpected call!");
- return 0;
- }
- virtual uint8_t *allocateGlobal(uintptr_t Size, unsigned Alignment) {
- llvm_unreachable("Unexpected call!");
- return 0;
- }
- virtual void deallocateFunctionBody(void *Body) {
- llvm_unreachable("Unexpected call!");
- }
};
}
diff --git a/include/llvm/MC/MCAsmInfo.h b/include/llvm/MC/MCAsmInfo.h
index d020de3004..72d325f79c 100644
--- a/include/llvm/MC/MCAsmInfo.h
+++ b/include/llvm/MC/MCAsmInfo.h
@@ -17,6 +17,7 @@
#define LLVM_MC_MCASMINFO_H
#include "llvm/MC/MCDirectives.h"
+#include "llvm/MC/MCDwarf.h"
#include "llvm/MC/MachineLocation.h"
#include <cassert>
#include <vector>
@@ -332,7 +333,7 @@ namespace llvm {
//===--- Prologue State ----------------------------------------------===//
- std::vector<MachineMove> InitialFrameState;
+ std::vector<MCCFIInstruction> InitialFrameState;
public:
explicit MCAsmInfo();
@@ -567,11 +568,11 @@ namespace llvm {
return DwarfRegNumForCFI;
}
- void addInitialFrameState(MCSymbol *label, const MachineLocation &D,
- const MachineLocation &S) {
- InitialFrameState.push_back(MachineMove(label, D, S));
+ void addInitialFrameState(const MCCFIInstruction &Inst) {
+ InitialFrameState.push_back(Inst);
}
- const std::vector<MachineMove> &getInitialFrameState() const {
+
+ const std::vector<MCCFIInstruction> &getInitialFrameState() const {
return InitialFrameState;
}
};
diff --git a/include/llvm/MC/MCELFObjectWriter.h b/include/llvm/MC/MCELFObjectWriter.h
index a59776d5cd..92ad1b1a46 100644
--- a/include/llvm/MC/MCELFObjectWriter.h
+++ b/include/llvm/MC/MCELFObjectWriter.h
@@ -42,11 +42,6 @@ struct ELFRelocationEntry {
const MCSymbol *Sym, uint64_t Addend, const MCFixup &Fixup)
: r_offset(RelocOffset), Index(Idx), Type(RelType), Symbol(Sym),
r_addend(Addend), Fixup(&Fixup) {}
-
- // Support lexicographic sorting.
- bool operator<(const ELFRelocationEntry &RE) const {
- return RE.r_offset < r_offset;
- }
};
class MCELFObjectTargetWriter {
@@ -87,8 +82,6 @@ public:
virtual const MCSymbol *undefinedExplicitRelSym(const MCValue &Target,
const MCFixup &Fixup,
bool IsPCRel) const;
- virtual void adjustFixupOffset(const MCFixup &Fixup,
- uint64_t &RelocOffset);
virtual void sortRelocs(const MCAssembler &Asm,
std::vector<ELFRelocationEntry> &Relocs);
diff --git a/include/llvm/MC/MachineLocation.h b/include/llvm/MC/MachineLocation.h
index 83c8b72ee4..c4a96606b1 100644
--- a/include/llvm/MC/MachineLocation.h
+++ b/include/llvm/MC/MachineLocation.h
@@ -10,11 +10,6 @@
// frame. Locations will be one of two forms; a register or an address formed
// from a base address plus an offset. Register indirection can be specified by
// explicitly passing an offset to the constructor.
-//
-// The MachineMove class is used to represent abstract move operations in the
-// prolog/epilog of a compiled function. A collection of these objects can be
-// used by a debug consumer to track the location of values when unwinding stack
-// frames.
//===----------------------------------------------------------------------===//
@@ -74,30 +69,6 @@ public:
void dump();
#endif
};
-
-/// MachineMove - This class represents the save or restore of a callee saved
-/// register that exception or debug info needs to know about.
-class MachineMove {
-private:
- /// Label - Symbol for post-instruction address when result of move takes
- /// effect.
- MCSymbol *Label;
-
- // Move to & from location.
- MachineLocation Destination, Source;
-public:
- MachineMove() : Label(0) {}
-
- MachineMove(MCSymbol *label, const MachineLocation &D,
- const MachineLocation &S)
- : Label(label), Destination(D), Source(S) {}
-
- // Accessors
- MCSymbol *getLabel() const { return Label; }
- const MachineLocation &getDestination() const { return Destination; }
- const MachineLocation &getSource() const { return Source; }
-};
-
} // End llvm namespace
#endif
diff --git a/include/llvm/Support/CallSite.h b/include/llvm/Support/CallSite.h
index 92107ac025..d80d9d8ad1 100644
--- a/include/llvm/Support/CallSite.h
+++ b/include/llvm/Support/CallSite.h
@@ -78,7 +78,7 @@ public:
InstrTy *getInstruction() const { return I.getPointer(); }
InstrTy *operator->() const { return I.getPointer(); }
- operator bool() const { return I.getPointer(); }
+ LLVM_EXPLICIT operator bool() const { return I.getPointer(); }
/// getCalledValue - Return the pointer to function that is being called.
///
diff --git a/include/llvm/Support/TargetRegistry.h b/include/llvm/Support/TargetRegistry.h
index 5bfb8ad41d..e1f6706618 100644
--- a/include/llvm/Support/TargetRegistry.h
+++ b/include/llvm/Support/TargetRegistry.h
@@ -70,7 +70,8 @@ namespace llvm {
typedef unsigned (*TripleMatchQualityFnTy)(const std::string &TT);
- typedef MCAsmInfo *(*MCAsmInfoCtorFnTy)(StringRef TT);
+ typedef MCAsmInfo *(*MCAsmInfoCtorFnTy)(const MCRegisterInfo &MRI,
+ StringRef TT);
typedef MCCodeGenInfo *(*MCCodeGenInfoCtorFnTy)(StringRef TT,
Reloc::Model RM,
CodeModel::Model CM,
@@ -265,10 +266,11 @@ namespace llvm {
/// feature set; it should always be provided. Generally this should be
/// either the target triple from the module, or the target triple of the
/// host if that does not exist.
- MCAsmInfo *createMCAsmInfo(StringRef Triple) const {
+ MCAsmInfo *createMCAsmInfo(const MCRegisterInfo &MRI,
+ StringRef Triple) const {
if (!MCAsmInfoCtorFn)
return 0;
- return MCAsmInfoCtorFn(Triple);
+ return MCAsmInfoCtorFn(MRI, Triple);
}
/// createMCCodeGenInfo - Create a MCCodeGenInfo implementation.
@@ -803,7 +805,7 @@ namespace llvm {
TargetRegistry::RegisterMCAsmInfo(T, &Allocator);
}
private:
- static MCAsmInfo *Allocator(StringRef TT) {
+ static MCAsmInfo *Allocator(const MCRegisterInfo &MRI, StringRef TT) {
return new MCAsmInfoImpl(TT);
}
diff --git a/include/llvm/Support/YAMLParser.h b/include/llvm/Support/YAMLParser.h
index 6e4f57f6ab..338bb4b6f2 100644
--- a/include/llvm/Support/YAMLParser.h
+++ b/include/llvm/Support/YAMLParser.h
@@ -516,7 +516,7 @@ public:
if (isAtEnd() || Other.isAtEnd())
return isAtEnd() && Other.isAtEnd();
- return *Doc == *Other.Doc;
+ return Doc == Other.Doc;
}
bool operator !=(const document_iterator &Other) {
return !(*this == Other);
@@ -543,7 +543,7 @@ public:
private:
bool isAtEnd() const {
- return Doc == 0 || *Doc == 0;
+ return !Doc || !*Doc;
}
OwningPtr<Document> *Doc;
diff --git a/include/llvm/Target/TargetMachine.h b/include/llvm/Target/TargetMachine.h
index 37a79fe852..c5e4b278d9 100644
--- a/include/llvm/Target/TargetMachine.h
+++ b/include/llvm/Target/TargetMachine.h
@@ -292,6 +292,7 @@ protected: // Can only create subclasses.
Reloc::Model RM, CodeModel::Model CM,
CodeGenOpt::Level OL);
+ void initAsmInfo();
public:
/// \brief Register analysis passes for this target with a pass manager.
///
diff --git a/lib/Analysis/MemoryDependenceAnalysis.cpp b/lib/Analysis/MemoryDependenceAnalysis.cpp
index c0009cb989..674ce3aea7 100644
--- a/lib/Analysis/MemoryDependenceAnalysis.cpp
+++ b/lib/Analysis/MemoryDependenceAnalysis.cpp
@@ -89,7 +89,7 @@ bool MemoryDependenceAnalysis::runOnFunction(Function &) {
AA = &getAnalysis<AliasAnalysis>();
TD = getAnalysisIfAvailable<DataLayout>();
DT = getAnalysisIfAvailable<DominatorTree>();
- if (PredCache == 0)
+ if (!PredCache)
PredCache.reset(new PredIteratorCache());
return false;
}
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index eb744d243b..7ad4f57f75 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -636,14 +636,13 @@ void AsmPrinter::emitPrologLabel(const MachineInstr &MI) {
OutStreamer.EmitCompactUnwindEncoding(MMI->getCompactUnwindEncoding());
MachineModuleInfo &MMI = MF->getMMI();
- const std::vector<MachineMove> &Moves = MMI.getFrameMoves();
+ std::vector<MCCFIInstruction> Instructions = MMI.getFrameInstructions();
bool FoundOne = false;
(void)FoundOne;
- for (std::vector<MachineMove>::const_iterator I = Moves.begin(),
- E = Moves.end();
- I != E; ++I) {
+ for (std::vector<MCCFIInstruction>::iterator I = Instructions.begin(),
+ E = Instructions.end(); I != E; ++I) {
if (I->getLabel() == Label) {
- EmitCFIFrameMove(*I);
+ emitCFIInstruction(*I);
FoundOne = true;
}
}
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp b/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
index 31e42d47cf..e6d67e8822 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
@@ -169,28 +169,21 @@ void AsmPrinter::EmitSectionOffset(const MCSymbol *Label,
// Dwarf Lowering Routines
//===----------------------------------------------------------------------===//
-/// EmitCFIFrameMove - Emit a frame instruction.
-void AsmPrinter::EmitCFIFrameMove(const MachineMove &Move) const {
- const TargetRegisterInfo *RI = TM.getRegisterInfo();
-
- const MachineLocation &Dst = Move.getDestination();
- const MachineLocation &Src = Move.getSource();
-
- // If advancing cfa.
- if (Dst.isReg() && Dst.getReg() == MachineLocation::VirtualFP) {
- if (Src.getReg() == MachineLocation::VirtualFP) {
- OutStreamer.EmitCFIDefCfaOffset(-Src.getOffset());
- } else {
- // Reg + Offset
- OutStreamer.EmitCFIDefCfa(RI->getDwarfRegNum(Src.getReg(), true),
- Src.getOffset());
- }
- } else if (Src.isReg() && Src.getReg() == MachineLocation::VirtualFP) {
- assert(Dst.isReg() && "Machine move not supported yet.");
- OutStreamer.EmitCFIDefCfaRegister(RI->getDwarfRegNum(Dst.getReg(), true));
- } else {
- assert(!Dst.isReg() && "Machine move not supported yet.");
- OutStreamer.EmitCFIOffset(RI->getDwarfRegNum(Src.getReg(), true),
- Dst.getOffset());
+void AsmPrinter::emitCFIInstruction(const MCCFIInstruction &Inst) const {
+ switch (Inst.getOperation()) {
+ default:
+ llvm_unreachable("Unexpected instruction");
+ case MCCFIInstruction::OpDefCfaOffset:
+ OutStreamer.EmitCFIDefCfaOffset(Inst.getOffset());
+ break;
+ case MCCFIInstruction::OpDefCfa:
+ OutStreamer.EmitCFIDefCfa(Inst.getRegister(), Inst.getOffset());
+ break;
+ case MCCFIInstruction::OpDefCfaRegister:
+ OutStreamer.EmitCFIDefCfaRegister(Inst.getRegister());
+ break;
+ case MCCFIInstruction::OpOffset:
+ OutStreamer.EmitCFIOffset(Inst.getRegister(), Inst.getOffset());
+ break;
}
}
diff --git a/lib/CodeGen/AsmPrinter/DIE.cpp b/lib/CodeGen/AsmPrinter/DIE.cpp
index 673867ada1..cc0cb56e8b 100644
--- a/lib/CodeGen/AsmPrinter/DIE.cpp
+++ b/lib/CodeGen/AsmPrinter/DIE.cpp
@@ -114,8 +114,8 @@ DIE::~DIE() {
/// Climb up the parent chain to get the compile unit DIE to which this DIE
/// belongs.
-DIE *DIE::getCompileUnit() const {
- DIE *p = getParent();
+DIE *DIE::getCompileUnit() {
+ DIE *p = this;
while (p) {
if (p->getTag() == dwarf::DW_TAG_compile_unit)
return p;
diff --git a/lib/CodeGen/AsmPrinter/DIE.h b/lib/CodeGen/AsmPrinter/DIE.h
index 3c06001686..550d873128 100644
--- a/lib/CodeGen/AsmPrinter/DIE.h
+++ b/lib/CodeGen/AsmPrinter/DIE.h
@@ -153,7 +153,7 @@ namespace llvm {
DIE *getParent() const { return Parent; }
/// Climb up the parent chain to get the compile unit DIE this DIE belongs
/// to.
- DIE *getCompileUnit() const;
+ DIE *getCompileUnit();
void setTag(unsigned Tag) { Abbrev.setTag(Tag); }
void setOffset(unsigned O) { Offset = O; }
void setSize(unsigned S) { Size = S; }
@@ -325,7 +325,9 @@ namespace llvm {
class DIEEntry : public DIEValue {
DIE *const Entry;
public:
- explicit DIEEntry(DIE *E) : DIEValue(isEntry), Entry(E) {}
+ explicit DIEEntry(DIE *E) : DIEValue(isEntry), Entry(E) {
+ assert(E && "Cannot construct a DIEEntry with a null DIE");
+ }
DIE *getEntry() const { return Entry; }
diff --git a/lib/CodeGen/AsmPrinter/DwarfException.h b/lib/CodeGen/AsmPrinter/DwarfException.h
index 74b1b13367..49a85d81b4 100644
--- a/lib/CodeGen/AsmPrinter/DwarfException.h
+++ b/lib/CodeGen/AsmPrinter/DwarfException.h
@@ -23,7 +23,6 @@ namespace llvm {
template <typename T> class SmallVectorImpl;
struct LandingPadInfo;
class MachineModuleInfo;
-class MachineMove;
class MachineInstr;
class MachineFunction;
class MCAsmInfo;
diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp
index 1a09837834..7ce5cc6f67 100644
--- a/lib/CodeGen/LLVMTargetMachine.cpp
+++ b/lib/CodeGen/LLVMTargetMachine.cpp
@@ -62,14 +62,8 @@ static bool getVerboseAsm() {
llvm_unreachable("Invalid verbose asm state");
}
-LLVMTargetMachine::LLVMTargetMachine(const Target &T, StringRef Triple,
- StringRef CPU, StringRef FS,
- TargetOptions Options,
- Reloc::Model RM, CodeModel::Model CM,
- CodeGenOpt::Level OL)
- : TargetMachine(T, Triple, CPU, FS, Options) {
- CodeGenInfo = T.createMCCodeGenInfo(Triple, RM, CM, OL);
- AsmInfo = T.createMCAsmInfo(Triple);
+void LLVMTargetMachine::initAsmInfo() {
+ AsmInfo = TheTarget.createMCAsmInfo(*getRegisterInfo(), TargetTriple);
// TargetSelect.h moved to a different directory between LLVM 2.9 and 3.0,
// and if the old one gets included then MCAsmInfo will be NULL and
// we'll crash later.
@@ -79,6 +73,15 @@ LLVMTargetMachine::LLVMTargetMachine(const Target &T, StringRef Triple,
"and that InitializeAllTargetMCs() is being invoked!");
}
+LLVMTargetMachine::LLVMTargetMachine(const Target &T, StringRef Triple,
+ StringRef CPU, StringRef FS,
+ TargetOptions Options,
+ Reloc::Model RM, CodeModel::Model CM,
+ CodeGenOpt::Level OL)
+ : TargetMachine(T, Triple, CPU, FS, Options) {
+ CodeGenInfo = T.createMCCodeGenInfo(Triple, RM, CM, OL);
+}
+
void LLVMTargetMachine::addAnalysisPasses(PassManagerBase &PM) {
PM.add(createBasicTargetTransformInfoPass(getTargetLowering()));
}
diff --git a/lib/CodeGen/MachineModuleInfo.cpp b/lib/CodeGen/MachineModuleInfo.cpp
index 8af9d053b1..74cf9f50df 100644
--- a/lib/CodeGen/MachineModuleInfo.cpp
+++ b/lib/CodeGen/MachineModuleInfo.cpp
@@ -268,6 +268,39 @@ MachineModuleInfo::MachineModuleInfo()
MachineModuleInfo::~MachineModuleInfo() {
}
+static MCCFIInstruction convertMoveToCFI(const MCRegisterInfo &MRI,
+ MCSymbol *Label,
+ const MachineLocation &Dst,
+ const MachineLocation &Src) {
+ // If advancing cfa.
+ if (Dst.isReg() && Dst.getReg() == MachineLocation::VirtualFP) {
+ if (Src.getReg() == MachineLocation::VirtualFP)
+ return MCCFIInstruction::createDefCfaOffset(Label, Src.getOffset());
+ // Reg + Offset
+ return MCCFIInstruction::createDefCfa(
+ Label, MRI.getDwarfRegNum(Src.getReg(), true), -Src.getOffset());
+ }
+
+ if (Src.isReg() && Src.getReg() == MachineLocation::VirtualFP) {
+ assert(Dst.isReg() && "Machine move not supported yet.");
+ return MCCFIInstruction::createDefCfaRegister(
+ Label, MRI.getDwarfRegNum(Dst.getReg(), true));
+ }
+
+ assert(!Dst.isReg() && "Machine move not supported yet.");
+ return MCCFIInstruction::createOffset(
+ Label, MRI.getDwarfRegNum(Src.getReg(), true), Dst.getOffset());
+}
+
+
+void MachineModuleInfo::addFrameMove(MCSymbol *Label,
+ const MachineLocation &Dst,
+ const MachineLocation &Src) {
+ MCCFIInstruction I =
+ convertMoveToCFI(Context.getRegisterInfo(), Label, Dst, Src);
+ FrameInstructions.push_back(I);
+}
+
bool MachineModuleInfo::doInitialization(Module &M) {
ObjFileMMI = 0;
@@ -303,7 +336,7 @@ bool MachineModuleInfo::doFinalization(Module &M) {
///
void MachineModuleInfo::EndFunction() {
// Clean up frame info.
- FrameMoves.clear();
+ FrameInstructions.clear();
// Clean up exception info.
LandingPads.clear();
diff --git a/lib/CodeGen/RegAllocGreedy.cpp b/lib/CodeGen/RegAllocGreedy.cpp
index 9eed1fc62a..49748289da 100644
--- a/lib/CodeGen/RegAllocGreedy.cpp
+++ b/lib/CodeGen/RegAllocGreedy.cpp
@@ -713,7 +713,7 @@ bool RAGreedy::addSplitConstraints(InterferenceCache::Cursor Intf,
Intf.moveToBlock(BC.Number);
BC.Entry = BI.LiveIn ? SpillPlacement::PrefReg : SpillPlacement::DontCare;
BC.Exit = BI.LiveOut ? SpillPlacement::PrefReg : SpillPlacement::DontCare;
- BC.ChangesValue = BI.FirstDef;
+ BC.ChangesValue = BI.FirstDef.isValid();
if (!Intf.hasInterference())
continue;
diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index c54dffbb13..a8621a89a8 100644
--- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -9254,19 +9254,33 @@ static SDValue partitionShuffleOfConcats(SDNode *N, SelectionDAG &DAG) {
for (unsigned I = 0; I != NumConcats; ++I) {
// Make sure we're dealing with a copy.
unsigned Begin = I * NumElemsPerConcat;
- if (SVN->getMaskElt(Begin) % NumElemsPerConcat != 0)
- return SDValue();
+ bool AllUndef = true, NoUndef = true;
+ for (unsigned J = Begin; J != Begin + NumElemsPerConcat; ++J) {
+ if (SVN->getMaskElt(J) >= 0)
+ AllUndef = false;
+ else
+ NoUndef = false;
+ }
- for (unsigned J = 1; J != NumElemsPerConcat; ++J) {
- if (SVN->getMaskElt(Begin + J - 1) + 1 != SVN->getMaskElt(Begin + J))
+ if (NoUndef) {
+ if (SVN->getMaskElt(Begin) % NumElemsPerConcat != 0)
return SDValue();
- }
- unsigned FirstElt = SVN->getMaskElt(Begin) / NumElemsPerConcat;
- if (FirstElt < N0.getNumOperands())
- Ops.push_back(N0.getOperand(FirstElt));
- else
- Ops.push_back(N1.getOperand(FirstElt - N0.getNumOperands()));
+ for (unsigned J = 1; J != NumElemsPerConcat; ++J)
+ if (SVN->getMaskElt(Begin + J - 1) + 1 != SVN->getMaskElt(Begin + J))
+ return SDValue();
+
+ unsigned FirstElt = SVN->getMaskElt(Begin) / NumElemsPerConcat;
+ if (FirstElt < N0.getNumOperands())
+ Ops.push_back(N0.getOperand(FirstElt));
+ else
+ Ops.push_back(N1.getOperand(FirstElt - N0.getNumOperands()));
+
+ } else if (AllUndef) {
+ Ops.push_back(DAG.getUNDEF(N0.getOperand(0).getValueType()));
+ } else { // Mixed with general masks and undefs, can't do optimization.
+ return SDValue();
+ }
}
return DAG.getNode(ISD::CONCAT_VECTORS, N->getDebugLoc(), VT, Ops.data(),
diff --git a/lib/CodeGen/SjLjEHPrepare.cpp b/lib/CodeGen/SjLjEHPrepare.cpp
index 3903743878..23984e9986 100644
--- a/lib/CodeGen/SjLjEHPrepare.cpp
+++ b/lib/CodeGen/SjLjEHPrepare.cpp
@@ -222,7 +222,9 @@ setupFunctionContext(Function &F, ArrayRef<LandingPadInst*> LPads) {
PersonalityFn = LPads[0]->getPersonalityFn();
Value *PersonalityFieldPtr = Builder.CreateConstGEP2_32(FuncCtx, 0, 3,
"pers_fn_gep");
- Builder.CreateStore(PersonalityFn, PersonalityFieldPtr, /*isVolatile=*/true);
+ Builder.CreateStore(Builder.CreateBitCast(PersonalityFn,
+ Builder.getInt8PtrTy()),
+ PersonalityFieldPtr, /*isVolatile=*/true);
// LSDA address
Value *LSDA = Builder.CreateCall(LSDAAddrFn, "lsda_addr");
diff --git a/lib/CodeGen/StackColoring.cpp b/lib/CodeGen/StackColoring.cpp
index a789a2596d..90b93aaa72 100644
--- a/lib/CodeGen/StackColoring.cpp
+++ b/lib/CodeGen/StackColoring.cpp
@@ -42,6 +42,7 @@
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/CodeGen/PseudoSourceValue.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/DebugInfo.h"
#include "llvm/IR/Function.h"
@@ -528,6 +529,10 @@ void StackColoring::remapInstructions(DenseMap<int, int> &SlotRemap) {
if (!V)
continue;
+ const PseudoSourceValue *PSV = dyn_cast<const PseudoSourceValue>(V);
+ if (PSV && PSV->isConstant(MFI))
+ continue;
+
// Climb up and find the original alloca.
V = GetUnderlyingObject(V);
// If we did not find one, or if the one that we found is not in our
diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp
index e43ba4f1dd..0191636307 100644
--- a/lib/ExecutionEngine/ExecutionEngine.cpp
+++ b/lib/ExecutionEngine/ExecutionEngine.cpp
@@ -14,6 +14,7 @@
#define DEBUG_TYPE "jit"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
+#include "llvm/ExecutionEngine/JITMemoryManager.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ExecutionEngine/GenericValue.h"
@@ -47,7 +48,7 @@ ExecutionEngine *(*ExecutionEngine::JITCtor)(
ExecutionEngine *(*ExecutionEngine::MCJITCtor)(
Module *M,
std::string *ErrorStr,
- JITMemoryManager *JMM,
+ RTDyldMemoryManager *MCJMM,
bool GVsWithCode,
TargetMachine *TM) = 0;
ExecutionEngine *(*ExecutionEngine::InterpCtor)(Module *M,
@@ -455,10 +456,12 @@ ExecutionEngine *EngineBuilder::create(TargetMachine *TM) {
if (sys::DynamicLibrary::LoadLibraryPermanently(0, ErrorStr))
return 0;
+ assert(!(JMM && MCJMM));
+
// If the user specified a memory manager but didn't specify which engine to
// create, we assume they only want the JIT, and we fail if they only want
// the interpreter.
- if (JMM) {
+ if (JMM || MCJMM) {
if (WhichEngine & EngineKind::JIT)
WhichEngine = EngineKind::JIT;
else {
@@ -467,6 +470,14 @@ ExecutionEngine *EngineBuilder::create(TargetMachine *TM) {
return 0;
}
}
+
+ if (MCJMM && ! UseMCJIT) {
+ if (ErrorStr)
+ *ErrorStr =
+ "Cannot create a legacy JIT with a runtime dyld memory "
+ "manager.";
+ return 0;
+ }
// Unless the interpreter was explicitly selected or the JIT is not linked,
// try making a JIT.
@@ -480,7 +491,7 @@ ExecutionEngine *EngineBuilder::create(TargetMachine *TM) {
if (UseMCJIT && ExecutionEngine::MCJITCtor) {
ExecutionEngine *EE =
- ExecutionEngine::MCJITCtor(M, ErrorStr, JMM,
+ ExecutionEngine::MCJITCtor(M, ErrorStr, MCJMM ? MCJMM : JMM,
AllocateGVsWithCode, TheTM.take());
if (EE) return EE;
} else if (ExecutionEngine::JITCtor) {
diff --git a/lib/ExecutionEngine/MCJIT/MCJIT.cpp b/lib/ExecutionEngine/MCJIT/MCJIT.cpp
index 38aa5474a3..ced567205a 100644
--- a/lib/ExecutionEngine/MCJIT/MCJIT.cpp
+++ b/lib/ExecutionEngine/MCJIT/MCJIT.cpp
@@ -39,7 +39,7 @@ extern "C" void LLVMLinkInMCJIT() {
ExecutionEngine *MCJIT::createJIT(Module *M,
std::string *ErrorStr,
- JITMemoryManager *JMM,
+ RTDyldMemoryManager *MemMgr,
bool GVsWithCode,
TargetMachine *TM) {
// Try to register the program as a source of symbols to resolve against.
@@ -47,14 +47,14 @@ ExecutionEngine *MCJIT::createJIT(Module *M,
// FIXME: Don't do this here.
sys::DynamicLibrary::LoadLibraryPermanently(0, NULL);
- return new MCJIT(M, TM, JMM ? JMM : new SectionMemoryManager(), GVsWithCode);
+ return new MCJIT(M, TM, MemMgr ? MemMgr : new SectionMemoryManager(),
+ GVsWithCode);
}
MCJIT::MCJIT(Module *m, TargetMachine *tm, RTDyldMemoryManager *MM,
bool AllocateGVsWithCode)
- : ExecutionEngine(m), TM(tm), Ctx(0),
- MemMgr(MM ? MM : new SectionMemoryManager()), Dyld(MemMgr),
- IsLoaded(false), M(m), ObjCache(0) {
+ : ExecutionEngine(m), TM(tm), Ctx(0), MemMgr(MM), Dyld(MM),
+ IsLoaded(false), M(m), ObjCache(0) {
setDataLayout(TM->getDataLayout());
}
diff --git a/lib/ExecutionEngine/MCJIT/MCJIT.h b/lib/ExecutionEngine/MCJIT/MCJIT.h
index 8c4bf6e1db..7f247e2dee 100644
--- a/lib/ExecutionEngine/MCJIT/MCJIT.h
+++ b/lib/ExecutionEngine/MCJIT/MCJIT.h
@@ -98,7 +98,7 @@ public:
static ExecutionEngine *createJIT(Module *M,
std::string *ErrorStr,
- JITMemoryManager *JMM,
+ RTDyldMemoryManager *MemMgr,
bool GVsWithCode,
TargetMachine *TM);
diff --git a/lib/IR/Value.cpp b/lib/IR/Value.cpp
index 89a3c0578c..81d7efa774 100644
--- a/lib/IR/Value.cpp
+++ b/lib/IR/Value.cpp
@@ -112,21 +112,20 @@ bool Value::hasNUsesOrMore(unsigned N) const {
/// isUsedInBasicBlock - Return true if this value is used in the specified
/// basic block.
bool Value::isUsedInBasicBlock(const BasicBlock *BB) const {
- // Start by scanning over the instructions looking for a use before we start
- // the expensive use iteration.
- unsigned MaxBlockSize = 3;
- for (BasicBlock::const_iterator I = BB->begin(), E = BB->end(); I != E; ++I) {
- if (std::find(I->op_begin(), I->op_end(), this) != I->op_end())
+ // This can be computed either by scanning the instructions in BB, or by
+ // scanning the use list of this Value. Both lists can be very long, but
+ // usually one is quite short.
+ //
+ // Scan both lists simultaneously until one is exhausted. This limits the
+ // search to the shorter list.
+ BasicBlock::const_iterator BI = BB->begin(), BE = BB->end();
+ const_use_iterator UI = use_begin(), UE = use_end();
+ for (; BI != BE && UI != UE; ++BI, ++UI) {
+ // Scan basic block: Check if this Value is used by the instruction at BI.
+ if (std::find(BI->op_begin(), BI->op_end(), this) != BI->op_end())
return true;
- if (--MaxBlockSize == 0) // If the block is larger fall back to use_iterator
- break;
- }
-
- if (MaxBlockSize != 0) // We scanned the entire block and found no use.
- return false;
-
- for (const_use_iterator I = use_begin(), E = use_end(); I != E; ++I) {
- const Instruction *User = dyn_cast<Instruction>(*I);
+ // Scan use list: Check if the use at UI is in BB.
+ const Instruction *User = dyn_cast<Instruction>(*UI);
if (User && User->getParent() == BB)
return true;
}
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index 3d995484e7..4f66156f6d 100644
--- a/lib/MC/ELFObjectWriter.cpp
+++ b/lib/MC/ELFObjectWriter.cpp
@@ -759,9 +759,6 @@ void ELFObjectWriter::RecordRelocation(const MCAssembler &Asm,
uint64_t RelocOffset = Layout.getFragmentOffset(Fragment) +
Fixup.getOffset();
- // FIXME: no tests cover this. Is adjustFixupOffset dead code?
- TargetObjectWriter->adjustFixupOffset(Fixup, RelocOffset);
-
if (!hasRelocationAddend())
Addend = 0;
diff --git a/lib/MC/MCDisassembler/Disassembler.cpp b/lib/MC/MCDisassembler/Disassembler.cpp
index 4766b37476..d3c019246c 100644
--- a/lib/MC/MCDisassembler/Disassembler.cpp
+++ b/lib/MC/MCDisassembler/Disassembler.cpp
@@ -42,8 +42,12 @@ LLVMDisasmContextRef LLVMCreateDisasmCPU(const char *Triple, const char *CPU,
const Target *TheTarget = TargetRegistry::lookupTarget(Triple, Error);
assert(TheTarget && "Unable to create target!");
+ const MCRegisterInfo *MRI = TheTarget->createMCRegInfo(Triple);
+ if (!MRI)
+ return 0;
+
// Get the assembler info needed to setup the MCContext.
- const MCAsmInfo *MAI = TheTarget->createMCAsmInfo(Triple);
+ const MCAsmInfo *MAI = TheTarget->createMCAsmInfo(*MRI, Triple);
if (!MAI)
return 0;
@@ -51,10 +55,6 @@ LLVMDisasmContextRef LLVMCreateDisasmCPU(const char *Triple, const char *CPU,
if (!MII)
return 0;
- const MCRegisterInfo *MRI = TheTarget->createMCRegInfo(Triple);
- if (!MRI)
- return 0;
-
// Package up features to be passed to target/subtarget
std::string FeaturesStr;
diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp
index 7640a63ee3..efe0c46db8 100644
--- a/lib/MC/MCDwarf.cpp
+++ b/lib/MC/MCDwarf.cpp
@@ -873,17 +873,6 @@ static void EmitPersonality(MCStreamer &streamer, const MCSymbol &symbol,
streamer.EmitValue(v, size);
}
-static const MachineLocation TranslateMachineLocation(
- const MCRegisterInfo &MRI,
- const MachineLocation &Loc) {
- unsigned Reg = Loc.getReg() == MachineLocation::VirtualFP ?
- MachineLocation::VirtualFP :
- unsigned(MRI.getDwarfRegNum(Loc.getReg(), true));
- const MachineLocation &NewLoc = Loc.isReg() ?
- MachineLocation(Reg) : MachineLocation(Reg, Loc.getOffset());
- return NewLoc;
-}
-
namespace {
class FrameEmitterImpl {
int CFAOffset;
@@ -1316,32 +1305,8 @@ const MCSymbol &FrameEmitterImpl::EmitCIE(MCStreamer &streamer,
// Initial Instructions
const MCAsmInfo &MAI = context.getAsmInfo();
- const std::vector<MachineMove> &Moves = MAI.getInitialFrameState();
- std::vector<MCCFIInstruction> Instructions;
-
- for (int i = 0, n = Moves.size(); i != n; ++i) {
- MCSymbol *Label = Moves[i].getLabel();
- const MachineLocation &Dst =
- TranslateMachineLocation(MRI, Moves[i].getDestination());
- const MachineLocation &Src =
- TranslateMachineLocation(MRI, Moves[i].getSource());
-
- if (Dst.isReg()) {
- assert(Dst.getReg() == MachineLocation::VirtualFP);
- assert(!Src.isReg());
- MCCFIInstruction Inst =
- MCCFIInstruction::createDefCfa(Label, Src.getReg(), -Src.getOffset());
- Instructions.push_back(Inst);
- } else {
- assert(Src.isReg());
- unsigned Reg = Src.getReg();
- int Offset = Dst.getOffset();
- MCCFIInstruction Inst =
- MCCFIInstruction::createOffset(Label, Reg, Offset);
- Instructions.push_back(Inst);
- }
- }
-
+ const std::vector<MCCFIInstruction> &Instructions =
+ MAI.getInitialFrameState();
EmitCFIInstructions(streamer, Instructions, NULL);
// Padding
diff --git a/lib/MC/MCELFObjectTargetWriter.cpp b/lib/MC/MCELFObjectTargetWriter.cpp
index 4cac84d666..ec7397d748 100644
--- a/lib/MC/MCELFObjectTargetWriter.cpp
+++ b/lib/MC/MCELFObjectTargetWriter.cpp
@@ -39,13 +39,23 @@ const MCSymbol *MCELFObjectTargetWriter::undefinedExplicitRelSym(const MCValue &
return &Symbol.AliasedSymbol();
}
-void MCELFObjectTargetWriter::adjustFixupOffset(const MCFixup &Fixup,
- uint64_t &RelocOffset) {
+// ELF doesn't require relocations to be in any order. We sort by the r_offset,
+// just to match gnu as for easier comparison. The use type and index is an
+// arbitrary way of making the sort deterministic.
+static int cmpRel(const void *AP, const void *BP) {
+ const ELFRelocationEntry &A = *(const ELFRelocationEntry *)AP;
+ const ELFRelocationEntry &B = *(const ELFRelocationEntry *)BP;
+ if (A.r_offset != B.r_offset)
+ return B.r_offset - A.r_offset;
+ if (B.Type != A.Type)
+ return A.Type - B.Type;
+ if (B.Index != A.Index)
+ return B.Index - A.Index;
+ llvm_unreachable("ELFRelocs might be unstable!");
}
void
MCELFObjectTargetWriter::sortRelocs(const MCAssembler &Asm,
std::vector<ELFRelocationEntry> &Relocs) {
- // Sort by the r_offset, just like gnu as does.
- array_pod_sort(Relocs.begin(), Relocs.end());
+ array_pod_sort(Relocs.begin(), Relocs.end(), cmpRel);
}
diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp
index edefdb4c36..f7c71e97e3 100644
--- a/lib/MC/MCParser/AsmParser.cpp
+++ b/lib/MC/MCParser/AsmParser.cpp
@@ -545,7 +545,7 @@ bool AsmParser::EnterIncludeFile(const std::string &Filename) {
return false;
}
-/// Process the specified .incbin file by seaching for it in the include paths
+/// Process the specified .incbin file by searching for it in the include paths
/// then just emitting the byte contents of the file to the streamer. This
/// returns true on failure.
bool AsmParser::ProcessIncbinFile(const std::string &Filename) {
diff --git a/lib/Object/MachOObjectFile.cpp b/lib/Object/MachOObjectFile.cpp
index af14c72145..654af081f9 100644
--- a/lib/Object/MachOObjectFile.cpp
+++ b/lib/Object/MachOObjectFile.cpp
@@ -339,7 +339,7 @@ static void printRelocationTargetName(const MachOObjectFile *O,
StringRef S;
bool isExtern = O->getPlainRelocationExternal(RE);
- uint64_t Val = O->getAnyRelocationAddress(RE);
+ uint64_t Val = O->getPlainRelocationSymbolNum(RE);
if (isExtern) {
symbol_iterator SI = O->begin_symbols();
@@ -347,7 +347,8 @@ static void printRelocationTargetName(const MachOObjectFile *O,
SI->getName(S);
} else {
section_iterator SI = O->begin_sections();
- advanceTo(SI, Val);
+ // Adjust for the fact that sections are 1-indexed.
+ advanceTo(SI, Val - 1);
SI->getName(S);
}
diff --git a/lib/Support/APFloat.cpp b/lib/Support/APFloat.cpp
index 6182e34150..57e60dac45 100644
--- a/lib/Support/APFloat.cpp
+++ b/lib/Support/APFloat.cpp
@@ -872,7 +872,21 @@ APFloat::multiplySignificand(const APFloat &rhs, const APFloat *addend)
omsb = APInt::tcMSB(fullSignificand, newPartsCount) + 1;
exponent += rhs.exponent;
+ // Assume the operands involved in the multiplication are single-precision
+ // FP, and the two multiplicants are:
+ // *this = a23 . a22 ... a0 * 2^e1
+ // rhs = b23 . b22 ... b0 * 2^e2
+ // the result of multiplication is:
+ // *this = c47 c46 . c45 ... c0 * 2^(e1+e2)
+ // Note that there are two significant bits at the left-hand side of the
+ // radix point. Move the radix point toward left by one bit, and adjust
+ // exponent accordingly.
+ exponent += 1;
+
if (addend) {
+ // The intermediate result of the multiplication has "2 * precision"
+ // signicant bit; adjust the addend to be consistent with mul result.
+ //
Significand savedSignificand = significand;
const fltSemantics *savedSemantics = semantics;
fltSemantics extendedSemantics;
@@ -880,8 +894,9 @@ APFloat::multiplySignificand(const APFloat &rhs, const APFloat *addend)
unsigned int extendedPrecision;
/* Normalize our MSB. */
- extendedPrecision = precision + precision - 1;
+ extendedPrecision = 2 * precision;
if (omsb != extendedPrecision) {
+ assert(extendedPrecision > omsb);
APInt::tcShiftLeft(fullSignificand, newPartsCount,
extendedPrecision - omsb);
exponent -= extendedPrecision - omsb;
@@ -912,8 +927,18 @@ APFloat::multiplySignificand(const APFloat &rhs, const APFloat *addend)
omsb = APInt::tcMSB(fullSignificand, newPartsCount) + 1;
}
- exponent -= (precision - 1);
+ // Convert the result having "2 * precision" significant-bits back to the one
+ // having "precision" significant-bits. First, move the radix point from
+ // poision "2*precision - 1" to "precision - 1". The exponent need to be
+ // adjusted by "2*precision - 1" - "precision - 1" = "precision".
+ exponent -= precision;
+ // In case MSB resides at the left-hand side of radix point, shift the
+ // mantissa right by some amount to make sure the MSB reside right before
+ // the radix point (i.e. "MSB . rest-significant-bits").
+ //
+ // Note that the result is not normalized when "omsb < precision". So, the
+ // caller needs to call APFloat::normalize() if normalized value is expected.
if (omsb > precision) {
unsigned int bits, significantParts;
lostFraction lf;
diff --git a/lib/Support/SourceMgr.cpp b/lib/Support/SourceMgr.cpp
index fac3cad5cc..4f650b42cc 100644
--- a/lib/Support/SourceMgr.cpp
+++ b/lib/Support/SourceMgr.cpp
@@ -65,7 +65,7 @@ unsigned SourceMgr::AddIncludeFile(const std::string &Filename,
MemoryBuffer::getFile(IncludedFile.c_str(), NewBuf);
}
- if (NewBuf == 0) return ~0U;
+ if (!NewBuf) return ~0U;
return AddNewSourceBuffer(NewBuf.take(), IncludeLoc);
}
diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp
index c9729b5412..9e497a0f63 100644
--- a/lib/Support/Triple.cpp
+++ b/lib/Support/Triple.cpp
@@ -251,7 +251,7 @@ static Triple::ArchType parseArch(StringRef ArchName) {
.Case("hexagon", Triple::hexagon)
.Case("s390x", Triple::systemz)
.Case("sparc", Triple::sparc)
- .Case("sparcv9", Triple::sparcv9)
+ .Cases("sparcv9", "sparc64", Triple::sparcv9)
.Case("tce", Triple::tce)
.Case("xcore", Triple::xcore)
.Case("nvptx", Triple::nvptx)
diff --git a/lib/Support/Unix/Memory.inc b/lib/Support/Unix/Memory.inc
index 72a8af621d..cdd475c17f 100644
--- a/lib/Support/Unix/Memory.inc
+++ b/lib/Support/Unix/Memory.inc
@@ -33,6 +33,7 @@
#endif
extern "C" void sys_icache_invalidate(const void *Addr, size_t len);
+extern "C" void __clear_cache(void *, void*);
namespace {
diff --git a/lib/Support/Windows/Windows.h b/lib/Support/Windows/Windows.h
index 5c1da0d617..4cdac788a0 100644
--- a/lib/Support/Windows/Windows.h
+++ b/lib/Support/Windows/Windows.h
@@ -25,6 +25,7 @@
#define WIN32_LEAN_AND_MEAN
#include "llvm/Config/config.h" // Get build system configuration settings
+#include "llvm/Support/Compiler.h"
#include <windows.h>
#include <wincrypt.h>
#include <shlobj.h>
@@ -75,7 +76,7 @@ public:
}
// True if Handle is valid.
- operator bool() const {
+ LLVM_EXPLICIT operator bool() const {
return HandleTraits::IsValid(Handle) ? true : false;
}
diff --git a/lib/Target/AArch64/AArch64TargetMachine.cpp b/lib/Target/AArch64/AArch64TargetMachine.cpp
index df599d599d..f1695e2ce2 100644
--- a/lib/Target/AArch64/AArch64TargetMachine.cpp
+++ b/lib/Target/AArch64/AArch64TargetMachine.cpp
@@ -38,6 +38,7 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, StringRef TT,
TLInfo(*this),
TSInfo(*this),
FrameLowering(Subtarget) {
+ initAsmInfo();
}
namespace {
diff --git a/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp b/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
index 3435217bb2..eeec608820 100644
--- a/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
+++ b/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
@@ -57,13 +57,14 @@ static MCRegisterInfo *createAArch64MCRegisterInfo(StringRef Triple) {
return X;
}
-static MCAsmInfo *createAArch64MCAsmInfo(StringRef TT) {
+static MCAsmInfo *createAArch64MCAsmInfo(const MCRegisterInfo &MRI,
+ StringRef TT) {
Triple TheTriple(TT);
MCAsmInfo *MAI = new AArch64ELFMCAsmInfo();
- MachineLocation Dst(MachineLocation::VirtualFP);
- MachineLocation Src(AArch64::XSP, 0);
- MAI->addInitialFrameState(0, Dst, Src);
+ unsigned Reg = MRI.getDwarfRegNum(AArch64::XSP, true);
+ MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(0, Reg, 0);
+ MAI->addInitialFrameState(Inst);
return MAI;
}
diff --git a/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/lib/Target/ARM/ARMBaseRegisterInfo.cpp
index b0d34a76b0..4de5b4f41c 100644
--- a/lib/Target/ARM/ARMBaseRegisterInfo.cpp
+++ b/lib/Target/ARM/ARMBaseRegisterInfo.cpp
@@ -94,6 +94,7 @@ getReservedRegs(const MachineFunction &MF) const {
Reserved.set(ARM::SP);
Reserved.set(ARM::PC);
Reserved.set(ARM::FPSCR);
+ Reserved.set(ARM::APSR_NZCV);
if (TFI->hasFP(MF))
Reserved.set(FramePtr);
if (hasBasePointer(MF))
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp
index fd77732364..432e3eefb1 100644
--- a/lib/Target/ARM/ARMISelLowering.cpp
+++ b/lib/Target/ARM/ARMISelLowering.cpp
@@ -2147,7 +2147,7 @@ bool ARMTargetLowering::isUsedByReturnOnly(SDNode *N, SDValue &Chain) const {
Copy = *Copy->use_begin();
if (Copy->getOpcode() != ISD::CopyToReg || !Copy->hasNUsesOfValue(1, 0))
return false;
- Chain = Copy->getOperand(0);
+ TCChain = Copy->getOperand(0);
} else {
return false;
}
@@ -5257,6 +5257,23 @@ static bool isZeroExtended(SDNode *N, SelectionDAG &DAG) {
return false;
}
+static EVT getExtensionTo64Bits(const EVT &OrigVT) {
+ if (OrigVT.getSizeInBits() >= 64)
+ return OrigVT;
+
+ assert(OrigVT.isSimple() && "Expecting a simple value type");
+
+ MVT::SimpleValueType OrigSimpleTy = OrigVT.getSimpleVT().SimpleTy;
+ switch (OrigSimpleTy) {
+ default: llvm_unreachable("Unexpected Vector Type");
+ case MVT::v2i8:
+ case MVT::v2i16:
+ return MVT::v2i32;
+ case MVT::v4i8:
+ return MVT::v4i16;
+ }
+}
+
/// AddRequiredExtensionForVMULL - Add a sign/zero extension to extend the total
/// value size to 64 bits. We need a 64-bit D register as an operand to VMULL.
/// We insert the required extension here to get the vector to fill a D register.
@@ -5272,18 +5289,8 @@ static SDValue AddRequiredExtensionForVMULL(SDValue N, SelectionDAG &DAG,
return N;
// Must extend size to at least 64 bits to be used as an operand for VMULL.
- MVT::SimpleValueType OrigSimpleTy = OrigTy.getSimpleVT().SimpleTy;
- EVT NewVT;
- switch (OrigSimpleTy) {
- default: llvm_unreachable("Unexpected Orig Vector Type");
- case MVT::v2i8:
- case MVT::v2i16:
- NewVT = MVT::v2i32;
- break;
- case MVT::v4i8:
- NewVT = MVT::v4i16;
- break;
- }
+ EVT NewVT = getExtensionTo64Bits(OrigTy);
+
return DAG.getNode(ExtOpcode, N->getDebugLoc(), NewVT, N);
}
@@ -5293,22 +5300,22 @@ static SDValue AddRequiredExtensionForVMULL(SDValue N, SelectionDAG &DAG,
/// reach a total size of 64 bits. We have to add the extension separately
/// because ARM does not have a sign/zero extending load for vectors.
static SDValue SkipLoadExtensionForVMULL(LoadSDNode *LD, SelectionDAG& DAG) {
- SDValue NonExtendingLoad =
- DAG.getLoad(LD->getMemoryVT(), LD->getDebugLoc(), LD->getChain(),
+ EVT ExtendedTy = getExtensionTo64Bits(LD->getMemoryVT());
+
+ // The load already has the right type.
+ if (ExtendedTy == LD->getMemoryVT())
+ return DAG.getLoad(LD->getMemoryVT(), LD->getDebugLoc(), LD->getChain(),
LD->getBasePtr(), LD->getPointerInfo(), LD->isVolatile(),
LD->isNonTemporal(), LD->isInvariant(),
LD->getAlignment());
- unsigned ExtOp = 0;
- switch (LD->getExtensionType()) {
- default: llvm_unreachable("Unexpected LoadExtType");
- case ISD::EXTLOAD:
- case ISD::SEXTLOAD: ExtOp = ISD::SIGN_EXTEND; break;
- case ISD::ZEXTLOAD: ExtOp = ISD::ZERO_EXTEND; break;
- }
- MVT::SimpleValueType MemType = LD->getMemoryVT().getSimpleVT().SimpleTy;
- MVT::SimpleValueType ExtType = LD->getValueType(0).getSimpleVT().SimpleTy;
- return AddRequiredExtensionForVMULL(NonExtendingLoad, DAG,
- MemType, ExtType, ExtOp);
+
+ // We need to create a zextload/sextload. We cannot just create a load
+ // followed by a zext/zext node because LowerMUL is also run during normal
+ // operation legalization where we can't create illegal types.
+ return DAG.getExtLoad(LD->getExtensionType(), LD->getDebugLoc(), ExtendedTy,
+ LD->getChain(), LD->getBasePtr(), LD->getPointerInfo(),
+ LD->getMemoryVT(), LD->isVolatile(),
+ LD->isNonTemporal(), LD->getAlignment());
}
/// SkipExtensionForVMULL - For a node that is a SIGN_EXTEND, ZERO_EXTEND,
diff --git a/lib/Target/ARM/ARMInstrInfo.td b/lib/Target/ARM/ARMInstrInfo.td
index 1bd174e341..89f92a589d 100644
--- a/lib/Target/ARM/ARMInstrInfo.td
+++ b/lib/Target/ARM/ARMInstrInfo.td
@@ -4636,11 +4636,11 @@ def : ARMInstAlias<"mcr${p} $cop, $opc1, $Rt, $CRn, $CRm",
(MCR p_imm:$cop, imm0_7:$opc1, GPR:$Rt, c_imm:$CRn,
c_imm:$CRm, 0, pred:$p)>;
def MRC : MovRCopro<"mrc", 1 /* from coprocessor to ARM core register */,
- (outs GPR:$Rt),
+ (outs GPRwithAPSR:$Rt),
(ins p_imm:$cop, imm0_7:$opc1, c_imm:$CRn, c_imm:$CRm,
imm0_7:$opc2), []>;
def : ARMInstAlias<"mrc${p} $cop, $opc1, $Rt, $CRn, $CRm",
- (MRC GPR:$Rt, p_imm:$cop, imm0_7:$opc1, c_imm:$CRn,
+ (MRC GPRwithAPSR:$Rt, p_imm:$cop, imm0_7:$opc1, c_imm:$CRn,
c_imm:$CRm, 0, pred:$p)>;
def : ARMPat<(int_arm_mrc imm:$cop, imm:$opc1, imm:$CRn, imm:$CRm, imm:$opc2),
@@ -4650,7 +4650,7 @@ class MovRCopro2<string opc, bit direction, dag oops, dag iops,
list<dag> pattern>
: ABXI<0b1110, oops, iops, NoItinerary,
!strconcat(opc, "\t$cop, $opc1, $Rt, $CRn, $CRm, $opc2"), pattern> {
- let Inst{31-28} = 0b1111;
+ let Inst{31-24} = 0b11111110;
let Inst{20} = direction;
let Inst{4} = 1;
@@ -4679,11 +4679,11 @@ def : ARMInstAlias<"mcr2$ $cop, $opc1, $Rt, $CRn, $CRm",
(MCR2 p_imm:$cop, imm0_7:$opc1, GPR:$Rt, c_imm:$CRn,
c_imm:$CRm, 0)>;
def MRC2 : MovRCopro2<"mrc2", 1 /* from coprocessor to ARM core register */,
- (outs GPR:$Rt),
+ (outs GPRwithAPSR:$Rt),
(ins p_imm:$cop, imm0_7:$opc1, c_imm:$CRn, c_imm:$CRm,
imm0_7:$opc2), []>;
def : ARMInstAlias<"mrc2$ $cop, $opc1, $Rt, $CRn, $CRm",
- (MRC2 GPR:$Rt, p_imm:$cop, imm0_7:$opc1, c_imm:$CRn,
+ (MRC2 GPRwithAPSR:$Rt, p_imm:$cop, imm0_7:$opc1, c_imm:$CRn,
c_imm:$CRm, 0)>;
def : ARMV5TPat<(int_arm_mrc2 imm:$cop, imm:$opc1, imm:$CRn,
diff --git a/lib/Target/ARM/ARMRegisterInfo.td b/lib/Target/ARM/ARMRegisterInfo.td
index b0f576bc2b..85743d8d5a 100644
--- a/lib/Target/ARM/ARMRegisterInfo.td
+++ b/lib/Target/ARM/ARMRegisterInfo.td
@@ -157,12 +157,15 @@ def Q15 : ARMReg<15, "q15", [D30, D31]>;
// Current Program Status Register.
// We model fpscr with two registers: FPSCR models the control bits and will be
-// reserved. FPSCR_NZCV models the flag bits and will be unreserved.
-def CPSR : ARMReg<0, "cpsr">;
-def APSR : ARMReg<1, "apsr">;
-def SPSR : ARMReg<2, "spsr">;
-def FPSCR : ARMReg<3, "fpscr">;
-def FPSCR_NZCV : ARMReg<3, "fpscr_nzcv"> {
+// reserved. FPSCR_NZCV models the flag bits and will be unreserved. APSR_NZCV
+// models the APSR when it's accessed by some special instructions. In such cases
+// it has the same encoding as PC.
+def CPSR : ARMReg<0, "cpsr">;
+def APSR : ARMReg<1, "apsr">;
+def APSR_NZCV : ARMReg<15, "apsr_nzcv">;
+def SPSR : ARMReg<2, "spsr">;
+def FPSCR : ARMReg<3, "fpscr">;
+def FPSCR_NZCV : ARMReg<3, "fpscr_nzcv"> {
let Aliases = [FPSCR];
}
def ITSTATE : ARMReg<4, "itstate">;
@@ -207,6 +210,16 @@ def GPRnopc : RegisterClass<"ARM", [i32], 32, (sub GPR, PC)> {
}];
}
+// GPRs without the PC but with APSR. Some instructions allow accessing the
+// APSR, while actually encoding PC in the register field. This is usefull
+// for assembly and disassembly only.
+def GPRwithAPSR : RegisterClass<"ARM", [i32], 32, (add GPR, APSR_NZCV)> {
+ let AltOrders = [(add LR, GPRnopc), (trunc GPRnopc, 8)];
+ let AltOrderSelect = [{
+ return 1 + MF.getTarget().getSubtarget<ARMSubtarget>().isThumb1Only();
+ }];
+}
+
// GPRsp - Only the SP is legal. Used by Thumb1 instructions that want the
// implied SP argument list.
// FIXME: It would be better to not use this at all and refactor the
diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp
index 8653c462f0..9ff0d61481 100644
--- a/lib/Target/ARM/ARMSubtarget.cpp
+++ b/lib/Target/ARM/ARMSubtarget.cpp
@@ -162,10 +162,23 @@ void ARMSubtarget::resetSubtargetFeatures(StringRef CPU, StringRef FS) {
if (!isThumb() || hasThumb2())
PostRAScheduler = true;
- // v6+ may or may not support unaligned mem access depending on the system
- // configuration.
- if (!StrictAlign && hasV6Ops() && isTargetDarwin())
- AllowsUnalignedMem = true;
+ if (!StrictAlign) {
+ // Assume pre-ARMv6 doesn't support unaligned accesses.
+ //
+ // ARMv6 may or may not support unaligned accesses depending on the
+ // SCTLR.U bit, which is architecture-specific. We assume ARMv6
+ // Darwin targets support unaligned accesses, and others don't.
+ //
+ // ARMv7 always has SCTLR.U set to 1, but it has a new SCTLR.A bit
+ // which raises an alignment fault on unaligned accesses. Linux
+ // defaults this bit to 0 and handles it as a system-wide (not
+ // per-process) setting. It is therefore safe to assume that ARMv7+
+ // targets support unaligned accesses.
+ //
+ // The above behavior is consistent with GCC.
+ if (hasV7Ops() || (hasV6Ops() && isTargetDarwin()))
+ AllowsUnalignedMem = true;
+ }
// NEON f32 ops are non-IEEE 754 compliant. Darwin is ok with it by default.
uint64_t Bits = getFeatureBits();
diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp
index 42c7d2c437..17c52c94a0 100644
--- a/lib/Target/ARM/ARMTargetMachine.cpp
+++ b/lib/Target/ARM/ARMTargetMachine.cpp
@@ -85,6 +85,7 @@ ARMTargetMachine::ARMTargetMachine(const Target &T, StringRef TT,
TLInfo(*this),
TSInfo(*this),
FrameLowering(Subtarget) {
+ initAsmInfo();
if (!Subtarget.hasARMOps())
report_fatal_error("CPU: '" + Subtarget.getCPUString() + "' does not "
"support ARM mode execution!");
@@ -117,6 +118,7 @@ ThumbTargetMachine::ThumbTargetMachine(const Target &T, StringRef TT,
FrameLowering(Subtarget.hasThumb2()
? new ARMFrameLowering(Subtarget)
: (ARMFrameLowering*)new Thumb1FrameLowering(Subtarget)) {
+ initAsmInfo();
}
namespace {
diff --git a/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
index ac937f3534..d2896377cc 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
@@ -156,6 +156,9 @@ static DecodeStatus DecodeGPRRegisterClass(MCInst &Inst, unsigned RegNo,
static DecodeStatus DecodeGPRnopcRegisterClass(MCInst &Inst,
unsigned RegNo, uint64_t Address,
const void *Decoder);
+static DecodeStatus DecodeGPRwithAPSRRegisterClass(MCInst &Inst,
+ unsigned RegNo, uint64_t Address,
+ const void *Decoder);
static DecodeStatus DecodetGPRRegisterClass(MCInst &Inst, unsigned RegNo,
uint64_t Address, const void *Decoder);
static DecodeStatus DecodetcGPRRegisterClass(MCInst &Inst, unsigned RegNo,
@@ -920,6 +923,21 @@ DecodeGPRnopcRegisterClass(MCInst &Inst, unsigned RegNo,
return S;
}
+static DecodeStatus
+DecodeGPRwithAPSRRegisterClass(MCInst &Inst, unsigned RegNo,
+ uint64_t Address, const void *Decoder) {
+ DecodeStatus S = MCDisassembler::Success;
+
+ if (RegNo == 15)
+ {
+ Inst.addOperand(MCOperand::CreateReg(ARM::APSR_NZCV));
+ return MCDisassembler::Success;
+ }
+
+ Check(S, DecodeGPRRegisterClass(Inst, RegNo, Address, Decoder));
+ return S;
+}
+
static DecodeStatus DecodetGPRRegisterClass(MCInst &Inst, unsigned RegNo,
uint64_t Address, const void *Decoder) {
if (RegNo > 7)
diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
index 57239f8011..b858fff546 100644
--- a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
+++ b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
@@ -159,7 +159,7 @@ static MCRegisterInfo *createARMMCRegisterInfo(StringRef Triple) {
return X;
}
-static MCAsmInfo *createARMMCAsmInfo(StringRef TT) {
+static MCAsmInfo *createARMMCAsmInfo(const MCRegisterInfo &MRI, StringRef TT) {
Triple TheTriple(TT);
if (TheTriple.isOSDarwin())
diff --git a/lib/Target/Hexagon/CMakeLists.txt b/lib/Target/Hexagon/CMakeLists.txt
index 99d7a3a963..57044b27d6 100644
--- a/lib/Target/Hexagon/CMakeLists.txt
+++ b/lib/Target/Hexagon/CMakeLists.txt
@@ -35,6 +35,7 @@ add_llvm_target(HexagonCodeGen
HexagonTargetObjectFile.cpp
HexagonVLIWPacketizer.cpp
HexagonNewValueJump.cpp
+ HexagonCopyToCombine.cpp
)
add_subdirectory(TargetInfo)
diff --git a/lib/Target/Hexagon/Hexagon.h b/lib/Target/Hexagon/Hexagon.h
index 8e19c61f40..b88637ad57 100644
--- a/lib/Target/Hexagon/Hexagon.h
+++ b/lib/Target/Hexagon/Hexagon.h
@@ -44,6 +44,8 @@ namespace llvm {
FunctionPass *createHexagonHardwareLoops();
FunctionPass *createHexagonPeephole();
FunctionPass *createHexagonFixupHwLoops();
+ FunctionPass *createHexagonNewValueJump();
+ FunctionPass *createHexagonCopyToCombine();
FunctionPass *createHexagonPacketizer();
FunctionPass *createHexagonNewValueJump();
diff --git a/lib/Target/Hexagon/HexagonCopyToCombine.cpp b/lib/Target/Hexagon/HexagonCopyToCombine.cpp
new file mode 100644
index 0000000000..dd63523291
--- /dev/null
+++ b/lib/Target/Hexagon/HexagonCopyToCombine.cpp
@@ -0,0 +1,676 @@
+//===------- HexagonCopyToCombine.cpp - Hexagon Copy-To-Combine Pass ------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+// This pass replaces transfer instructions by combine instructions.
+// We walk along a basic block and look for two combinable instructions and try
+// to move them together. If we can move them next to each other we do so and
+// replace them with a combine instruction.
+//===----------------------------------------------------------------------===//
+#define DEBUG_TYPE "hexagon-copy-combine"
+
+#include "llvm/PassSupport.h"
+#include "llvm/ADT/DenseSet.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/CodeGen/Passes.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+#include "llvm/Target/TargetRegisterInfo.h"
+#include "llvm/Support/CodeGen.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/raw_ostream.h"
+
+#include "Hexagon.h"
+#include "HexagonInstrInfo.h"
+#include "HexagonRegisterInfo.h"
+#include "HexagonSubtarget.h"
+#include "HexagonTargetMachine.h"
+#include "HexagonMachineFunctionInfo.h"
+
+using namespace llvm;
+
+static
+cl::opt<bool> IsCombinesDisabled("disable-merge-into-combines",
+ cl::Hidden, cl::ZeroOrMore,
+ cl::init(false),
+ cl::desc("Disable merging into combines"));
+static
+cl::opt<unsigned>
+MaxNumOfInstsBetweenNewValueStoreAndTFR("max-num-inst-between-tfr-and-nv-store",
+ cl::Hidden, cl::init(4),
+ cl::desc("Maximum distance between a tfr feeding a store we "
+ "consider the store still to be newifiable"));
+
+namespace llvm {
+ void initializeHexagonCopyToCombinePass(PassRegistry&);
+}
+
+
+namespace {
+
+class HexagonCopyToCombine : public MachineFunctionPass {
+ const HexagonInstrInfo *TII;
+ const TargetRegisterInfo *TRI;
+ bool ShouldCombineAggressively;
+
+ DenseSet<MachineInstr *> PotentiallyNewifiableTFR;
+public:
+ static char ID;
+
+ HexagonCopyToCombine() : MachineFunctionPass(ID) {
+ initializeHexagonCopyToCombinePass(*PassRegistry::getPassRegistry());
+ }
+
+ virtual void getAnalysisUsage(AnalysisUsage &AU) const {
+ MachineFunctionPass::getAnalysisUsage(AU);
+ }
+
+ const char *getPassName() const {
+ return "Hexagon Copy-To-Combine Pass";
+ }
+
+ virtual bool runOnMachineFunction(MachineFunction &Fn);
+
+private:
+ MachineInstr *findPairable(MachineInstr *I1, bool &DoInsertAtI1);
+
+ void findPotentialNewifiableTFRs(MachineBasicBlock &);
+
+ void combine(MachineInstr *I1, MachineInstr *I2,
+ MachineBasicBlock::iterator &MI, bool DoInsertAtI1);
+
+ bool isSafeToMoveTogether(MachineInstr *I1, MachineInstr *I2,
+ unsigned I1DestReg, unsigned I2DestReg,
+ bool &DoInsertAtI1);
+
+ void emitCombineRR(MachineBasicBlock::iterator &Before, unsigned DestReg,
+ MachineOperand &HiOperand, MachineOperand &LoOperand);
+
+ void emitCombineRI(MachineBasicBlock::iterator &Before, unsigned DestReg,
+ MachineOperand &HiOperand, MachineOperand &LoOperand);
+
+ void emitCombineIR(MachineBasicBlock::iterator &Before, unsigned DestReg,
+ MachineOperand &HiOperand, MachineOperand &LoOperand);
+
+ void emitCombineII(MachineBasicBlock::iterator &Before, unsigned DestReg,
+ MachineOperand &HiOperand, MachineOperand &LoOperand);
+};
+
+} // End anonymous namespace.
+
+char HexagonCopyToCombine::ID = 0;
+
+INITIALIZE_PASS(HexagonCopyToCombine, "hexagon-copy-combine",
+ "Hexagon Copy-To-Combine Pass", false, false)
+
+static bool isCombinableInstType(MachineInstr *MI,
+ const HexagonInstrInfo *TII,
+ bool ShouldCombineAggressively) {
+ switch(MI->getOpcode()) {
+ case Hexagon::TFR: {
+ // A COPY instruction can be combined if its arguments are IntRegs (32bit).
+ assert(MI->getOperand(0).isReg() && MI->getOperand(1).isReg());
+
+ unsigned DestReg = MI->getOperand(0).getReg();
+ unsigned SrcReg = MI->getOperand(1).getReg();
+ return Hexagon::IntRegsRegClass.contains(DestReg) &&
+ Hexagon::IntRegsRegClass.contains(SrcReg);
+ }
+
+ case Hexagon::TFRI: {
+ // A transfer-immediate can be combined if its argument is a signed 8bit
+ // value.
+ assert(MI->getOperand(0).isReg() && MI->getOperand(1).isImm());
+ unsigned DestReg = MI->getOperand(0).getReg();
+
+ // Only combine constant extended TFRI if we are in aggressive mode.
+ return Hexagon::IntRegsRegClass.contains(DestReg) &&
+ (ShouldCombineAggressively || isInt<8>(MI->getOperand(1).getImm()));
+ }
+
+ case Hexagon::TFRI_V4: {
+ if (!ShouldCombineAggressively)
+ return false;
+ assert(MI->getOperand(0).isReg() && MI->getOperand(1).isGlobal());
+
+ // Ensure that TargetFlags are MO_NO_FLAG for a global. This is a
+ // workaround for an ABI bug that prevents GOT relocations on combine
+ // instructions
+ if (MI->getOperand(1).getTargetFlags() != HexagonII::MO_NO_FLAG)
+ return false;
+
+ unsigned DestReg = MI->getOperand(0).getReg();
+ return Hexagon::IntRegsRegClass.contains(DestReg);
+ }
+
+ default:
+ break;
+ }
+
+ return false;
+}
+
+static bool isGreaterThan8BitTFRI(MachineInstr *I) {
+ return I->getOpcode() == Hexagon::TFRI &&
+ !isInt<8>(I->getOperand(1).getImm());
+}
+static bool isGreaterThan6BitTFRI(MachineInstr *I) {
+ return I->getOpcode() == Hexagon::TFRI &&
+ !isUInt<6>(I->getOperand(1).getImm());
+}
+
+/// areCombinableOperations - Returns true if the two instruction can be merge
+/// into a combine (ignoring register constraints).
+static bool areCombinableOperations(const TargetRegisterInfo *TRI,
+ MachineInstr *HighRegInst,
+ MachineInstr *LowRegInst) {
+ assert((HighRegInst->getOpcode() == Hexagon::TFR ||
+ HighRegInst->getOpcode() == Hexagon::TFRI ||
+ HighRegInst->getOpcode() == Hexagon::TFRI_V4) &&
+ (LowRegInst->getOpcode() == Hexagon::TFR ||
+ LowRegInst->getOpcode() == Hexagon::TFRI ||
+ LowRegInst->getOpcode() == Hexagon::TFRI_V4) &&
+ "Assume individual instructions are of a combinable type");
+
+ const HexagonRegisterInfo *QRI =
+ static_cast<const HexagonRegisterInfo *>(TRI);
+
+ // V4 added some combine variations (mixed immediate and register source
+ // operands), if we are on < V4 we can only combine 2 register-to-register
+ // moves and 2 immediate-to-register moves. We also don't have
+ // constant-extenders.
+ if (!QRI->Subtarget.hasV4TOps())
+ return HighRegInst->getOpcode() == LowRegInst->getOpcode() &&
+ !isGreaterThan8BitTFRI(HighRegInst) &&
+ !isGreaterThan6BitTFRI(LowRegInst);
+
+ // There is no combine of two constant extended values.
+ if ((HighRegInst->getOpcode() == Hexagon::TFRI_V4 ||
+ isGreaterThan8BitTFRI(HighRegInst)) &&
+ (LowRegInst->getOpcode() == Hexagon::TFRI_V4 ||
+ isGreaterThan6BitTFRI(LowRegInst)))
+ return false;
+
+ return true;
+}
+
+static bool isEvenReg(unsigned Reg) {
+ assert(TargetRegisterInfo::isPhysicalRegister(Reg) &&
+ Hexagon::IntRegsRegClass.contains(Reg));
+ return (Reg - Hexagon::R0) % 2 == 0;
+}
+
+static void removeKillInfo(MachineInstr *MI, unsigned RegNotKilled) {
+ for (unsigned I = 0, E = MI->getNumOperands(); I != E; ++I) {
+ MachineOperand &Op = MI->getOperand(I);
+ if (!Op.isReg() || Op.getReg() != RegNotKilled || !Op.isKill())
+ continue;
+ Op.setIsKill(false);
+ }
+}
+
+/// isUnsafeToMoveAccross - Returns true if it is unsafe to move a copy
+/// instruction from \p UseReg to \p DestReg over the instruction \p I.
+bool isUnsafeToMoveAccross(MachineInstr *I, unsigned UseReg, unsigned DestReg,
+ const TargetRegisterInfo *TRI) {
+ return (UseReg && (I->modifiesRegister(UseReg, TRI))) ||
+ I->modifiesRegister(DestReg, TRI) ||
+ I->readsRegister(DestReg, TRI) ||
+ I->hasUnmodeledSideEffects() ||
+ I->isInlineAsm() || I->isDebugValue();
+}
+
+/// isSafeToMoveTogether - Returns true if it is safe to move I1 next to I2 such
+/// that the two instructions can be paired in a combine.
+bool HexagonCopyToCombine::isSafeToMoveTogether(MachineInstr *I1,
+ MachineInstr *I2,
+ unsigned I1DestReg,
+ unsigned I2DestReg,
+ bool &DoInsertAtI1) {
+
+ bool IsImmUseReg = I2->getOperand(1).isImm() || I2->getOperand(1).isGlobal();
+ unsigned I2UseReg = IsImmUseReg ? 0 : I2->getOperand(1).getReg();
+
+ // It is not safe to move I1 and I2 into one combine if I2 has a true
+ // dependence on I1.
+ if (I2UseReg && I1->modifiesRegister(I2UseReg, TRI))
+ return false;
+
+ bool isSafe = true;
+
+ // First try to move I2 towards I1.
+ {
+ // A reverse_iterator instantiated like below starts before I2, and I1
+ // respectively.
+ // Look at instructions I in between I2 and (excluding) I1.
+ MachineBasicBlock::reverse_iterator I(I2),
+ End = --(MachineBasicBlock::reverse_iterator(I1));
+ // At 03 we got better results (dhrystone!) by being more conservative.
+ if (!ShouldCombineAggressively)
+ End = MachineBasicBlock::reverse_iterator(I1);
+ // If I2 kills its operand and we move I2 over an instruction that also
+ // uses I2's use reg we need to modify that (first) instruction to now kill
+ // this reg.
+ unsigned KilledOperand = 0;
+ if (I2->killsRegister(I2UseReg))
+ KilledOperand = I2UseReg;
+ MachineInstr *KillingInstr = 0;
+
+ for (; I != End; ++I) {
+ // If the intervening instruction I:
+ // * modifies I2's use reg
+ // * modifies I2's def reg
+ // * reads I2's def reg
+ // * or has unmodelled side effects
+ // we can't move I2 across it.
+ if (isUnsafeToMoveAccross(&*I, I2UseReg, I2DestReg, TRI)) {
+ isSafe = false;
+ break;
+ }
+
+ // Update first use of the killed operand.
+ if (!KillingInstr && KilledOperand &&
+ I->readsRegister(KilledOperand, TRI))
+ KillingInstr = &*I;
+ }
+ if (isSafe) {
+ // Update the intermediate instruction to with the kill flag.
+ if (KillingInstr) {
+ bool Added = KillingInstr->addRegisterKilled(KilledOperand, TRI, true);
+ (void)Added; // supress compiler warning
+ assert(Added && "Must successfully update kill flag");
+ removeKillInfo(I2, KilledOperand);
+ }
+ DoInsertAtI1 = true;
+ return true;
+ }
+ }
+
+ // Try to move I1 towards I2.
+ {
+ // Look at instructions I in between I1 and (excluding) I2.
+ MachineBasicBlock::iterator I(I1), End(I2);
+ // At O3 we got better results (dhrystone) by being more conservative here.
+ if (!ShouldCombineAggressively)
+ End = llvm::next(MachineBasicBlock::iterator(I2));
+ IsImmUseReg = I1->getOperand(1).isImm() || I1->getOperand(1).isGlobal();
+ unsigned I1UseReg = IsImmUseReg ? 0 : I1->getOperand(1).getReg();
+ // Track killed operands. If we move accross an instruction that kills our
+ // operand, we need to update the kill information on the moved I1. It kills
+ // the operand now.
+ MachineInstr *KillingInstr = 0;
+ unsigned KilledOperand = 0;
+
+ while(++I != End) {
+ // If the intervening instruction I:
+ // * modifies I1's use reg
+ // * modifies I1's def reg
+ // * reads I1's def reg
+ // * or has unmodelled side effects
+ // We introduce this special case because llvm has no api to remove a
+ // kill flag for a register (a removeRegisterKilled() analogous to
+ // addRegisterKilled) that handles aliased register correctly.
+ // * or has a killed aliased register use of I1's use reg
+ // %D4<def> = TFRI64 16
+ // %R6<def> = TFR %R9
+ // %R8<def> = KILL %R8, %D4<imp-use,kill>
+ // If we want to move R6 = across the KILL instruction we would have
+ // to remove the %D4<imp-use,kill> operand. For now, we are
+ // conservative and disallow the move.
+ // we can't move I1 across it.
+ if (isUnsafeToMoveAccross(I, I1UseReg, I1DestReg, TRI) ||
+ // Check for an aliased register kill. Bail out if we see one.
+ (!I->killsRegister(I1UseReg) && I->killsRegister(I1UseReg, TRI)))
+ return false;
+
+ // Check for an exact kill (registers match).
+ if (I1UseReg && I->killsRegister(I1UseReg)) {
+ assert(KillingInstr == 0 && "Should only see one killing instruction");
+ KilledOperand = I1UseReg;
+ KillingInstr = &*I;
+ }
+ }
+ if (KillingInstr) {
+ removeKillInfo(KillingInstr, KilledOperand);
+ // Update I1 to set the kill flag. This flag will later be picked up by
+ // the new COMBINE instruction.
+ bool Added = I1->addRegisterKilled(KilledOperand, TRI);
+ (void)Added; // supress compiler warning
+ assert(Added && "Must successfully update kill flag");
+ }
+ DoInsertAtI1 = false;
+ }
+
+ return true;
+}
+
+/// findPotentialNewifiableTFRs - Finds tranfers that feed stores that could be
+/// newified. (A use of a 64 bit register define can not be newified)
+void
+HexagonCopyToCombine::findPotentialNewifiableTFRs(MachineBasicBlock &BB) {
+ DenseMap<unsigned, MachineInstr *> LastDef;
+ for (MachineBasicBlock::iterator I = BB.begin(), E = BB.end(); I != E; ++I) {
+ MachineInstr *MI = I;
+ // Mark TFRs that feed a potential new value store as such.
+ if(TII->mayBeNewStore(MI)) {
+ // Look for uses of TFR instructions.
+ for (unsigned OpdIdx = 0, OpdE = MI->getNumOperands(); OpdIdx != OpdE;
+ ++OpdIdx) {
+ MachineOperand &Op = MI->getOperand(OpdIdx);
+
+ // Skip over anything except register uses.
+ if (!Op.isReg() || !Op.isUse() || !Op.getReg())
+ continue;
+
+ // Look for the defining instruction.
+ unsigned Reg = Op.getReg();
+ MachineInstr *DefInst = LastDef[Reg];
+ if (!DefInst)
+ continue;
+ if (!isCombinableInstType(DefInst, TII, ShouldCombineAggressively))
+ continue;
+
+ // Only close newifiable stores should influence the decision.
+ MachineBasicBlock::iterator It(DefInst);
+ unsigned NumInstsToDef = 0;
+ while (&*It++ != MI)
+ ++NumInstsToDef;
+
+ if (NumInstsToDef > MaxNumOfInstsBetweenNewValueStoreAndTFR)
+ continue;
+
+ PotentiallyNewifiableTFR.insert(DefInst);
+ }
+ // Skip to next instruction.
+ continue;
+ }
+
+ // Put instructions that last defined integer or double registers into the
+ // map.
+ for (unsigned I = 0, E = MI->getNumOperands(); I != E; ++I) {
+ MachineOperand &Op = MI->getOperand(I);
+ if (!Op.isReg() || !Op.isDef() || !Op.getReg())
+ continue;
+ unsigned Reg = Op.getReg();
+ if (Hexagon::DoubleRegsRegClass.contains(Reg)) {
+ for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) {
+ LastDef[*SubRegs] = MI;
+ }
+ } else if (Hexagon::IntRegsRegClass.contains(Reg))
+ LastDef[Reg] = MI;
+ }
+ }
+}
+
+bool HexagonCopyToCombine::runOnMachineFunction(MachineFunction &MF) {
+
+ if (IsCombinesDisabled) return false;
+
+ bool HasChanged = false;
+
+ // Get target info.
+ TRI = MF.getTarget().getRegisterInfo();
+ TII = static_cast<const HexagonInstrInfo *>(MF.getTarget().getInstrInfo());
+
+ // Combine aggressively (for code size)
+ ShouldCombineAggressively =
+ MF.getTarget().getOptLevel() <= CodeGenOpt::Default;
+
+ // Traverse basic blocks.
+ for (MachineFunction::iterator BI = MF.begin(), BE = MF.end(); BI != BE;
+ ++BI) {
+ PotentiallyNewifiableTFR.clear();
+ findPotentialNewifiableTFRs(*BI);
+
+ // Traverse instructions in basic block.
+ for(MachineBasicBlock::iterator MI = BI->begin(), End = BI->end();
+ MI != End;) {
+ MachineInstr *I1 = MI++;
+ // Don't combine a TFR whose user could be newified (instructions that
+ // define double registers can not be newified - Programmer's Ref Manual
+ // 5.4.2 New-value stores).
+ if (ShouldCombineAggressively && PotentiallyNewifiableTFR.count(I1))
+ continue;
+
+ // Ignore instructions that are not combinable.
+ if (!isCombinableInstType(I1, TII, ShouldCombineAggressively))
+ continue;
+
+ // Find a second instruction that can be merged into a combine
+ // instruction.
+ bool DoInsertAtI1 = false;
+ MachineInstr *I2 = findPairable(I1, DoInsertAtI1);
+ if (I2) {
+ HasChanged = true;
+ combine(I1, I2, MI, DoInsertAtI1);
+ }
+ }
+ }
+
+ return HasChanged;
+}
+
+/// findPairable - Returns an instruction that can be merged with \p I1 into a
+/// COMBINE instruction or 0 if no such instruction can be found. Returns true
+/// in \p DoInsertAtI1 if the combine must be inserted at instruction \p I1
+/// false if the combine must be inserted at the returned instruction.
+MachineInstr *HexagonCopyToCombine::findPairable(MachineInstr *I1,
+ bool &DoInsertAtI1) {
+ MachineBasicBlock::iterator I2 = llvm::next(MachineBasicBlock::iterator(I1));
+ unsigned I1DestReg = I1->getOperand(0).getReg();
+
+ for (MachineBasicBlock::iterator End = I1->getParent()->end(); I2 != End;
+ ++I2) {
+ // Bail out early if we see a second definition of I1DestReg.
+ if (I2->modifiesRegister(I1DestReg, TRI))
+ break;
+
+ // Ignore non-combinable instructions.
+ if (!isCombinableInstType(I2, TII, ShouldCombineAggressively))
+ continue;
+
+ // Don't combine a TFR whose user could be newified.
+ if (ShouldCombineAggressively && PotentiallyNewifiableTFR.count(I2))
+ continue;
+
+ unsigned I2DestReg = I2->getOperand(0).getReg();
+
+ // Check that registers are adjacent and that the first destination register
+ // is even.
+ bool IsI1LowReg = (I2DestReg - I1DestReg) == 1;
+ bool IsI2LowReg = (I1DestReg - I2DestReg) == 1;
+ unsigned FirstRegIndex = IsI1LowReg ? I1DestReg : I2DestReg;
+ if ((!IsI1LowReg && !IsI2LowReg) || !isEvenReg(FirstRegIndex))
+ continue;
+
+ // Check that the two instructions are combinable. V4 allows more
+ // instructions to be merged into a combine.
+ // The order matters because in a TFRI we might can encode a int8 as the
+ // hi reg operand but only a uint6 as the low reg operand.
+ if ((IsI2LowReg && !areCombinableOperations(TRI, I1, I2)) ||
+ (IsI1LowReg && !areCombinableOperations(TRI, I2, I1)))
+ break;
+
+ if (isSafeToMoveTogether(I1, I2, I1DestReg, I2DestReg,
+ DoInsertAtI1))
+ return I2;
+
+ // Not safe. Stop searching.
+ break;
+ }
+ return 0;
+}
+
+void HexagonCopyToCombine::combine(MachineInstr *I1, MachineInstr *I2,
+ MachineBasicBlock::iterator &MI,
+ bool DoInsertAtI1) {
+ // We are going to delete I2. If MI points to I2 advance it to the next
+ // instruction.
+ if ((MachineInstr *)MI == I2) ++MI;
+
+ // Figure out whether I1 or I2 goes into the lowreg part.
+ unsigned I1DestReg = I1->getOperand(0).getReg();
+ unsigned I2DestReg = I2->getOperand(0).getReg();
+ bool IsI1Loreg = (I2DestReg - I1DestReg) == 1;
+ unsigned LoRegDef = IsI1Loreg ? I1DestReg : I2DestReg;
+
+ // Get the double word register.
+ unsigned DoubleRegDest =
+ TRI->getMatchingSuperReg(LoRegDef, Hexagon::subreg_loreg,
+ &Hexagon::DoubleRegsRegClass);
+ assert(DoubleRegDest != 0 && "Expect a valid register");
+
+
+ // Setup source operands.
+ MachineOperand &LoOperand = IsI1Loreg ? I1->getOperand(1) :
+ I2->getOperand(1);
+ MachineOperand &HiOperand = IsI1Loreg ? I2->getOperand(1) :
+ I1->getOperand(1);
+
+ // Figure out which source is a register and which a constant.
+ bool IsHiReg = HiOperand.isReg();
+ bool IsLoReg = LoOperand.isReg();
+
+ MachineBasicBlock::iterator InsertPt(DoInsertAtI1 ? I1 : I2);
+ // Emit combine.
+ if (IsHiReg && IsLoReg)
+ emitCombineRR(InsertPt, DoubleRegDest, HiOperand, LoOperand);
+ else if (IsHiReg)
+ emitCombineRI(InsertPt, DoubleRegDest, HiOperand, LoOperand);
+ else if (IsLoReg)
+ emitCombineIR(InsertPt, DoubleRegDest, HiOperand, LoOperand);
+ else
+ emitCombineII(InsertPt, DoubleRegDest, HiOperand, LoOperand);
+
+ I1->eraseFromParent();
+ I2->eraseFromParent();
+}
+
+void HexagonCopyToCombine::emitCombineII(MachineBasicBlock::iterator &InsertPt,
+ unsigned DoubleDestReg,
+ MachineOperand &HiOperand,
+ MachineOperand &LoOperand) {
+ DebugLoc DL = InsertPt->getDebugLoc();
+ MachineBasicBlock *BB = InsertPt->getParent();
+
+ // Handle globals.
+ if (HiOperand.isGlobal()) {
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_Ii), DoubleDestReg)
+ .addGlobalAddress(HiOperand.getGlobal(), HiOperand.getOffset(),
+ HiOperand.getTargetFlags())
+ .addImm(LoOperand.getImm());
+ return;
+ }
+ if (LoOperand.isGlobal()) {
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_iI_V4), DoubleDestReg)
+ .addImm(HiOperand.getImm())
+ .addGlobalAddress(LoOperand.getGlobal(), LoOperand.getOffset(),
+ LoOperand.getTargetFlags());
+ return;
+ }
+
+ // Handle constant extended immediates.
+ if (!isInt<8>(HiOperand.getImm())) {
+ assert(isInt<8>(LoOperand.getImm()));
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_Ii), DoubleDestReg)
+ .addImm(HiOperand.getImm())
+ .addImm(LoOperand.getImm());
+ return;
+ }
+
+ if (!isUInt<6>(LoOperand.getImm())) {
+ assert(isInt<8>(HiOperand.getImm()));
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_iI_V4), DoubleDestReg)
+ .addImm(HiOperand.getImm())
+ .addImm(LoOperand.getImm());
+ return;
+ }
+
+ // Insert new combine instruction.
+ // DoubleRegDest = combine #HiImm, #LoImm
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_Ii), DoubleDestReg)
+ .addImm(HiOperand.getImm())
+ .addImm(LoOperand.getImm());
+}
+
+void HexagonCopyToCombine::emitCombineIR(MachineBasicBlock::iterator &InsertPt,
+ unsigned DoubleDestReg,
+ MachineOperand &HiOperand,
+ MachineOperand &LoOperand) {
+ unsigned LoReg = LoOperand.getReg();
+ unsigned LoRegKillFlag = getKillRegState(LoOperand.isKill());
+
+ DebugLoc DL = InsertPt->getDebugLoc();
+ MachineBasicBlock *BB = InsertPt->getParent();
+
+ // Handle global.
+ if (HiOperand.isGlobal()) {
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_Ir_V4), DoubleDestReg)
+ .addGlobalAddress(HiOperand.getGlobal(), HiOperand.getOffset(),
+ HiOperand.getTargetFlags())
+ .addReg(LoReg, LoRegKillFlag);
+ return;
+ }
+ // Insert new combine instruction.
+ // DoubleRegDest = combine #HiImm, LoReg
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_Ir_V4), DoubleDestReg)
+ .addImm(HiOperand.getImm())
+ .addReg(LoReg, LoRegKillFlag);
+}
+
+void HexagonCopyToCombine::emitCombineRI(MachineBasicBlock::iterator &InsertPt,
+ unsigned DoubleDestReg,
+ MachineOperand &HiOperand,
+ MachineOperand &LoOperand) {
+ unsigned HiRegKillFlag = getKillRegState(HiOperand.isKill());
+ unsigned HiReg = HiOperand.getReg();
+
+ DebugLoc DL = InsertPt->getDebugLoc();
+ MachineBasicBlock *BB = InsertPt->getParent();
+
+ // Handle global.
+ if (LoOperand.isGlobal()) {
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_rI_V4), DoubleDestReg)
+ .addReg(HiReg, HiRegKillFlag)
+ .addGlobalAddress(LoOperand.getGlobal(), LoOperand.getOffset(),
+ LoOperand.getTargetFlags());
+ return;
+ }
+
+ // Insert new combine instruction.
+ // DoubleRegDest = combine HiReg, #LoImm
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_rI_V4), DoubleDestReg)
+ .addReg(HiReg, HiRegKillFlag)
+ .addImm(LoOperand.getImm());
+}
+
+void HexagonCopyToCombine::emitCombineRR(MachineBasicBlock::iterator &InsertPt,
+ unsigned DoubleDestReg,
+ MachineOperand &HiOperand,
+ MachineOperand &LoOperand) {
+ unsigned LoRegKillFlag = getKillRegState(LoOperand.isKill());
+ unsigned HiRegKillFlag = getKillRegState(HiOperand.isKill());
+ unsigned LoReg = LoOperand.getReg();
+ unsigned HiReg = HiOperand.getReg();
+
+ DebugLoc DL = InsertPt->getDebugLoc();
+ MachineBasicBlock *BB = InsertPt->getParent();
+
+ // Insert new combine instruction.
+ // DoubleRegDest = combine HiReg, LoReg
+ BuildMI(*BB, InsertPt, DL, TII->get(Hexagon::COMBINE_rr), DoubleDestReg)
+ .addReg(HiReg, HiRegKillFlag)
+ .addReg(LoReg, LoRegKillFlag);
+}
+
+FunctionPass *llvm::createHexagonCopyToCombine() {
+ return new HexagonCopyToCombine();
+}
diff --git a/lib/Target/Hexagon/HexagonInstrInfo.td b/lib/Target/Hexagon/HexagonInstrInfo.td
index d1e32c65ad..c96aaca8f8 100644
--- a/lib/Target/Hexagon/HexagonInstrInfo.td
+++ b/lib/Target/Hexagon/HexagonInstrInfo.td
@@ -384,6 +384,12 @@ def TFCR : CRInst<(outs CRRegs:$dst), (ins IntRegs:$src1),
// ALU32/PERM +
//===----------------------------------------------------------------------===//
+let neverHasSideEffects = 1 in
+def COMBINE_ii : ALU32_ii<(outs DoubleRegs:$dst),
+ (ins s8Imm:$src1, s8Imm:$src2),
+ "$dst = combine(#$src1, #$src2)",
+ []>;
+
// Mux.
def VMUX_prr64 : ALU64_rr<(outs DoubleRegs:$dst), (ins PredRegs:$src1,
DoubleRegs:$src2,
diff --git a/lib/Target/Hexagon/HexagonInstrInfoV4.td b/lib/Target/Hexagon/HexagonInstrInfoV4.td
index 022a7f6136..fee83fb811 100644
--- a/lib/Target/Hexagon/HexagonInstrInfoV4.td
+++ b/lib/Target/Hexagon/HexagonInstrInfoV4.td
@@ -3188,6 +3188,93 @@ def STriw_offset_ext_V4 : STInst<(outs),
(add IntRegs:$src1, u6_2ImmPred:$src2))]>,
Requires<[HasV4T]>;
+def : Pat<(i64 (ctlz (i64 DoubleRegs:$src1))),
+ (i64 (COMBINE_Ir_V4 (i32 0), (i32 (CTLZ64_rr DoubleRegs:$src1))))>,
+ Requires<[HasV4T]>;
+
+def : Pat<(i64 (cttz (i64 DoubleRegs:$src1))),
+ (i64 (COMBINE_Ir_V4 (i32 0), (i32 (CTTZ64_rr DoubleRegs:$src1))))>,
+ Requires<[HasV4T]>;
+
+
+// i8 -> i64 loads
+// We need a complexity of 120 here to overide preceeding handling of
+// zextloadi8.
+let Predicates = [HasV4T], AddedComplexity = 120 in {
+def: Pat <(i64 (extloadi8 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (COMBINE_Ir_V4 0, (LDrib_abs_V4 tglobaladdr:$addr)))>;
+
+def: Pat <(i64 (zextloadi8 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (COMBINE_Ir_V4 0, (LDriub_abs_V4 tglobaladdr:$addr)))>;
+
+def: Pat <(i64 (sextloadi8 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (SXTW (LDrib_abs_V4 tglobaladdr:$addr)))>;
+
+def: Pat <(i64 (extloadi8 FoldGlobalAddr:$addr)),
+ (i64 (COMBINE_Ir_V4 0, (LDrib_abs_V4 FoldGlobalAddr:$addr)))>;
+
+def: Pat <(i64 (zextloadi8 FoldGlobalAddr:$addr)),
+ (i64 (COMBINE_Ir_V4 0, (LDriub_abs_V4 FoldGlobalAddr:$addr)))>;
+
+def: Pat <(i64 (sextloadi8 FoldGlobalAddr:$addr)),
+ (i64 (SXTW (LDrib_abs_V4 FoldGlobalAddr:$addr)))>;
+}
+// i16 -> i64 loads
+// We need a complexity of 120 here to overide preceeding handling of
+// zextloadi16.
+let AddedComplexity = 120 in {
+def: Pat <(i64 (extloadi16 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (COMBINE_Ir_V4 0, (LDrih_abs_V4 tglobaladdr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (zextloadi16 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (COMBINE_Ir_V4 0, (LDriuh_abs_V4 tglobaladdr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (sextloadi16 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (SXTW (LDrih_abs_V4 tglobaladdr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (extloadi16 FoldGlobalAddr:$addr)),
+ (i64 (COMBINE_Ir_V4 0, (LDrih_abs_V4 FoldGlobalAddr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (zextloadi16 FoldGlobalAddr:$addr)),
+ (i64 (COMBINE_Ir_V4 0, (LDriuh_abs_V4 FoldGlobalAddr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (sextloadi16 FoldGlobalAddr:$addr)),
+ (i64 (SXTW (LDrih_abs_V4 FoldGlobalAddr:$addr)))>,
+ Requires<[HasV4T]>;
+}
+// i32->i64 loads
+// We need a complexity of 120 here to overide preceeding handling of
+// zextloadi32.
+let AddedComplexity = 120 in {
+def: Pat <(i64 (extloadi32 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (COMBINE_Ir_V4 0, (LDriw_abs_V4 tglobaladdr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (zextloadi32 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (COMBINE_Ir_V4 0, (LDriw_abs_V4 tglobaladdr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (sextloadi32 (NumUsesBelowThresCONST32 tglobaladdr:$addr))),
+ (i64 (SXTW (LDriw_abs_V4 tglobaladdr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (extloadi32 FoldGlobalAddr:$addr)),
+ (i64 (COMBINE_Ir_V4 0, (LDriw_abs_V4 FoldGlobalAddr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (zextloadi32 FoldGlobalAddr:$addr)),
+ (i64 (COMBINE_Ir_V4 0, (LDriw_abs_V4 FoldGlobalAddr:$addr)))>,
+ Requires<[HasV4T]>;
+
+def: Pat <(i64 (sextloadi32 FoldGlobalAddr:$addr)),
+ (i64 (SXTW (LDriw_abs_V4 FoldGlobalAddr:$addr)))>,
+ Requires<[HasV4T]>;
+}
// Indexed store double word - global address.
// memw(Rs+#u6:2)=#S8
diff --git a/lib/Target/Hexagon/HexagonNewValueJump.cpp b/lib/Target/Hexagon/HexagonNewValueJump.cpp
index 05e696865f..f7c4513213 100644
--- a/lib/Target/Hexagon/HexagonNewValueJump.cpp
+++ b/lib/Target/Hexagon/HexagonNewValueJump.cpp
@@ -631,6 +631,7 @@ bool HexagonNewValueJump::runOnMachineFunction(MachineFunction &MF) {
.addMBB(jmpTarget);
assert(NewMI && "New Value Jump Instruction Not created!");
+ (void)NewMI;
if (cmpInstr->getOperand(0).isReg() &&
cmpInstr->getOperand(0).isKill())
cmpInstr->getOperand(0).setIsKill(false);
diff --git a/lib/Target/Hexagon/HexagonTargetMachine.cpp b/lib/Target/Hexagon/HexagonTargetMachine.cpp
index dc44b34cff..676dff2a4a 100644
--- a/lib/Target/Hexagon/HexagonTargetMachine.cpp
+++ b/lib/Target/Hexagon/HexagonTargetMachine.cpp
@@ -79,6 +79,7 @@ HexagonTargetMachine::HexagonTargetMachine(const Target &T, StringRef TT,
FrameLowering(Subtarget),
InstrItins(&Subtarget.getInstrItineraryData()) {
setMCUseCFI(false);
+ initAsmInfo();
}
// addPassesForOptimizations - Allow the backend (target) to add Target
@@ -161,6 +162,7 @@ bool HexagonPassConfig::addPreSched2() {
HexagonTargetObjectFile &TLOF =
(HexagonTargetObjectFile&)(getTargetLowering()->getObjFileLowering());
+ addPass(createHexagonCopyToCombine());
if (getOptLevel() != CodeGenOpt::None)
addPass(&IfConverterID);
if (!TLOF.IsSmallDataEnabled()) {
@@ -168,9 +170,6 @@ bool HexagonPassConfig::addPreSched2() {
printAndVerify("After hexagon split const32/64 pass");
}
return true;
- if (getOptLevel() != CodeGenOpt::None)
- addPass(&IfConverterID);
- return false;
}
bool HexagonPassConfig::addPreEmitPass() {
diff --git a/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp b/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
index c508d124b3..59b4fabe01 100644
--- a/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
+++ b/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
@@ -837,16 +837,38 @@ bool HexagonPacketizerList::RestrictingDepExistInPacket (MachineInstr* MI,
}
+/// Gets the predicate register of a predicated instruction.
+unsigned getPredicatedRegister(MachineInstr *MI, const HexagonInstrInfo *QII) {
+ /// We use the following rule: The first predicate register that is a use is
+ /// the predicate register of a predicated instruction.
+
+ assert(QII->isPredicated(MI) && "Must be predicated instruction");
+
+ for (MachineInstr::mop_iterator OI = MI->operands_begin(),
+ OE = MI->operands_end(); OI != OE; ++OI) {
+ MachineOperand &Op = *OI;
+ if (Op.isReg() && Op.getReg() && Op.isUse() &&
+ Hexagon::PredRegsRegClass.contains(Op.getReg()))
+ return Op.getReg();
+ }
+
+ llvm_unreachable("Unknown instruction operand layout");
+
+ return 0;
+}
+
// Given two predicated instructions, this function detects whether
// the predicates are complements
bool HexagonPacketizerList::ArePredicatesComplements (MachineInstr* MI1,
MachineInstr* MI2, std::map <MachineInstr*, SUnit*> MIToSUnit) {
const HexagonInstrInfo *QII = (const HexagonInstrInfo *) TII;
- // Currently can only reason about conditional transfers
- if (!QII->isConditionalTransfer(MI1) || !QII->isConditionalTransfer(MI2)) {
+
+ // If we don't know the predicate sense of the instructions bail out early, we
+ // need it later.
+ if (getPredicateSense(MI1, QII) == PK_Unknown ||
+ getPredicateSense(MI2, QII) == PK_Unknown)
return false;
- }
// Scheduling unit for candidate
SUnit* SU = MIToSUnit[MI1];
@@ -885,9 +907,9 @@ bool HexagonPacketizerList::ArePredicatesComplements (MachineInstr* MI1,
// there already exist anti dep on the same pred in
// the packet.
if (PacketSU->Succs[i].getSUnit() == SU &&
+ PacketSU->Succs[i].getKind() == SDep::Data &&
Hexagon::PredRegsRegClass.contains(
PacketSU->Succs[i].getReg()) &&
- PacketSU->Succs[i].getKind() == SDep::Data &&
// Here I know that *VIN is predicate setting instruction
// with true data dep to candidate on the register
// we care about - c) in the above example.
@@ -908,7 +930,11 @@ bool HexagonPacketizerList::ArePredicatesComplements (MachineInstr* MI1,
// that the predicate sense is different
// We also need to differentiate .old vs. .new:
// !p0 is not complimentary to p0.new
- return ((MI1->getOperand(1).getReg() == MI2->getOperand(1).getReg()) &&
+ unsigned PReg1 = getPredicatedRegister(MI1, QII);
+ unsigned PReg2 = getPredicatedRegister(MI2, QII);
+ return ((PReg1 == PReg2) &&
+ Hexagon::PredRegsRegClass.contains(PReg1) &&
+ Hexagon::PredRegsRegClass.contains(PReg2) &&
(getPredicateSense(MI1, QII) != getPredicateSense(MI2, QII)) &&
(QII->isDotNewInst(MI1) == QII->isDotNewInst(MI2)));
}
diff --git a/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp b/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp
index 273bc22b8e..2f93a5299c 100644
--- a/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp
+++ b/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp
@@ -54,13 +54,14 @@ static MCSubtargetInfo *createHexagonMCSubtargetInfo(StringRef TT,
return X;
}
-static MCAsmInfo *createHexagonMCAsmInfo(StringRef TT) {
+static MCAsmInfo *createHexagonMCAsmInfo(const MCRegisterInfo &MRI,
+ StringRef TT) {
MCAsmInfo *MAI = new HexagonMCAsmInfo(TT);
// VirtualFP = (R30 + #0).
- MachineLocation Dst(MachineLocation::VirtualFP);
- MachineLocation Src(Hexagon::R30, 0);
- MAI->addInitialFrameState(0, Dst, Src);
+ MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(
+ 0, Hexagon::R30, 0);
+ MAI->addInitialFrameState(Inst);
return MAI;
}
diff --git a/lib/Target/MBlaze/MBlazeTargetMachine.cpp b/lib/Target/MBlaze/MBlazeTargetMachine.cpp
index bcdd32fed9..c75895575d 100644
--- a/lib/Target/MBlaze/MBlazeTargetMachine.cpp
+++ b/lib/Target/MBlaze/MBlazeTargetMachine.cpp
@@ -43,6 +43,7 @@ MBlazeTargetMachine(const Target &T, StringRef TT,
FrameLowering(Subtarget),
TLInfo(*this), TSInfo(*this),
InstrItins(Subtarget.getInstrItineraryData()) {
+ initAsmInfo();
}
namespace {
diff --git a/lib/Target/MBlaze/MCTargetDesc/MBlazeMCTargetDesc.cpp b/lib/Target/MBlaze/MCTargetDesc/MBlazeMCTargetDesc.cpp
index ec76dba491..5bc0668f35 100644
--- a/lib/Target/MBlaze/MCTargetDesc/MBlazeMCTargetDesc.cpp
+++ b/lib/Target/MBlaze/MCTargetDesc/MBlazeMCTargetDesc.cpp
@@ -53,7 +53,7 @@ static MCSubtargetInfo *createMBlazeMCSubtargetInfo(StringRef TT, StringRef CPU,
return X;
}
-static MCAsmInfo *createMCAsmInfo(StringRef TT) {
+static MCAsmInfo *createMCAsmInfo(const MCRegisterInfo &MRI, StringRef TT) {
Triple TheTriple(TT);
switch (TheTriple.getOS()) {
default:
diff --git a/lib/Target/MSP430/MSP430TargetMachine.cpp b/lib/Target/MSP430/MSP430TargetMachine.cpp
index 164e351df9..6710a09707 100644
--- a/lib/Target/MSP430/MSP430TargetMachine.cpp
+++ b/lib/Target/MSP430/MSP430TargetMachine.cpp
@@ -36,7 +36,9 @@ MSP430TargetMachine::MSP430TargetMachine(const Target &T,
// FIXME: Check DataLayout string.
DL("e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16"),
InstrInfo(*this), TLInfo(*this), TSInfo(*this),
- FrameLowering(Subtarget) { }
+ FrameLowering(Subtarget) {
+ initAsmInfo();
+}
namespace {
/// MSP430 Code Generator Pass Configuration Options.
diff --git a/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp b/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
index 26694ffdac..837fabee76 100644
--- a/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
+++ b/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
@@ -93,12 +93,12 @@ static MCSubtargetInfo *createMipsMCSubtargetInfo(StringRef TT, StringRef CPU,
return X;
}
-static MCAsmInfo *createMipsMCAsmInfo(StringRef TT) {
+static MCAsmInfo *createMipsMCAsmInfo(const MCRegisterInfo &MRI, StringRef TT) {
MCAsmInfo *MAI = new MipsMCAsmInfo(TT);
- MachineLocation Dst(MachineLocation::VirtualFP);
- MachineLocation Src(Mips::SP, 0);
- MAI->addInitialFrameState(0, Dst, Src);
+ unsigned SP = MRI.getDwarfRegNum(Mips::SP, true);
+ MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(0, SP, 0);
+ MAI->addInitialFrameState(Inst);
return MAI;
}
diff --git a/lib/Target/Mips/Mips16HardFloat.cpp b/lib/Target/Mips/Mips16HardFloat.cpp
index 4d1e61bb99..cc7324f26e 100644
--- a/lib/Target/Mips/Mips16HardFloat.cpp
+++ b/lib/Target/Mips/Mips16HardFloat.cpp
@@ -18,6 +18,36 @@
#include "llvm/Support/raw_ostream.h"
#include <string>
+static void inlineAsmOut
+ (LLVMContext &C, StringRef AsmString, BasicBlock *BB ) {
+ std::vector<llvm::Type *> AsmArgTypes;
+ std::vector<llvm::Value*> AsmArgs;
+ llvm::FunctionType *AsmFTy =
+ llvm::FunctionType::get(Type::getVoidTy(C),
+ AsmArgTypes, false);
+ llvm::InlineAsm *IA =
+ llvm::InlineAsm::get(AsmFTy, AsmString, "", true,
+ /* IsAlignStack */ false,
+ llvm::InlineAsm::AD_ATT);
+ CallInst::Create(IA, AsmArgs, "", BB);
+}
+
+namespace {
+
+class InlineAsmHelper {
+ LLVMContext &C;
+ BasicBlock *BB;
+public:
+ InlineAsmHelper(LLVMContext &C_, BasicBlock *BB_) :
+ C(C_), BB(BB_) {
+ }
+
+ void Out(StringRef AsmString) {
+ inlineAsmOut(C, AsmString, BB);
+ }
+
+};
+}
//
// Return types that matter for hard float are:
// float, double, complex float, and complex double
@@ -52,6 +82,243 @@ static FPReturnVariant whichFPReturnVariant(Type *T) {
}
//
+// Parameter type that matter are float, (float, float), (float, double),
+// double, (double, double), (double, float)
+//
+enum FPParamVariant {
+ FSig, FFSig, FDSig,
+ DSig, DDSig, DFSig, NoSig
+};
+
+// which floating point parameter signature variant we are dealing with
+//
+typedef Type::TypeID TypeID;
+const Type::TypeID FloatTyID = Type::FloatTyID;
+const Type::TypeID DoubleTyID = Type::DoubleTyID;
+
+static FPParamVariant whichFPParamVariantNeeded(Function &F) {
+ switch (F.arg_size()) {
+ case 0:
+ return NoSig;
+ case 1:{
+ TypeID ArgTypeID = F.getFunctionType()->getParamType(0)->getTypeID();
+ switch (ArgTypeID) {
+ case FloatTyID:
+ return FSig;
+ case DoubleTyID:
+ return DSig;
+ default:
+ return NoSig;
+ }
+ }
+ default: {
+ TypeID ArgTypeID0 = F.getFunctionType()->getParamType(0)->getTypeID();
+ TypeID ArgTypeID1 = F.getFunctionType()->getParamType(1)->getTypeID();
+ switch(ArgTypeID0) {
+ case FloatTyID: {
+ switch (ArgTypeID1) {
+ case FloatTyID:
+ return FFSig;
+ case DoubleTyID:
+ return FDSig;
+ default:
+ return FSig;
+ }
+ }
+ case DoubleTyID: {
+ switch (ArgTypeID1) {
+ case FloatTyID:
+ return DFSig;
+ case DoubleTyID:
+ return DDSig;
+ default:
+ return DSig;
+ }
+ }
+ default:
+ return NoSig;
+ }
+ }
+ }
+ llvm_unreachable("can't get here");
+}
+
+// Figure out if we need float point based on the function parameters.
+// We need to move variables in and/or out of floating point
+// registers because of the ABI
+//
+static bool needsFPStubFromParams(Function &F) {
+ if (F.arg_size() >=1) {
+ Type *ArgType = F.getFunctionType()->getParamType(0);
+ switch (ArgType->getTypeID()) {
+ case Type::FloatTyID:
+ case Type::DoubleTyID:
+ return true;
+ default:
+ break;
+ }
+ }
+ return false;
+}
+
+static bool needsFPReturnHelper(Function &F) {
+ Type* RetType = F.getReturnType();
+ return whichFPReturnVariant(RetType) != NoFPRet;
+}
+
+static bool needsFPHelperFromSig(Function &F) {
+ return needsFPStubFromParams(F) || needsFPReturnHelper(F);
+}
+
+//
+// We swap between FP and Integer registers to allow Mips16 and Mips32 to
+// interoperate
+//
+
+static void swapFPIntParams
+ (FPParamVariant PV, Module *M, InlineAsmHelper &IAH,
+ bool LE, bool ToFP) {
+ //LLVMContext &Context = M->getContext();
+ std::string MI = ToFP? "mtc1 ": "mfc1 ";
+ switch (PV) {
+ case FSig:
+ IAH.Out(MI + "$$4,$$f12");
+ break;
+ case FFSig:
+ IAH.Out(MI +"$$4,$$f12");
+ IAH.Out(MI + "$$5,$$f14");
+ break;
+ case FDSig:
+ IAH.Out(MI + "$$4,$$f12");
+ if (LE) {
+ IAH.Out(MI + "$$6,$$f14");
+ IAH.Out(MI + "$$7,$$f15");
+ } else {
+ IAH.Out(MI + "$$7,$$f14");
+ IAH.Out(MI + "$$6,$$f15");
+ }
+ break;
+ case DSig:
+ if (LE) {
+ IAH.Out(MI + "$$4,$$f12");
+ IAH.Out(MI + "$$5,$$f13");
+ } else {
+ IAH.Out(MI + "$$5,$$f12");
+ IAH.Out(MI + "$$4,$$f13");
+ }
+ break;
+ case DDSig:
+ if (LE) {
+ IAH.Out(MI + "$$4,$$f12");
+ IAH.Out(MI + "$$5,$$f13");
+ IAH.Out(MI + "$$6,$$f14");
+ IAH.Out(MI + "$$7,$$f15");
+ } else {
+ IAH.Out(MI + "$$5,$$f12");
+ IAH.Out(MI + "$$4,$$f13");
+ IAH.Out(MI + "$$7,$$f14");
+ IAH.Out(MI + "$$6,$$f15");
+ }
+ break;
+ case DFSig:
+ if (LE) {
+ IAH.Out(MI + "$$4,$$f12");
+ IAH.Out(MI + "$$5,$$f13");
+ } else {
+ IAH.Out(MI + "$$5,$$f12");
+ IAH.Out(MI + "$$4,$$f13");
+ }
+ IAH.Out(MI + "$$6,$$f14");
+ break;
+ case NoSig:
+ return;
+ }
+}
+//
+// Make sure that we know we already need a stub for this function.
+// Having called needsFPHelperFromSig
+//
+static void assureFPCallStub(Function &F, Module *M,
+ const MipsSubtarget &Subtarget){
+ // for now we only need them for static relocation
+ if (Subtarget.getRelocationModel() == Reloc::PIC_)
+ return;
+ LLVMContext &Context = M->getContext();
+ bool LE = Subtarget.isLittle();
+ std::string Name = F.getName();
+ std::string SectionName = ".mips16.call.fp." + Name;
+ std::string StubName = "__call_stub_" + Name;
+ //
+ // see if we already have the stub
+ //
+ Function *FStub = M->getFunction(StubName);
+ if (FStub && !FStub->isDeclaration()) return;
+ FStub = Function::Create(F.getFunctionType(),
+ Function::InternalLinkage, StubName, M);
+ FStub->addFnAttr("mips16_fp_stub");
+ FStub->addFnAttr(llvm::Attribute::Naked);
+ FStub->addFnAttr(llvm::Attribute::NoUnwind);
+ FStub->addFnAttr("nomips16");
+ FStub->setSection(SectionName);
+ BasicBlock *BB = BasicBlock::Create(Context, "entry", FStub);
+ InlineAsmHelper IAH(Context, BB);
+ FPReturnVariant RV = whichFPReturnVariant(FStub->getReturnType());
+ FPParamVariant PV = whichFPParamVariantNeeded(F);
+ swapFPIntParams(PV, M, IAH, LE, true);
+ if (RV != NoFPRet) {
+ IAH.Out("move $$18, $$31");
+ IAH.Out("jal " + Name);
+ } else {
+ IAH.Out("lui $$25,%hi(" + Name + ")");
+ IAH.Out("addiu $$25,$$25,%lo(" + Name + ")" );
+ }
+ switch (RV) {
+ case FRet:
+ IAH.Out("mfc1 $$2,$$f0");
+ break;
+ case DRet:
+ if (LE) {
+ IAH.Out("mfc1 $$2,$$f0");
+ IAH.Out("mfc1 $$3,$$f1");
+ } else {
+ IAH.Out("mfc1 $$3,$$f0");
+ IAH.Out("mfc1 $$2,$$f1");
+ }
+ break;
+ case CFRet:
+ if (LE) {
+ IAH.Out("mfc1 $$2,$$f0");
+ IAH.Out("mfc1 $$3,$$f2");
+ } else {
+ IAH.Out("mfc1 $$3,$$f0");
+ IAH.Out("mfc1 $$3,$$f2");
+ }
+ break;
+ case CDRet:
+ if (LE) {
+ IAH.Out("mfc1 $$4,$$f2");
+ IAH.Out("mfc1 $$5,$$f3");
+ IAH.Out("mfc1 $$2,$$f0");
+ IAH.Out("mfc1 $$3,$$f1");
+
+ } else {
+ IAH.Out("mfc1 $$5,$$f2");
+ IAH.Out("mfc1 $$4,$$f3");
+ IAH.Out("mfc1 $$3,$$f0");
+ IAH.Out("mfc1 $$2,$$f1");
+ }
+ break;
+ case NoFPRet:
+ break;
+ }
+ if (RV != NoFPRet)
+ IAH.Out("jr $$18");
+ else
+ IAH.Out("jr $$25");
+ new UnreachableInst(Context, BB);
+}
+
+//
// Returns of float, double and complex need to be handled with a helper
// function. The "AndCal" part is coming in a later patch.
//
@@ -96,6 +363,16 @@ static bool fixupFPReturnAndCall
Attribute::ReadNone);
Value *F = (M->getOrInsertFunction(Name, A, MyVoid, T, NULL));
CallInst::Create(F, Params, "", &Inst );
+ } else if (const CallInst *CI = dyn_cast<CallInst>(I)) {
+ // pic mode calls are handled by already defined
+ // helper functions
+ if (Subtarget.getRelocationModel() != Reloc::PIC_ ) {
+ Function *F_ = CI->getCalledFunction();
+ if (F_ && needsFPHelperFromSig(*F_)) {
+ assureFPCallStub(*F_, M, Subtarget);
+ Modified=true;
+ }
+ }
}
}
return Modified;
diff --git a/lib/Target/Mips/Mips16InstrInfo.cpp b/lib/Target/Mips/Mips16InstrInfo.cpp
index 17dd2c0796..ab9e62703b 100644
--- a/lib/Target/Mips/Mips16InstrInfo.cpp
+++ b/lib/Target/Mips/Mips16InstrInfo.cpp
@@ -145,7 +145,7 @@ bool Mips16InstrInfo::expandPostRAPseudo(MachineBasicBlock::iterator MI) const {
/// GetOppositeBranchOpc - Return the inverse of the specified
/// opcode, e.g. turning BEQ to BNE.
-unsigned Mips16InstrInfo::GetOppositeBranchOpc(unsigned Opc) const {
+unsigned Mips16InstrInfo::getOppositeBranchOpc(unsigned Opc) const {
switch (Opc) {
default: llvm_unreachable("Illegal opcode!");
case Mips::BeqzRxImmX16: return Mips::BnezRxImmX16;
@@ -380,7 +380,7 @@ Mips16InstrInfo::loadImmediate(unsigned FrameReg,
return Reg;
}
-unsigned Mips16InstrInfo::GetAnalyzableBrOpc(unsigned Opc) const {
+unsigned Mips16InstrInfo::getAnalyzableBrOpc(unsigned Opc) const {
return (Opc == Mips::BeqzRxImmX16 || Opc == Mips::BimmX16 ||
Opc == Mips::BnezRxImmX16 || Opc == Mips::BteqzX16 ||
Opc == Mips::BteqzT8CmpX16 || Opc == Mips::BteqzT8CmpiX16 ||
diff --git a/lib/Target/Mips/Mips16InstrInfo.h b/lib/Target/Mips/Mips16InstrInfo.h
index a77a9043bb..a3bd31e94f 100644
--- a/lib/Target/Mips/Mips16InstrInfo.h
+++ b/lib/Target/Mips/Mips16InstrInfo.h
@@ -64,7 +64,7 @@ public:
virtual bool expandPostRAPseudo(MachineBasicBlock::iterator MI) const;
- virtual unsigned GetOppositeBranchOpc(unsigned Opc) const;
+ virtual unsigned getOppositeBranchOpc(unsigned Opc) const;
// Adjust SP by FrameSize bytes. Save RA, S0, S1
void makeFrame(unsigned SP, int64_t FrameSize, MachineBasicBlock &MBB,
@@ -102,7 +102,7 @@ public:
(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, int64_t Imm) const;
private:
- virtual unsigned GetAnalyzableBrOpc(unsigned Opc) const;
+ virtual unsigned getAnalyzableBrOpc(unsigned Opc) const;
void ExpandRetRA16(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
unsigned Opc) const;
diff --git a/lib/Target/Mips/MipsInstrFPU.td b/lib/Target/Mips/MipsInstrFPU.td
index 6b23057c9c..5fa79cb159 100644
--- a/lib/Target/Mips/MipsInstrFPU.td
+++ b/lib/Target/Mips/MipsInstrFPU.td
@@ -154,6 +154,7 @@ class LW_FT<string opstr, RegisterClass RC, InstrItinClass Itin,
InstSE<(outs RC:$rt), (ins MemOpnd:$addr), !strconcat(opstr, "\t$rt, $addr"),
[(set RC:$rt, (OpNode addrDefault:$addr))], Itin, FrmFI> {
let DecoderMethod = "DecodeFMem";
+ let mayLoad = 1;
}
class SW_FT<string opstr, RegisterClass RC, InstrItinClass Itin,
@@ -161,6 +162,7 @@ class SW_FT<string opstr, RegisterClass RC, InstrItinClass Itin,
InstSE<(outs), (ins RC:$rt, MemOpnd:$addr), !strconcat(opstr, "\t$rt, $addr"),
[(OpNode RC:$rt, addrDefault:$addr)], Itin, FrmFI> {
let DecoderMethod = "DecodeFMem";
+ let mayStore = 1;
}
class MADDS_FT<string opstr, RegisterClass RC, InstrItinClass Itin,
@@ -314,8 +316,12 @@ let Predicates = [NotN64, HasMips64, HasStdEnc],
}
let Predicates = [NotN64, NotMips64, HasStdEnc] in {
- def LDC1 : LW_FT<"ldc1", AFGR64, IILoad, mem, load>, LW_FM<0x35>;
- def SDC1 : SW_FT<"sdc1", AFGR64, IIStore, mem, store>, LW_FM<0x3d>;
+ let isPseudo = 1, isCodeGenOnly = 1 in {
+ def PseudoLDC1 : LW_FT<"", AFGR64, IILoad, mem, load>;
+ def PseudoSDC1 : SW_FT<"", AFGR64, IIStore, mem, store>;
+ }
+ def LDC1 : LW_FT<"ldc1", AFGR64, IILoad, mem>, LW_FM<0x35>;
+ def SDC1 : SW_FT<"sdc1", AFGR64, IIStore, mem>, LW_FM<0x3d>;
}
// Indexed loads and stores.
@@ -523,7 +529,7 @@ let AddedComplexity = 40 in {
}
let Predicates = [NotN64, NotMips64, HasStdEnc] in {
- def : LoadRegImmPat<LDC1, f64, load>;
- def : StoreRegImmPat<SDC1, f64>;
+ def : LoadRegImmPat<PseudoLDC1, f64, load>;
+ def : StoreRegImmPat<PseudoSDC1, f64>;
}
}
diff --git a/lib/Target/Mips/MipsInstrInfo.cpp b/lib/Target/Mips/MipsInstrInfo.cpp
index ad92d41209..3144daebd7 100644
--- a/lib/Target/Mips/MipsInstrInfo.cpp
+++ b/lib/Target/Mips/MipsInstrInfo.cpp
@@ -77,7 +77,7 @@ MipsInstrInfo::emitFrameIndexDebugValue(MachineFunction &MF, int FrameIx,
void MipsInstrInfo::AnalyzeCondBr(const MachineInstr *Inst, unsigned Opc,
MachineBasicBlock *&BB,
SmallVectorImpl<MachineOperand> &Cond) const {
- assert(GetAnalyzableBrOpc(Opc) && "Not an analyzable branch");
+ assert(getAnalyzableBrOpc(Opc) && "Not an analyzable branch");
int NumOp = Inst->getNumExplicitOperands();
// for both int and fp branches, the last explicit operand is the
@@ -167,7 +167,7 @@ RemoveBranch(MachineBasicBlock &MBB) const
// Up to 2 branches are removed.
// Note that indirect branches are not removed.
for(removed = 0; I != REnd && removed < 2; ++I, ++removed)
- if (!GetAnalyzableBrOpc(I->getOpcode()))
+ if (!getAnalyzableBrOpc(I->getOpcode()))
break;
MBB.erase(I.base(), FirstBr.base());
@@ -182,7 +182,7 @@ ReverseBranchCondition(SmallVectorImpl<MachineOperand> &Cond) const
{
assert( (Cond.size() && Cond.size() <= 3) &&
"Invalid Mips branch condition!");
- Cond[0].setImm(GetOppositeBranchOpc(Cond[0].getImm()));
+ Cond[0].setImm(getOppositeBranchOpc(Cond[0].getImm()));
return false;
}
@@ -210,7 +210,7 @@ AnalyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB,
BranchInstrs.push_back(LastInst);
// Not an analyzable branch (e.g., indirect jump).
- if (!GetAnalyzableBrOpc(LastOpc))
+ if (!getAnalyzableBrOpc(LastOpc))
return LastInst->isIndirectBranch() ? BT_Indirect : BT_None;
// Get the second to last instruction in the block.
@@ -219,7 +219,7 @@ AnalyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB,
if (++I != REnd) {
SecondLastInst = &*I;
- SecondLastOpc = GetAnalyzableBrOpc(SecondLastInst->getOpcode());
+ SecondLastOpc = getAnalyzableBrOpc(SecondLastInst->getOpcode());
// Not an analyzable branch (must be an indirect jump).
if (isUnpredicatedTerminator(SecondLastInst) && !SecondLastOpc)
@@ -282,3 +282,16 @@ unsigned MipsInstrInfo::GetInstSizeInBytes(const MachineInstr *MI) const {
}
}
}
+
+MachineInstrBuilder
+MipsInstrInfo::genInstrWithNewOpc(unsigned NewOpc,
+ MachineBasicBlock::iterator I) const {
+ MachineInstrBuilder MIB;
+ MIB = BuildMI(*I->getParent(), I, I->getDebugLoc(), get(NewOpc));
+
+ for (unsigned J = 0, E = I->getDesc().getNumOperands(); J < E; ++J)
+ MIB.addOperand(I->getOperand(J));
+
+ MIB.setMemRefs(I->memoperands_begin(), I->memoperands_end());
+ return MIB;
+}
diff --git a/lib/Target/Mips/MipsInstrInfo.h b/lib/Target/Mips/MipsInstrInfo.h
index 8c05d97bea..0f075ec6d0 100644
--- a/lib/Target/Mips/MipsInstrInfo.h
+++ b/lib/Target/Mips/MipsInstrInfo.h
@@ -17,6 +17,7 @@
#include "Mips.h"
#include "MipsAnalyzeImmediate.h"
#include "MipsRegisterInfo.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Target/TargetInstrInfo.h"
@@ -81,7 +82,7 @@ public:
///
virtual const MipsRegisterInfo &getRegisterInfo() const = 0;
- virtual unsigned GetOppositeBranchOpc(unsigned Opc) const = 0;
+ virtual unsigned getOppositeBranchOpc(unsigned Opc) const = 0;
/// Return the number of bytes of code the specified instruction may be.
unsigned GetInstSizeInBytes(const MachineInstr *MI) const;
@@ -116,6 +117,11 @@ public:
const TargetRegisterInfo *TRI,
int64_t Offset) const = 0;
+ /// Create an instruction which has the same operands and memory operands
+ /// as MI but has a new opcode.
+ MachineInstrBuilder genInstrWithNewOpc(unsigned NewOpc,
+ MachineBasicBlock::iterator I) const;
+
protected:
bool isZeroImm(const MachineOperand &op) const;
@@ -123,7 +129,7 @@ protected:
unsigned Flag) const;
private:
- virtual unsigned GetAnalyzableBrOpc(unsigned Opc) const = 0;
+ virtual unsigned getAnalyzableBrOpc(unsigned Opc) const = 0;
void AnalyzeCondBr(const MachineInstr *Inst, unsigned Opc,
MachineBasicBlock *&BB,
diff --git a/lib/Target/Mips/MipsInstrInfo.td b/lib/Target/Mips/MipsInstrInfo.td
index 3d319373fe..5ada1df267 100644
--- a/lib/Target/Mips/MipsInstrInfo.td
+++ b/lib/Target/Mips/MipsInstrInfo.td
@@ -1095,7 +1095,8 @@ def : InstAlias<"mfc2 $rt, $rd",
(MFC2_3OP CPURegsOpnd:$rt, CPURegsOpnd:$rd, 0), 0>;
def : InstAlias<"mtc2 $rt, $rd",
(MTC2_3OP CPURegsOpnd:$rd, 0, CPURegsOpnd:$rt), 0>;
-
+def : InstAlias<"addiu $rs, $imm",
+ (ADDiu CPURegsOpnd:$rs, CPURegsOpnd:$rs, simm16:$imm), 0>;
//===----------------------------------------------------------------------===//
// Assembler Pseudo Instructions
//===----------------------------------------------------------------------===//
diff --git a/lib/Target/Mips/MipsLongBranch.cpp b/lib/Target/Mips/MipsLongBranch.cpp
index bf5ad37031..daabf3d25a 100644
--- a/lib/Target/Mips/MipsLongBranch.cpp
+++ b/lib/Target/Mips/MipsLongBranch.cpp
@@ -217,7 +217,7 @@ int64_t MipsLongBranch::computeOffset(const MachineInstr *Br) {
// MachineBasicBlock operand MBBOpnd.
void MipsLongBranch::replaceBranch(MachineBasicBlock &MBB, Iter Br,
DebugLoc DL, MachineBasicBlock *MBBOpnd) {
- unsigned NewOpc = TII->GetOppositeBranchOpc(Br->getOpcode());
+ unsigned NewOpc = TII->getOppositeBranchOpc(Br->getOpcode());
const MCInstrDesc &NewDesc = TII->get(NewOpc);
MachineInstrBuilder MIB = BuildMI(MBB, Br, DL, NewDesc);
diff --git a/lib/Target/Mips/MipsSEInstrInfo.cpp b/lib/Target/Mips/MipsSEInstrInfo.cpp
index a0768e51c0..12ed1bc186 100644
--- a/lib/Target/Mips/MipsSEInstrInfo.cpp
+++ b/lib/Target/Mips/MipsSEInstrInfo.cpp
@@ -18,11 +18,17 @@
#include "llvm/ADT/STLExtras.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/TargetRegistry.h"
using namespace llvm;
+static cl::opt<bool> NoDPLoadStore("mno-ldc1-sdc1", cl::init(false),
+ cl::desc("Expand double precision loads and "
+ "stores to their single precision "
+ "counterparts."));
+
MipsSEInstrInfo::MipsSEInstrInfo(MipsTargetMachine &tm)
: MipsInstrInfo(tm,
tm.getRelocationModel() == Reloc::PIC_ ? Mips::B : Mips::J),
@@ -245,17 +251,23 @@ bool MipsSEInstrInfo::expandPostRAPseudo(MachineBasicBlock::iterator MI) const {
default:
return false;
case Mips::RetRA:
- ExpandRetRA(MBB, MI, Mips::RET);
+ expandRetRA(MBB, MI, Mips::RET);
break;
case Mips::BuildPairF64:
- ExpandBuildPairF64(MBB, MI);
+ expandBuildPairF64(MBB, MI);
break;
case Mips::ExtractElementF64:
- ExpandExtractElementF64(MBB, MI);
+ expandExtractElementF64(MBB, MI);
+ break;
+ case Mips::PseudoLDC1:
+ expandDPLoadStore(MBB, MI, Mips::LDC1, Mips::LWC1);
+ break;
+ case Mips::PseudoSDC1:
+ expandDPLoadStore(MBB, MI, Mips::SDC1, Mips::SWC1);
break;
case Mips::MIPSeh_return32:
case Mips::MIPSeh_return64:
- ExpandEhReturn(MBB, MI);
+ expandEhReturn(MBB, MI);
break;
}
@@ -263,9 +275,9 @@ bool MipsSEInstrInfo::expandPostRAPseudo(MachineBasicBlock::iterator MI) const {
return true;
}
-/// GetOppositeBranchOpc - Return the inverse of the specified
+/// getOppositeBranchOpc - Return the inverse of the specified
/// opcode, e.g. turning BEQ to BNE.
-unsigned MipsSEInstrInfo::GetOppositeBranchOpc(unsigned Opc) const {
+unsigned MipsSEInstrInfo::getOppositeBranchOpc(unsigned Opc) const {
switch (Opc) {
default: llvm_unreachable("Illegal opcode!");
case Mips::BEQ: return Mips::BNE;
@@ -346,7 +358,7 @@ MipsSEInstrInfo::loadImmediate(int64_t Imm, MachineBasicBlock &MBB,
return Reg;
}
-unsigned MipsSEInstrInfo::GetAnalyzableBrOpc(unsigned Opc) const {
+unsigned MipsSEInstrInfo::getAnalyzableBrOpc(unsigned Opc) const {
return (Opc == Mips::BEQ || Opc == Mips::BNE || Opc == Mips::BGTZ ||
Opc == Mips::BGEZ || Opc == Mips::BLTZ || Opc == Mips::BLEZ ||
Opc == Mips::BEQ64 || Opc == Mips::BNE64 || Opc == Mips::BGTZ64 ||
@@ -356,13 +368,13 @@ unsigned MipsSEInstrInfo::GetAnalyzableBrOpc(unsigned Opc) const {
Opc : 0;
}
-void MipsSEInstrInfo::ExpandRetRA(MachineBasicBlock &MBB,
+void MipsSEInstrInfo::expandRetRA(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I,
unsigned Opc) const {
BuildMI(MBB, I, I->getDebugLoc(), get(Opc)).addReg(Mips::RA);
}
-void MipsSEInstrInfo::ExpandExtractElementF64(MachineBasicBlock &MBB,
+void MipsSEInstrInfo::expandExtractElementF64(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) const {
unsigned DstReg = I->getOperand(0).getReg();
unsigned SrcReg = I->getOperand(1).getReg();
@@ -377,7 +389,7 @@ void MipsSEInstrInfo::ExpandExtractElementF64(MachineBasicBlock &MBB,
BuildMI(MBB, I, dl, Mfc1Tdd, DstReg).addReg(SubReg);
}
-void MipsSEInstrInfo::ExpandBuildPairF64(MachineBasicBlock &MBB,
+void MipsSEInstrInfo::expandBuildPairF64(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) const {
unsigned DstReg = I->getOperand(0).getReg();
unsigned LoReg = I->getOperand(1).getReg(), HiReg = I->getOperand(2).getReg();
@@ -393,7 +405,57 @@ void MipsSEInstrInfo::ExpandBuildPairF64(MachineBasicBlock &MBB,
.addReg(HiReg);
}
-void MipsSEInstrInfo::ExpandEhReturn(MachineBasicBlock &MBB,
+/// Add 4 to the displacement of operand MO.
+static void fixDisp(MachineOperand &MO) {
+ switch (MO.getType()) {
+ default:
+ llvm_unreachable("Unhandled operand type.");
+ case MachineOperand::MO_Immediate:
+ MO.setImm(MO.getImm() + 4);
+ break;
+ case MachineOperand::MO_GlobalAddress:
+ case MachineOperand::MO_ConstantPoolIndex:
+ case MachineOperand::MO_BlockAddress:
+ case MachineOperand::MO_TargetIndex:
+ case MachineOperand::MO_ExternalSymbol:
+ MO.setOffset(MO.getOffset() + 4);
+ break;
+ }
+}
+
+void MipsSEInstrInfo::expandDPLoadStore(MachineBasicBlock &MBB,
+ MachineBasicBlock::iterator I,
+ unsigned OpcD, unsigned OpcS) const {
+ // If NoDPLoadStore is false, just change the opcode.
+ if (!NoDPLoadStore) {
+ genInstrWithNewOpc(OpcD, I);
+ return;
+ }
+
+ // Expand a double precision FP load or store to two single precision
+ // instructions.
+
+ const TargetRegisterInfo &TRI = getRegisterInfo();
+ const MachineOperand &ValReg = I->getOperand(0);
+ unsigned LoReg = TRI.getSubReg(ValReg.getReg(), Mips::sub_fpeven);
+ unsigned HiReg = TRI.getSubReg(ValReg.getReg(), Mips::sub_fpodd);
+
+ if (!TM.getSubtarget<MipsSubtarget>().isLittle())
+ std::swap(LoReg, HiReg);
+
+ // Create an instruction which loads from or stores to the lower memory
+ // address.
+ MachineInstrBuilder MIB = genInstrWithNewOpc(OpcS, I);
+ MIB->getOperand(0).setReg(LoReg);
+
+ // Create an instruction which loads from or stores to the higher memory
+ // address.
+ MIB = genInstrWithNewOpc(OpcS, I);
+ MIB->getOperand(0).setReg(HiReg);
+ fixDisp(MIB->getOperand(2));
+}
+
+void MipsSEInstrInfo::expandEhReturn(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) const {
// This pseudo instruction is generated as part of the lowering of
// ISD::EH_RETURN. We convert it to a stack increment by OffsetReg, and
diff --git a/lib/Target/Mips/MipsSEInstrInfo.h b/lib/Target/Mips/MipsSEInstrInfo.h
index 0bf7876f0f..416fff8a60 100644
--- a/lib/Target/Mips/MipsSEInstrInfo.h
+++ b/lib/Target/Mips/MipsSEInstrInfo.h
@@ -65,7 +65,7 @@ public:
virtual bool expandPostRAPseudo(MachineBasicBlock::iterator MI) const;
- virtual unsigned GetOppositeBranchOpc(unsigned Opc) const;
+ virtual unsigned getOppositeBranchOpc(unsigned Opc) const;
/// Adjust SP by Amount bytes.
void adjustStackPtr(unsigned SP, int64_t Amount, MachineBasicBlock &MBB,
@@ -79,15 +79,18 @@ public:
unsigned *NewImm) const;
private:
- virtual unsigned GetAnalyzableBrOpc(unsigned Opc) const;
+ virtual unsigned getAnalyzableBrOpc(unsigned Opc) const;
- void ExpandRetRA(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
+ void expandRetRA(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
unsigned Opc) const;
- void ExpandExtractElementF64(MachineBasicBlock &MBB,
+ void expandExtractElementF64(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) const;
- void ExpandBuildPairF64(MachineBasicBlock &MBB,
+ void expandBuildPairF64(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) const;
- void ExpandEhReturn(MachineBasicBlock &MBB,
+ void expandDPLoadStore(MachineBasicBlock &MBB,
+ MachineBasicBlock::iterator I, unsigned OpcD,
+ unsigned OpcS) const;
+ void expandEhReturn(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) const;
};
diff --git a/lib/Target/Mips/MipsTargetMachine.cpp b/lib/Target/Mips/MipsTargetMachine.cpp
index a876f1c7f0..89407351a0 100644
--- a/lib/Target/Mips/MipsTargetMachine.cpp
+++ b/lib/Target/Mips/MipsTargetMachine.cpp
@@ -72,6 +72,7 @@ MipsTargetMachine(const Target &T, StringRef TT,
FrameLowering(MipsFrameLowering::create(*this, Subtarget)),
TLInfo(MipsTargetLowering::create(*this)),
TSInfo(*this), JITInfo() {
+ initAsmInfo();
}
diff --git a/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index 67ca6b58e5..5f35edf219 100644
--- a/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -72,7 +72,9 @@ NVPTXTargetMachine::NVPTXTargetMachine(
Subtarget(TT, CPU, FS, is64bit), DL(Subtarget.getDataLayout()),
InstrInfo(*this), TLInfo(*this), TSInfo(*this),
FrameLowering(
- *this, is64bit) /*FrameInfo(TargetFrameInfo::StackGrowsUp, 8, 0)*/ {}
+ *this, is64bit) /*FrameInfo(TargetFrameInfo::StackGrowsUp, 8, 0)*/ {
+ initAsmInfo();
+}
void NVPTXTargetMachine32::anchor() {}
diff --git a/lib/Target/PowerPC/CMakeLists.txt b/lib/Target/PowerPC/CMakeLists.txt
index 71803cdac9..e5c5204708 100644
--- a/lib/Target/PowerPC/CMakeLists.txt
+++ b/lib/Target/PowerPC/CMakeLists.txt
@@ -27,6 +27,7 @@ add_llvm_target(PowerPCCodeGen
PPCRegisterInfo.cpp
PPCSubtarget.cpp
PPCTargetMachine.cpp
+ PPCTargetObjectFile.cpp
PPCTargetTransformInfo.cpp
PPCSelectionDAGInfo.cpp
)
diff --git a/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp b/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
index ec2657403e..b1ac4a6f27 100644
--- a/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
+++ b/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
@@ -22,7 +22,7 @@
#include "llvm/Support/TargetRegistry.h"
using namespace llvm;
-static unsigned adjustFixupValue(unsigned Kind, uint64_t Value) {
+static uint64_t adjustFixupValue(unsigned Kind, uint64_t Value) {
switch (Kind) {
default:
llvm_unreachable("Unknown fixup kind!");
@@ -50,6 +50,29 @@ static unsigned adjustFixupValue(unsigned Kind, uint64_t Value) {
}
}
+static unsigned getFixupKindNumBytes(unsigned Kind) {
+ switch (Kind) {
+ default:
+ llvm_unreachable("Unknown fixup kind!");
+ case FK_Data_1:
+ return 1;
+ case FK_Data_2:
+ case PPC::fixup_ppc_ha16:
+ case PPC::fixup_ppc_lo16:
+ case PPC::fixup_ppc_lo16_ds:
+ return 2;
+ case FK_Data_4:
+ case PPC::fixup_ppc_brcond14:
+ case PPC::fixup_ppc_br24:
+ return 4;
+ case FK_Data_8:
+ return 8;
+ case PPC::fixup_ppc_tlsreg:
+ case PPC::fixup_ppc_nofixup:
+ return 0;
+ }
+}
+
namespace {
class PPCMachObjectWriter : public MCMachObjectTargetWriter {
public:
@@ -77,9 +100,9 @@ public:
// name offset bits flags
{ "fixup_ppc_br24", 6, 24, MCFixupKindInfo::FKF_IsPCRel },
{ "fixup_ppc_brcond14", 16, 14, MCFixupKindInfo::FKF_IsPCRel },
- { "fixup_ppc_lo16", 16, 16, 0 },
- { "fixup_ppc_ha16", 16, 16, 0 },
- { "fixup_ppc_lo16_ds", 16, 14, 0 },
+ { "fixup_ppc_lo16", 0, 16, 0 },
+ { "fixup_ppc_ha16", 0, 16, 0 },
+ { "fixup_ppc_lo16_ds", 0, 14, 0 },
{ "fixup_ppc_tlsreg", 0, 0, 0 },
{ "fixup_ppc_nofixup", 0, 0, 0 }
};
@@ -98,12 +121,13 @@ public:
if (!Value) return; // Doesn't change encoding.
unsigned Offset = Fixup.getOffset();
+ unsigned NumBytes = getFixupKindNumBytes(Fixup.getKind());
// For each byte of the fragment that the fixup touches, mask in the bits
// from the fixup value. The Value has been "split up" into the appropriate
// bitfields above.
- for (unsigned i = 0; i != 4; ++i)
- Data[Offset + i] |= uint8_t((Value >> ((4 - i - 1)*8)) & 0xff);
+ for (unsigned i = 0; i != NumBytes; ++i)
+ Data[Offset + i] |= uint8_t((Value >> ((NumBytes - i - 1)*8)) & 0xff);
}
bool mayNeedRelaxation(const MCInst &Inst) const {
diff --git a/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp b/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
index 7a84723ed5..2508cc2f37 100644
--- a/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
+++ b/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
@@ -33,26 +33,9 @@ namespace {
virtual const MCSymbol *undefinedExplicitRelSym(const MCValue &Target,
const MCFixup &Fixup,
bool IsPCRel) const;
- virtual void adjustFixupOffset(const MCFixup &Fixup, uint64_t &RelocOffset);
-
- virtual void sortRelocs(const MCAssembler &Asm,
- std::vector<ELFRelocationEntry> &Relocs);
- };
-
- class PPCELFRelocationEntry : public ELFRelocationEntry {
- public:
- PPCELFRelocationEntry(const ELFRelocationEntry &RE);
- bool operator<(const PPCELFRelocationEntry &RE) const {
- return (RE.r_offset < r_offset ||
- (RE.r_offset == r_offset && RE.Type > Type));
- }
};
}
-PPCELFRelocationEntry::PPCELFRelocationEntry(const ELFRelocationEntry &RE)
- : ELFRelocationEntry(RE.r_offset, RE.Index, RE.Type, RE.Symbol,
- RE.r_addend, *RE.Fixup) {}
-
PPCELFObjectWriter::PPCELFObjectWriter(bool Is64Bit, uint8_t OSABI)
: MCELFObjectTargetWriter(Is64Bit, OSABI,
Is64Bit ? ELF::EM_PPC64 : ELF::EM_PPC,
@@ -240,47 +223,6 @@ const MCSymbol *PPCELFObjectWriter::undefinedExplicitRelSym(const MCValue &Targe
return NULL;
}
-void PPCELFObjectWriter::
-adjustFixupOffset(const MCFixup &Fixup, uint64_t &RelocOffset) {
- switch ((unsigned)Fixup.getKind()) {
- case PPC::fixup_ppc_ha16:
- case PPC::fixup_ppc_lo16:
- case PPC::fixup_ppc_lo16_ds:
- RelocOffset += 2;
- break;
- default:
- break;
- }
-}
-
-// The standard sorter only sorts on the r_offset field, but PowerPC can
-// have multiple relocations at the same offset. Sort secondarily on the
-// relocation type to avoid nondeterminism.
-void PPCELFObjectWriter::sortRelocs(const MCAssembler &Asm,
- std::vector<ELFRelocationEntry> &Relocs) {
-
- // Copy to a temporary vector of relocation entries having a different
- // sort function.
- std::vector<PPCELFRelocationEntry> TmpRelocs;
-
- for (std::vector<ELFRelocationEntry>::iterator R = Relocs.begin();
- R != Relocs.end(); ++R) {
- TmpRelocs.push_back(PPCELFRelocationEntry(*R));
- }
-
- // Sort in place by ascending r_offset and descending r_type.
- array_pod_sort(TmpRelocs.begin(), TmpRelocs.end());
-
- // Copy back to the original vector.
- unsigned I = 0;
- for (std::vector<PPCELFRelocationEntry>::iterator R = TmpRelocs.begin();
- R != TmpRelocs.end(); ++R, ++I) {
- Relocs[I] = ELFRelocationEntry(R->r_offset, R->Index, R->Type,
- R->Symbol, R->r_addend, *R->Fixup);
- }
-}
-
-
MCObjectWriter *llvm::createPPCELFObjectWriter(raw_ostream &OS,
bool Is64Bit,
uint8_t OSABI) {
diff --git a/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp b/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
index 2223cd623c..3f04a4ec0a 100644
--- a/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
+++ b/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
@@ -142,7 +142,7 @@ unsigned PPCMCCodeEmitter::getHA16Encoding(const MCInst &MI, unsigned OpNo,
if (MO.isReg() || MO.isImm()) return getMachineOpValue(MI, MO, Fixups);
// Add a fixup for the branch target.
- Fixups.push_back(MCFixup::Create(0, MO.getExpr(),
+ Fixups.push_back(MCFixup::Create(2, MO.getExpr(),
(MCFixupKind)PPC::fixup_ppc_ha16));
return 0;
}
@@ -153,7 +153,7 @@ unsigned PPCMCCodeEmitter::getLO16Encoding(const MCInst &MI, unsigned OpNo,
if (MO.isReg() || MO.isImm()) return getMachineOpValue(MI, MO, Fixups);
// Add a fixup for the branch target.
- Fixups.push_back(MCFixup::Create(0, MO.getExpr(),
+ Fixups.push_back(MCFixup::Create(2, MO.getExpr(),
(MCFixupKind)PPC::fixup_ppc_lo16));
return 0;
}
@@ -170,7 +170,7 @@ unsigned PPCMCCodeEmitter::getMemRIEncoding(const MCInst &MI, unsigned OpNo,
return (getMachineOpValue(MI, MO, Fixups) & 0xFFFF) | RegBits;
// Add a fixup for the displacement field.
- Fixups.push_back(MCFixup::Create(0, MO.getExpr(),
+ Fixups.push_back(MCFixup::Create(2, MO.getExpr(),
(MCFixupKind)PPC::fixup_ppc_lo16));
return RegBits;
}
@@ -188,7 +188,7 @@ unsigned PPCMCCodeEmitter::getMemRIXEncoding(const MCInst &MI, unsigned OpNo,
return (getMachineOpValue(MI, MO, Fixups) & 0x3FFF) | RegBits;
// Add a fixup for the displacement field.
- Fixups.push_back(MCFixup::Create(0, MO.getExpr(),
+ Fixups.push_back(MCFixup::Create(2, MO.getExpr(),
(MCFixupKind)PPC::fixup_ppc_lo16_ds));
return RegBits;
}
diff --git a/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp b/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
index a01fa44a9a..2da30f9038 100644
--- a/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
+++ b/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
@@ -58,7 +58,7 @@ static MCSubtargetInfo *createPPCMCSubtargetInfo(StringRef TT, StringRef CPU,
return X;
}
-static MCAsmInfo *createPPCMCAsmInfo(StringRef TT) {
+static MCAsmInfo *createPPCMCAsmInfo(const MCRegisterInfo &MRI, StringRef TT) {
Triple TheTriple(TT);
bool isPPC64 = TheTriple.getArch() == Triple::ppc64;
@@ -69,9 +69,10 @@ static MCAsmInfo *createPPCMCAsmInfo(StringRef TT) {
MAI = new PPCLinuxMCAsmInfo(isPPC64);
// Initial state of the frame pointer is R1.
- MachineLocation Dst(MachineLocation::VirtualFP);
- MachineLocation Src(isPPC64? PPC::X1 : PPC::R1, 0);
- MAI->addInitialFrameState(0, Dst, Src);
+ unsigned Reg = isPPC64 ? PPC::X1 : PPC::R1;
+ MCCFIInstruction Inst =
+ MCCFIInstruction::createDefCfa(0, MRI.getDwarfRegNum(Reg, true), 0);
+ MAI->addInitialFrameState(Inst);
return MAI;
}
diff --git a/lib/Target/PowerPC/PPCFrameLowering.cpp b/lib/Target/PowerPC/PPCFrameLowering.cpp
index cd70aeed87..1f0c3c4b5d 100644
--- a/lib/Target/PowerPC/PPCFrameLowering.cpp
+++ b/lib/Target/PowerPC/PPCFrameLowering.cpp
@@ -1168,6 +1168,7 @@ PPCFrameLowering::spillCalleeSavedRegisters(MachineBasicBlock &MBB,
FuncInfo->addMustSaveCR(Reg);
} else {
CRSpilled = true;
+ FuncInfo->setSpillsCR();
// 32-bit: FP-relative. Note that we made sure CR2-CR4 all have
// the same frame index in PPCRegisterInfo::hasReservedSpillSlot.
diff --git a/lib/Target/PowerPC/PPCISelLowering.cpp b/lib/Target/PowerPC/PPCISelLowering.cpp
index 3819bc8f15..eee2bb87de 100644
--- a/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -16,6 +16,7 @@
#include "PPCMachineFunctionInfo.h"
#include "PPCPerfectShuffle.h"
#include "PPCTargetMachine.h"
+#include "PPCTargetObjectFile.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/CodeGen/CallingConvLower.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
@@ -64,6 +65,9 @@ static TargetLoweringObjectFile *CreateTLOF(const PPCTargetMachine &TM) {
if (TM.getSubtargetImpl()->isDarwin())
return new TargetLoweringObjectFileMachO();
+ if (TM.getSubtargetImpl()->isSVR4ABI())
+ return new PPC64LinuxTargetObjectFile();
+
return new TargetLoweringObjectFileELF();
}
@@ -662,6 +666,7 @@ const char *PPCTargetLowering::getTargetNodeName(unsigned Opcode) const {
case PPCISD::ADDIS_DTPREL_HA: return "PPCISD::ADDIS_DTPREL_HA";
case PPCISD::ADDI_DTPREL_L: return "PPCISD::ADDI_DTPREL_L";
case PPCISD::VADD_SPLAT: return "PPCISD::VADD_SPLAT";
+ case PPCISD::SC: return "PPCISD::SC";
}
}
diff --git a/lib/Target/PowerPC/PPCISelLowering.h b/lib/Target/PowerPC/PPCISelLowering.h
index b219de38d5..2a1cc121da 100644
--- a/lib/Target/PowerPC/PPCISelLowering.h
+++ b/lib/Target/PowerPC/PPCISelLowering.h
@@ -175,61 +175,61 @@ namespace llvm {
/// G8RC = ADDIS_GOT_TPREL_HA %X2, Symbol - Used by the initial-exec
/// TLS model, produces an ADDIS8 instruction that adds the GOT
- /// base to sym@got@tprel@ha.
+ /// base to sym\@got\@tprel\@ha.
ADDIS_GOT_TPREL_HA,
/// G8RC = LD_GOT_TPREL_L Symbol, G8RReg - Used by the initial-exec
/// TLS model, produces a LD instruction with base register G8RReg
- /// and offset sym@got@tprel@l. This completes the addition that
+ /// and offset sym\@got\@tprel\@l. This completes the addition that
/// finds the offset of "sym" relative to the thread pointer.
LD_GOT_TPREL_L,
/// G8RC = ADD_TLS G8RReg, Symbol - Used by the initial-exec TLS
/// model, produces an ADD instruction that adds the contents of
/// G8RReg to the thread pointer. Symbol contains a relocation
- /// sym@tls which is to be replaced by the thread pointer and
+ /// sym\@tls which is to be replaced by the thread pointer and
/// identifies to the linker that the instruction is part of a
/// TLS sequence.
ADD_TLS,
/// G8RC = ADDIS_TLSGD_HA %X2, Symbol - For the general-dynamic TLS
/// model, produces an ADDIS8 instruction that adds the GOT base
- /// register to sym@got@tlsgd@ha.
+ /// register to sym\@got\@tlsgd\@ha.
ADDIS_TLSGD_HA,
/// G8RC = ADDI_TLSGD_L G8RReg, Symbol - For the general-dynamic TLS
/// model, produces an ADDI8 instruction that adds G8RReg to
- /// sym@got@tlsgd@l.
+ /// sym\@got\@tlsgd\@l.
ADDI_TLSGD_L,
/// G8RC = GET_TLS_ADDR %X3, Symbol - For the general-dynamic TLS
- /// model, produces a call to __tls_get_addr(sym@tlsgd).
+ /// model, produces a call to __tls_get_addr(sym\@tlsgd).
GET_TLS_ADDR,
/// G8RC = ADDIS_TLSLD_HA %X2, Symbol - For the local-dynamic TLS
/// model, produces an ADDIS8 instruction that adds the GOT base
- /// register to sym@got@tlsld@ha.
+ /// register to sym\@got\@tlsld\@ha.
ADDIS_TLSLD_HA,
/// G8RC = ADDI_TLSLD_L G8RReg, Symbol - For the local-dynamic TLS
/// model, produces an ADDI8 instruction that adds G8RReg to
- /// sym@got@tlsld@l.
+ /// sym\@got\@tlsld\@l.
ADDI_TLSLD_L,
/// G8RC = GET_TLSLD_ADDR %X3, Symbol - For the local-dynamic TLS
- /// model, produces a call to __tls_get_addr(sym@tlsld).
+ /// model, produces a call to __tls_get_addr(sym\@tlsld).
GET_TLSLD_ADDR,
/// G8RC = ADDIS_DTPREL_HA %X3, Symbol, Chain - For the
/// local-dynamic TLS model, produces an ADDIS8 instruction
- /// that adds X3 to sym@dtprel@ha. The Chain operand is needed
+ /// that adds X3 to sym\@dtprel\@ha. The Chain operand is needed
/// to tie this in place following a copy to %X3 from the result
/// of a GET_TLSLD_ADDR.
ADDIS_DTPREL_HA,
/// G8RC = ADDI_DTPREL_L G8RReg, Symbol - For the local-dynamic TLS
/// model, produces an ADDI8 instruction that adds G8RReg to
- /// sym@got@dtprel@l.
+ /// sym\@got\@dtprel\@l.
ADDI_DTPREL_L,
/// VRRC = VADD_SPLAT Elt, EltSize - Temporary node to be expanded
@@ -238,6 +238,10 @@ namespace llvm {
/// optimizations due to constant folding.
VADD_SPLAT,
+ /// CHAIN = SC CHAIN, Imm128 - System call. The 7-bit unsigned
+ /// operand identifies the operating system entry point.
+ SC,
+
/// CHAIN = STBRX CHAIN, GPRC, Ptr, Type - This is a
/// byte-swapping store instruction. It byte-swaps the low "Type" bits of
/// the GPRC input, then stores it through Ptr. Type can be either i16 or
@@ -266,16 +270,16 @@ namespace llvm {
/// G8RC = ADDIS_TOC_HA %X2, Symbol - For medium and large code model,
/// produces an ADDIS8 instruction that adds the TOC base register to
- /// sym@toc@ha.
+ /// sym\@toc\@ha.
ADDIS_TOC_HA,
/// G8RC = LD_TOC_L Symbol, G8RReg - For medium and large code model,
/// produces a LD instruction with base register G8RReg and offset
- /// sym@toc@l. Preceded by an ADDIS_TOC_HA to form a full 32-bit offset.
+ /// sym\@toc\@l. Preceded by an ADDIS_TOC_HA to form a full 32-bit offset.
LD_TOC_L,
/// G8RC = ADDI_TOC_L G8RReg, Symbol - For medium code model, produces
- /// an ADDI8 instruction that adds G8RReg to sym@toc@l.
+ /// an ADDI8 instruction that adds G8RReg to sym\@toc\@l.
/// Preceded by an ADDIS_TOC_HA to form a full 32-bit offset.
ADDI_TOC_L
};
@@ -450,7 +454,7 @@ namespace llvm {
/// It returns EVT::Other if the type should be determined using generic
/// target-independent logic.
virtual EVT
- getOptimalMemOpType(uint64_t Size, unsigned DstAlign, unsigned SrcAlign,
+ getOptimalMemOpType(uint64_t Size, unsigned DstAlign, unsigned SrcAlign,
bool IsMemset, bool ZeroMemset, bool MemcpyStrSrc,
MachineFunction &MF) const;
diff --git a/lib/Target/PowerPC/PPCInstrFormats.td b/lib/Target/PowerPC/PPCInstrFormats.td
index b6f4e85215..a24405851c 100644
--- a/lib/Target/PowerPC/PPCInstrFormats.td
+++ b/lib/Target/PowerPC/PPCInstrFormats.td
@@ -145,6 +145,19 @@ class BForm_2<bits<6> opcode, bits<5> bo, bits<5> bi, bit aa, bit lk,
let Inst{31} = lk;
}
+// 1.7.3 SC-Form
+class SCForm<bits<6> opcode, bits<1> xo,
+ dag OOL, dag IOL, string asmstr, InstrItinClass itin,
+ list<dag> pattern>
+ : I<opcode, OOL, IOL, asmstr, itin> {
+ bits<7> LEV;
+
+ let Pattern = pattern;
+
+ let Inst{20-26} = LEV;
+ let Inst{30} = xo;
+}
+
// 1.7.4 D-Form
class DForm_base<bits<6> opcode, dag OOL, dag IOL, string asmstr,
InstrItinClass itin, list<dag> pattern>
diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td
index 4763069f25..9c39b34ab0 100644
--- a/lib/Target/PowerPC/PPCInstrInfo.td
+++ b/lib/Target/PowerPC/PPCInstrInfo.td
@@ -162,6 +162,10 @@ def PPCeh_sjlj_longjmp : SDNode<"PPCISD::EH_SJLJ_LONGJMP",
SDTypeProfile<0, 1, [SDTCisPtrTy<0>]>,
[SDNPHasChain, SDNPSideEffect]>;
+def SDT_PPCsc : SDTypeProfile<0, 1, [SDTCisInt<0>]>;
+def PPCsc : SDNode<"PPCISD::SC", SDT_PPCsc,
+ [SDNPHasChain, SDNPSideEffect]>;
+
def PPCvcmp : SDNode<"PPCISD::VCMP" , SDT_PPCvcmp, []>;
def PPCvcmp_o : SDNode<"PPCISD::VCMPo", SDT_PPCvcmp, [SDNPOutGlue]>;
@@ -987,6 +991,12 @@ let isBranch = 1, isTerminator = 1 in {
"#EH_SjLj_Setup\t$dst", []>;
}
+// System call.
+let PPC970_Unit = 7 in {
+ def SC : SCForm<17, 1, (outs), (ins i32imm:$lev),
+ "sc $lev", BrB, [(PPCsc (i32 imm:$lev))]>;
+}
+
// DCB* instructions.
def DCBA : DCB_Form<758, 0, (outs), (ins memrr:$dst),
"dcba $dst", LdStDCBF, [(int_ppc_dcba xoaddr:$dst)]>,
diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp
index 14dc794195..0b099edff4 100644
--- a/lib/Target/PowerPC/PPCTargetMachine.cpp
+++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
@@ -48,6 +48,7 @@ PPCTargetMachine::PPCTargetMachine(const Target &T, StringRef TT,
// The binutils for the BG/P are too old for CFI.
if (Subtarget.isBGP())
setMCUseCFI(false);
+ initAsmInfo();
}
void PPC32TargetMachine::anchor() { }
diff --git a/lib/Target/PowerPC/PPCTargetObjectFile.cpp b/lib/Target/PowerPC/PPCTargetObjectFile.cpp
new file mode 100644
index 0000000000..90e4f15452
--- /dev/null
+++ b/lib/Target/PowerPC/PPCTargetObjectFile.cpp
@@ -0,0 +1,57 @@
+//===-- PPCTargetObjectFile.cpp - PPC Object Info -------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "PPCTargetObjectFile.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCExpr.h"
+#include "llvm/MC/MCSectionELF.h"
+#include "llvm/Target/Mangler.h"
+
+using namespace llvm;
+
+void
+PPC64LinuxTargetObjectFile::
+Initialize(MCContext &Ctx, const TargetMachine &TM) {
+ TargetLoweringObjectFileELF::Initialize(Ctx, TM);
+ InitializeELF(TM.Options.UseInitArray);
+}
+
+const MCSection * PPC64LinuxTargetObjectFile::
+SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
+ Mangler *Mang, const TargetMachine &TM) const {
+
+ const MCSection *DefaultSection =
+ TargetLoweringObjectFileELF::SelectSectionForGlobal(GV, Kind, Mang, TM);
+
+ if (DefaultSection != ReadOnlySection)
+ return DefaultSection;
+
+ // Here override ReadOnlySection to DataRelROSection for PPC64 SVR4 ABI
+ // when we have a constant that contains global relocations. This is
+ // necessary because of this ABI's handling of pointers to functions in
+ // a shared library. The address of a function is actually the address
+ // of a function descriptor, which resides in the .opd section. Generated
+ // code uses the descriptor directly rather than going via the GOT as some
+ // other ABIs do, which means that initialized function pointers must
+ // reference the descriptor. The linker must convert copy relocs of
+ // pointers to functions in shared libraries into dynamic relocations,
+ // because of an ordering problem with initialization of copy relocs and
+ // PLT entries. The dynamic relocation will be initialized by the dynamic
+ // linker, so we must use DataRelROSection instead of ReadOnlySection.
+ // For more information, see the description of ELIMINATE_COPY_RELOCS in
+ // GNU ld.
+ const GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV);
+
+ if (GVar && GVar->isConstant() &&
+ (GVar->getInitializer()->getRelocationInfo() ==
+ Constant::GlobalRelocations))
+ return DataRelROSection;
+
+ return DefaultSection;
+}
diff --git a/lib/Target/PowerPC/PPCTargetObjectFile.h b/lib/Target/PowerPC/PPCTargetObjectFile.h
new file mode 100644
index 0000000000..9203e23574
--- /dev/null
+++ b/lib/Target/PowerPC/PPCTargetObjectFile.h
@@ -0,0 +1,32 @@
+//===-- PPCTargetObjectFile.h - PPC Object Info -----------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TARGET_PPC_TARGETOBJECTFILE_H
+#define LLVM_TARGET_PPC_TARGETOBJECTFILE_H
+
+#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
+#include "llvm/Target/TargetLoweringObjectFile.h"
+#include "llvm/Target/TargetMachine.h"
+
+namespace llvm {
+
+ /// PPC64LinuxTargetObjectFile - This implementation is used for
+ /// 64-bit PowerPC Linux.
+ class PPC64LinuxTargetObjectFile : public TargetLoweringObjectFileELF {
+
+ virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
+
+ virtual const MCSection *
+ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
+ Mangler *Mang, const TargetMachine &TM) const;
+ };
+
+} // end namespace llvm
+
+#endif
diff --git a/lib/Target/R600/AMDGPUTargetMachine.cpp b/lib/Target/R600/AMDGPUTargetMachine.cpp
index 31fbf32d0c..7175ec941a 100644
--- a/lib/Target/R600/AMDGPUTargetMachine.cpp
+++ b/lib/Target/R600/AMDGPUTargetMachine.cpp
@@ -70,6 +70,7 @@ AMDGPUTargetMachine::AMDGPUTargetMachine(const Target &T, StringRef TT,
InstrInfo = new SIInstrInfo(*this);
TLInfo = new SITargetLowering(*this);
}
+ initAsmInfo();
}
AMDGPUTargetMachine::~AMDGPUTargetMachine() {
diff --git a/lib/Target/R600/AMDILDeviceInfo.cpp b/lib/Target/R600/AMDILDeviceInfo.cpp
index 178795936a..126514b976 100644
--- a/lib/Target/R600/AMDILDeviceInfo.cpp
+++ b/lib/Target/R600/AMDILDeviceInfo.cpp
@@ -81,7 +81,8 @@ AMDGPUDevice* getDeviceFromName(const std::string &deviceName,
return new AMDGPUNIDevice(ptr);
} else if (deviceName == "SI" ||
deviceName == "tahiti" || deviceName == "pitcairn" ||
- deviceName == "verde" || deviceName == "oland") {
+ deviceName == "verde" || deviceName == "oland" ||
+ deviceName == "hainan") {
return new AMDGPUSIDevice(ptr);
} else {
#if DEBUG
diff --git a/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.cpp b/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.cpp
index 45d009c2a0..6f66aa898a 100644
--- a/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.cpp
+++ b/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.cpp
@@ -78,7 +78,7 @@ static MCCodeEmitter *createAMDGPUMCCodeEmitter(const MCInstrInfo &MCII,
if (STI.getFeatureBits() & AMDGPU::Feature64BitPtr) {
return createSIMCCodeEmitter(MCII, MRI, STI, Ctx);
} else {
- return createR600MCCodeEmitter(MCII, MRI, STI, Ctx);
+ return createR600MCCodeEmitter(MCII, MRI);
}
}
diff --git a/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h b/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h
index 09d0d5b61c..95c572c21b 100644
--- a/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h
+++ b/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h
@@ -32,9 +32,7 @@ class raw_ostream;
extern Target TheAMDGPUTarget;
MCCodeEmitter *createR600MCCodeEmitter(const MCInstrInfo &MCII,
- const MCRegisterInfo &MRI,
- const MCSubtargetInfo &STI,
- MCContext &Ctx);
+ const MCRegisterInfo &MRI);
MCCodeEmitter *createSIMCCodeEmitter(const MCInstrInfo &MCII,
const MCRegisterInfo &MRI,
diff --git a/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp b/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp
index 271a974734..3404844435 100644
--- a/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp
+++ b/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp
@@ -35,14 +35,11 @@ class R600MCCodeEmitter : public AMDGPUMCCodeEmitter {
void operator=(const R600MCCodeEmitter &) LLVM_DELETED_FUNCTION;
const MCInstrInfo &MCII;
const MCRegisterInfo &MRI;
- const MCSubtargetInfo &STI;
- MCContext &Ctx;
public:
- R600MCCodeEmitter(const MCInstrInfo &mcii, const MCRegisterInfo &mri,
- const MCSubtargetInfo &sti, MCContext &ctx)
- : MCII(mcii), MRI(mri), STI(sti), Ctx(ctx) { }
+ R600MCCodeEmitter(const MCInstrInfo &mcii, const MCRegisterInfo &mri)
+ : MCII(mcii), MRI(mri) { }
/// \brief Encode the instruction and write it to the OS.
virtual void EncodeInstruction(const MCInst &MI, raw_ostream &OS,
@@ -98,10 +95,8 @@ enum TextureTypes {
};
MCCodeEmitter *llvm::createR600MCCodeEmitter(const MCInstrInfo &MCII,
- const MCRegisterInfo &MRI,
- const MCSubtargetInfo &STI,
- MCContext &Ctx) {
- return new R600MCCodeEmitter(MCII, MRI, STI, Ctx);
+ const MCRegisterInfo &MRI) {
+ return new R600MCCodeEmitter(MCII, MRI);
}
void R600MCCodeEmitter::EncodeInstruction(const MCInst &MI, raw_ostream &OS,
diff --git a/lib/Target/R600/Processors.td b/lib/Target/R600/Processors.td
index 5ee1c0d8ae..0cbe919d81 100644
--- a/lib/Target/R600/Processors.td
+++ b/lib/Target/R600/Processors.td
@@ -45,3 +45,4 @@ def : Proc<"tahiti", SI_Itin, [Feature64BitPtr, FeatureFP64]>;
def : Proc<"pitcairn", SI_Itin, [Feature64BitPtr, FeatureFP64]>;
def : Proc<"verde", SI_Itin, [Feature64BitPtr, FeatureFP64]>;
def : Proc<"oland", SI_Itin, [Feature64BitPtr, FeatureFP64]>;
+def : Proc<"hainan", SI_Itin, [Feature64BitPtr, FeatureFP64]>;
diff --git a/lib/Target/Sparc/SparcTargetMachine.cpp b/lib/Target/Sparc/SparcTargetMachine.cpp
index 60bceb708f..3e7a24aecf 100644
--- a/lib/Target/Sparc/SparcTargetMachine.cpp
+++ b/lib/Target/Sparc/SparcTargetMachine.cpp
@@ -37,6 +37,7 @@ SparcTargetMachine::SparcTargetMachine(const Target &T, StringRef TT,
InstrInfo(Subtarget),
TLInfo(*this), TSInfo(*this),
FrameLowering(Subtarget) {
+ initAsmInfo();
}
namespace {
diff --git a/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp b/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
index c7725a1459..7f2159f79e 100644
--- a/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
+++ b/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
@@ -8,6 +8,7 @@
//===----------------------------------------------------------------------===//
#include "MCTargetDesc/SystemZMCTargetDesc.h"
+#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
@@ -250,46 +251,6 @@ public:
bool isS32Imm() const { return isImm(-(1LL << 31), (1LL << 31) - 1); }
};
-// Maps of asm register numbers to LLVM register numbers, with 0 indicating
-// an invalid register. We don't use register class directly because that
-// specifies the allocation order.
-static const unsigned GR32Regs[] = {
- SystemZ::R0W, SystemZ::R1W, SystemZ::R2W, SystemZ::R3W,
- SystemZ::R4W, SystemZ::R5W, SystemZ::R6W, SystemZ::R7W,
- SystemZ::R8W, SystemZ::R9W, SystemZ::R10W, SystemZ::R11W,
- SystemZ::R12W, SystemZ::R13W, SystemZ::R14W, SystemZ::R15W
-};
-static const unsigned GR64Regs[] = {
- SystemZ::R0D, SystemZ::R1D, SystemZ::R2D, SystemZ::R3D,
- SystemZ::R4D, SystemZ::R5D, SystemZ::R6D, SystemZ::R7D,
- SystemZ::R8D, SystemZ::R9D, SystemZ::R10D, SystemZ::R11D,
- SystemZ::R12D, SystemZ::R13D, SystemZ::R14D, SystemZ::R15D
-};
-static const unsigned GR128Regs[] = {
- SystemZ::R0Q, 0, SystemZ::R2Q, 0,
- SystemZ::R4Q, 0, SystemZ::R6Q, 0,
- SystemZ::R8Q, 0, SystemZ::R10Q, 0,
- SystemZ::R12Q, 0, SystemZ::R14Q, 0
-};
-static const unsigned FP32Regs[] = {
- SystemZ::F0S, SystemZ::F1S, SystemZ::F2S, SystemZ::F3S,
- SystemZ::F4S, SystemZ::F5S, SystemZ::F6S, SystemZ::F7S,
- SystemZ::F8S, SystemZ::F9S, SystemZ::F10S, SystemZ::F11S,
- SystemZ::F12S, SystemZ::F13S, SystemZ::F14S, SystemZ::F15S
-};
-static const unsigned FP64Regs[] = {
- SystemZ::F0D, SystemZ::F1D, SystemZ::F2D, SystemZ::F3D,
- SystemZ::F4D, SystemZ::F5D, SystemZ::F6D, SystemZ::F7D,
- SystemZ::F8D, SystemZ::F9D, SystemZ::F10D, SystemZ::F11D,
- SystemZ::F12D, SystemZ::F13D, SystemZ::F14D, SystemZ::F15D
-};
-static const unsigned FP128Regs[] = {
- SystemZ::F0Q, SystemZ::F1Q, 0, 0,
- SystemZ::F4Q, SystemZ::F5Q, 0, 0,
- SystemZ::F8Q, SystemZ::F9Q, 0, 0,
- SystemZ::F12Q, SystemZ::F13Q, 0, 0
-};
-
class SystemZAsmParser : public MCTargetAsmParser {
#define GET_ASSEMBLER_HEADER
#include "SystemZGenAsmMatcher.inc"
@@ -349,25 +310,28 @@ public:
// Used by the TableGen code to parse particular operand types.
OperandMatchResultTy
parseGR32(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseRegister(Operands, 'r', GR32Regs, SystemZOperand::GR32Reg);
+ return parseRegister(Operands, 'r', SystemZMC::GR32Regs,
+ SystemZOperand::GR32Reg);
}
OperandMatchResultTy
parseGR64(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseRegister(Operands, 'r', GR64Regs, SystemZOperand::GR64Reg);
+ return parseRegister(Operands, 'r', SystemZMC::GR64Regs,
+ SystemZOperand::GR64Reg);
}
OperandMatchResultTy
parseGR128(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseRegister(Operands, 'r', GR128Regs, SystemZOperand::GR128Reg);
+ return parseRegister(Operands, 'r', SystemZMC::GR128Regs,
+ SystemZOperand::GR128Reg);
}
OperandMatchResultTy
parseADDR32(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseRegister(Operands, 'r', GR32Regs, SystemZOperand::ADDR32Reg,
- true);
+ return parseRegister(Operands, 'r', SystemZMC::GR32Regs,
+ SystemZOperand::ADDR32Reg, true);
}
OperandMatchResultTy
parseADDR64(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseRegister(Operands, 'r', GR64Regs, SystemZOperand::ADDR64Reg,
- true);
+ return parseRegister(Operands, 'r', SystemZMC::GR64Regs,
+ SystemZOperand::ADDR64Reg, true);
}
OperandMatchResultTy
parseADDR128(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
@@ -375,30 +339,47 @@ public:
}
OperandMatchResultTy
parseFP32(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseRegister(Operands, 'f', FP32Regs, SystemZOperand::FP32Reg);
+ return parseRegister(Operands, 'f', SystemZMC::FP32Regs,
+ SystemZOperand::FP32Reg);
}
OperandMatchResultTy
parseFP64(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseRegister(Operands, 'f', FP64Regs, SystemZOperand::FP64Reg);
+ return parseRegister(Operands, 'f', SystemZMC::FP64Regs,
+ SystemZOperand::FP64Reg);
}
OperandMatchResultTy
parseFP128(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseRegister(Operands, 'f', FP128Regs, SystemZOperand::FP128Reg);
+ return parseRegister(Operands, 'f', SystemZMC::FP128Regs,
+ SystemZOperand::FP128Reg);
}
OperandMatchResultTy
parseBDAddr32(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseAddress(Operands, GR32Regs, SystemZOperand::ADDR32Reg, false);
+ return parseAddress(Operands, SystemZMC::GR32Regs,
+ SystemZOperand::ADDR32Reg, false);
}
OperandMatchResultTy
parseBDAddr64(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseAddress(Operands, GR64Regs, SystemZOperand::ADDR64Reg, false);
+ return parseAddress(Operands, SystemZMC::GR64Regs,
+ SystemZOperand::ADDR64Reg, false);
}
OperandMatchResultTy
parseBDXAddr64(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
- return parseAddress(Operands, GR64Regs, SystemZOperand::ADDR64Reg, true);
+ return parseAddress(Operands, SystemZMC::GR64Regs,
+ SystemZOperand::ADDR64Reg, true);
}
OperandMatchResultTy
parseAccessReg(SmallVectorImpl<MCParsedAsmOperand*> &Operands);
+ OperandMatchResultTy
+ parsePCRel(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
+ int64_t MinVal, int64_t MaxVal);
+ OperandMatchResultTy
+ parsePCRel16(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
+ return parsePCRel(Operands, -(1LL << 16), (1LL << 16) - 1);
+ }
+ OperandMatchResultTy
+ parsePCRel32(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
+ return parsePCRel(Operands, -(1LL << 32), (1LL << 32) - 1);
+ }
};
}
@@ -502,7 +483,8 @@ SystemZAsmParser::parseAddress(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
// Parse the first register.
Register Reg;
- OperandMatchResultTy Result = parseRegister(Reg, 'r', GR64Regs, true);
+ OperandMatchResultTy Result = parseRegister(Reg, 'r', SystemZMC::GR64Regs,
+ true);
if (Result != MatchOperand_Success)
return Result;
@@ -517,7 +499,7 @@ SystemZAsmParser::parseAddress(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
}
Index = Reg.Number;
- Result = parseRegister(Reg, 'r', GR64Regs, true);
+ Result = parseRegister(Reg, 'r', SystemZMC::GR64Regs, true);
if (Result != MatchOperand_Success)
return Result;
}
@@ -546,9 +528,9 @@ bool SystemZAsmParser::ParseRegister(unsigned &RegNo, SMLoc &StartLoc,
if (parseRegister(Reg))
return Error(Reg.StartLoc, "register expected");
if (Reg.Prefix == 'r' && Reg.Number < 16)
- RegNo = GR64Regs[Reg.Number];
+ RegNo = SystemZMC::GR64Regs[Reg.Number];
else if (Reg.Prefix == 'f' && Reg.Number < 16)
- RegNo = FP64Regs[Reg.Number];
+ RegNo = SystemZMC::FP64Regs[Reg.Number];
else
return Error(Reg.StartLoc, "invalid register");
StartLoc = Reg.StartLoc;
@@ -683,6 +665,37 @@ parseAccessReg(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
return MatchOperand_Success;
}
+SystemZAsmParser::OperandMatchResultTy SystemZAsmParser::
+parsePCRel(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
+ int64_t MinVal, int64_t MaxVal) {
+ MCContext &Ctx = getContext();
+ MCStreamer &Out = getStreamer();
+ const MCExpr *Expr;
+ SMLoc StartLoc = Parser.getTok().getLoc();
+ if (getParser().parseExpression(Expr))
+ return MatchOperand_NoMatch;
+
+ // For consistency with the GNU assembler, treat immediates as offsets
+ // from ".".
+ if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr)) {
+ int64_t Value = CE->getValue();
+ if ((Value & 1) || Value < MinVal || Value > MaxVal) {
+ Error(StartLoc, "offset out of range");
+ return MatchOperand_ParseFail;
+ }
+ MCSymbol *Sym = Ctx.CreateTempSymbol();
+ Out.EmitLabel(Sym);
+ const MCExpr *Base = MCSymbolRefExpr::Create(Sym, MCSymbolRefExpr::VK_None,
+ Ctx);
+ Expr = Value == 0 ? Base : MCBinaryExpr::CreateAdd(Base, Expr, Ctx);
+ }
+
+ SMLoc EndLoc =
+ SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
+ Operands.push_back(SystemZOperand::createImm(Expr, StartLoc, EndLoc));
+ return MatchOperand_Success;
+}
+
// Force static initialization.
extern "C" void LLVMInitializeSystemZAsmParser() {
RegisterMCAsmParser<SystemZAsmParser> X(TheSystemZTarget);
diff --git a/lib/Target/SystemZ/CMakeLists.txt b/lib/Target/SystemZ/CMakeLists.txt
index 67b17fcc59..757d5a8898 100644
--- a/lib/Target/SystemZ/CMakeLists.txt
+++ b/lib/Target/SystemZ/CMakeLists.txt
@@ -4,6 +4,7 @@ tablegen(LLVM SystemZGenAsmMatcher.inc -gen-asm-matcher)
tablegen(LLVM SystemZGenAsmWriter.inc -gen-asm-writer)
tablegen(LLVM SystemZGenCallingConv.inc -gen-callingconv)
tablegen(LLVM SystemZGenDAGISel.inc -gen-dag-isel)
+tablegen(LLVM SystemZGenDisassemblerTables.inc -gen-disassembler)
tablegen(LLVM SystemZGenMCCodeEmitter.inc -gen-emitter -mc-emitter)
tablegen(LLVM SystemZGenInstrInfo.inc -gen-instr-info)
tablegen(LLVM SystemZGenRegisterInfo.inc -gen-register-info)
@@ -27,6 +28,7 @@ add_llvm_target(SystemZCodeGen
add_dependencies(LLVMSystemZCodeGen intrinsics_gen)
add_subdirectory(AsmParser)
+add_subdirectory(Disassembler)
add_subdirectory(InstPrinter)
add_subdirectory(TargetInfo)
add_subdirectory(MCTargetDesc)
diff --git a/lib/Target/SystemZ/Disassembler/CMakeLists.txt b/lib/Target/SystemZ/Disassembler/CMakeLists.txt
new file mode 100644
index 0000000000..5bc1859816
--- /dev/null
+++ b/lib/Target/SystemZ/Disassembler/CMakeLists.txt
@@ -0,0 +1,7 @@
+include_directories( ${CMAKE_CURRENT_BINARY_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/.. )
+
+add_llvm_library(LLVMSystemZDisassembler
+ SystemZDisassembler.cpp
+ )
+
+add_dependencies(LLVMSystemZDisassembler SystemZCommonTableGen)
diff --git a/lib/Target/SystemZ/Disassembler/LLVMBuild.txt b/lib/Target/SystemZ/Disassembler/LLVMBuild.txt
new file mode 100644
index 0000000000..c3081f5447
--- /dev/null
+++ b/lib/Target/SystemZ/Disassembler/LLVMBuild.txt
@@ -0,0 +1,23 @@
+;===-- ./lib/Target/SystemZ/Disassembler/LLVMBuild.txt ---------*- Conf -*--===;
+;
+; The LLVM Compiler Infrastructure
+;
+; This file is distributed under the University of Illinois Open Source
+; License. See LICENSE.TXT for details.
+;
+;===------------------------------------------------------------------------===;
+;
+; This is an LLVMBuild description file for the components in this subdirectory.
+;
+; For more information on the LLVMBuild system, please see:
+;
+; http://llvm.org/docs/LLVMBuild.html
+;
+;===------------------------------------------------------------------------===;
+
+[component_0]
+type = Library
+name = SystemZDisassembler
+parent = SystemZ
+required_libraries = MC Support SystemZDesc SystemZInfo
+add_to_library_groups = SystemZ
diff --git a/lib/Target/SystemZ/Disassembler/Makefile b/lib/Target/SystemZ/Disassembler/Makefile
new file mode 100644
index 0000000000..efc4cc8e9c
--- /dev/null
+++ b/lib/Target/SystemZ/Disassembler/Makefile
@@ -0,0 +1,16 @@
+##===-- lib/Target/SystemZ/Disassembler/Makefile -----------*- Makefile -*-===##
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+##===----------------------------------------------------------------------===##
+
+LEVEL = ../../../..
+LIBRARYNAME = LLVMSystemZDisassembler
+
+# Hack: we need to include 'main' x86 target directory to grab private headers
+CPP.Flags += -I$(PROJ_OBJ_DIR)/.. -I$(PROJ_SRC_DIR)/..
+
+include $(LEVEL)/Makefile.common
diff --git a/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp b/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp
new file mode 100644
index 0000000000..9a9de78224
--- /dev/null
+++ b/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp
@@ -0,0 +1,301 @@
+//===-- SystemZDisassembler.cpp - Disassembler for SystemZ ------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "SystemZ.h"
+#include "llvm/MC/MCDisassembler.h"
+#include "llvm/MC/MCFixedLenDisassembler.h"
+#include "llvm/MC/MCInst.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/Support/MemoryObject.h"
+#include "llvm/Support/TargetRegistry.h"
+
+using namespace llvm;
+
+typedef MCDisassembler::DecodeStatus DecodeStatus;
+
+namespace {
+class SystemZDisassembler : public MCDisassembler {
+public:
+ SystemZDisassembler(const MCSubtargetInfo &STI)
+ : MCDisassembler(STI) {}
+ virtual ~SystemZDisassembler() {}
+
+ // Override MCDisassembler.
+ virtual DecodeStatus getInstruction(MCInst &instr,
+ uint64_t &size,
+ const MemoryObject &region,
+ uint64_t address,
+ raw_ostream &vStream,
+ raw_ostream &cStream) const LLVM_OVERRIDE;
+};
+} // end anonymous namespace
+
+static MCDisassembler *createSystemZDisassembler(const Target &T,
+ const MCSubtargetInfo &STI) {
+ return new SystemZDisassembler(STI);
+}
+
+extern "C" void LLVMInitializeSystemZDisassembler() {
+ // Register the disassembler.
+ TargetRegistry::RegisterMCDisassembler(TheSystemZTarget,
+ createSystemZDisassembler);
+}
+
+static DecodeStatus decodeRegisterClass(MCInst &Inst, uint64_t RegNo,
+ const unsigned *Regs,
+ bool isAddress = false) {
+ assert(RegNo < 16 && "Invalid register");
+ if (!isAddress || RegNo) {
+ RegNo = Regs[RegNo];
+ if (RegNo == 0)
+ return MCDisassembler::Fail;
+ }
+ Inst.addOperand(MCOperand::CreateReg(RegNo));
+ return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeGR32BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GR32Regs);
+}
+
+static DecodeStatus DecodeGR64BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GR64Regs);
+}
+
+static DecodeStatus DecodeGR128BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GR128Regs);
+}
+
+static DecodeStatus DecodeADDR64BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::GR64Regs, true);
+}
+
+static DecodeStatus DecodeFP32BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::FP32Regs);
+}
+
+static DecodeStatus DecodeFP64BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::FP64Regs);
+}
+
+static DecodeStatus DecodeFP128BitRegisterClass(MCInst &Inst, uint64_t RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeRegisterClass(Inst, RegNo, SystemZMC::FP128Regs);
+}
+
+template<unsigned N>
+static DecodeStatus decodeUImmOperand(MCInst &Inst, uint64_t Imm) {
+ assert(isUInt<N>(Imm) && "Invalid immediate");
+ Inst.addOperand(MCOperand::CreateImm(Imm));
+ return MCDisassembler::Success;
+}
+
+template<unsigned N>
+static DecodeStatus decodeSImmOperand(MCInst &Inst, uint64_t Imm) {
+ assert(isUInt<N>(Imm) && "Invalid immediate");
+ Inst.addOperand(MCOperand::CreateImm(SignExtend64<N>(Imm)));
+ return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeAccessRegOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeUImmOperand<4>(Inst, Imm);
+}
+
+static DecodeStatus decodeU4ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<4>(Inst, Imm);
+}
+
+static DecodeStatus decodeU6ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<6>(Inst, Imm);
+}
+
+static DecodeStatus decodeU8ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<8>(Inst, Imm);
+}
+
+static DecodeStatus decodeU16ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<16>(Inst, Imm);
+}
+
+static DecodeStatus decodeU32ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeUImmOperand<32>(Inst, Imm);
+}
+
+static DecodeStatus decodeS8ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeSImmOperand<8>(Inst, Imm);
+}
+
+static DecodeStatus decodeS16ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeSImmOperand<16>(Inst, Imm);
+}
+
+static DecodeStatus decodeS32ImmOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address, const void *Decoder) {
+ return decodeSImmOperand<32>(Inst, Imm);
+}
+
+template<unsigned N>
+static DecodeStatus decodePCDBLOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address) {
+ assert(isUInt<N>(Imm) && "Invalid PC-relative offset");
+ Inst.addOperand(MCOperand::CreateImm(SignExtend64<N>(Imm) * 2 + Address));
+ return MCDisassembler::Success;
+}
+
+static DecodeStatus decodePC16DBLOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodePCDBLOperand<16>(Inst, Imm, Address);
+}
+
+static DecodeStatus decodePC32DBLOperand(MCInst &Inst, uint64_t Imm,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodePCDBLOperand<32>(Inst, Imm, Address);
+}
+
+static DecodeStatus decodeBDAddr12Operand(MCInst &Inst, uint64_t Field,
+ const unsigned *Regs) {
+ uint64_t Base = Field >> 12;
+ uint64_t Disp = Field & 0xfff;
+ assert(Base < 16 && "Invalid BDAddr12");
+ Inst.addOperand(MCOperand::CreateReg(Base == 0 ? 0 : Regs[Base]));
+ Inst.addOperand(MCOperand::CreateImm(Disp));
+ return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeBDAddr20Operand(MCInst &Inst, uint64_t Field,
+ const unsigned *Regs) {
+ uint64_t Base = Field >> 20;
+ uint64_t Disp = ((Field << 12) & 0xff000) | ((Field >> 8) & 0xfff);
+ assert(Base < 16 && "Invalid BDAddr20");
+ Inst.addOperand(MCOperand::CreateReg(Base == 0 ? 0 : Regs[Base]));
+ Inst.addOperand(MCOperand::CreateImm(SignExtend64<20>(Disp)));
+ return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeBDXAddr12Operand(MCInst &Inst, uint64_t Field,
+ const unsigned *Regs) {
+ uint64_t Index = Field >> 16;
+ uint64_t Base = (Field >> 12) & 0xf;
+ uint64_t Disp = Field & 0xfff;
+ assert(Index < 16 && "Invalid BDXAddr12");
+ Inst.addOperand(MCOperand::CreateReg(Base == 0 ? 0 : Regs[Base]));
+ Inst.addOperand(MCOperand::CreateImm(Disp));
+ Inst.addOperand(MCOperand::CreateReg(Index == 0 ? 0 : Regs[Index]));
+ return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeBDXAddr20Operand(MCInst &Inst, uint64_t Field,
+ const unsigned *Regs) {
+ uint64_t Index = Field >> 24;
+ uint64_t Base = (Field >> 20) & 0xf;
+ uint64_t Disp = ((Field & 0xfff00) >> 8) | ((Field & 0xff) << 12);
+ assert(Index < 16 && "Invalid BDXAddr20");
+ Inst.addOperand(MCOperand::CreateReg(Base == 0 ? 0 : Regs[Base]));
+ Inst.addOperand(MCOperand::CreateImm(SignExtend64<20>(Disp)));
+ Inst.addOperand(MCOperand::CreateReg(Index == 0 ? 0 : Regs[Index]));
+ return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeBDAddr32Disp12Operand(MCInst &Inst, uint64_t Field,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeBDAddr12Operand(Inst, Field, SystemZMC::GR32Regs);
+}
+
+static DecodeStatus decodeBDAddr32Disp20Operand(MCInst &Inst, uint64_t Field,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeBDAddr20Operand(Inst, Field, SystemZMC::GR32Regs);
+}
+
+static DecodeStatus decodeBDAddr64Disp12Operand(MCInst &Inst, uint64_t Field,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeBDAddr12Operand(Inst, Field, SystemZMC::GR64Regs);
+}
+
+static DecodeStatus decodeBDAddr64Disp20Operand(MCInst &Inst, uint64_t Field,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeBDAddr20Operand(Inst, Field, SystemZMC::GR64Regs);
+}
+
+static DecodeStatus decodeBDXAddr64Disp12Operand(MCInst &Inst, uint64_t Field,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeBDXAddr12Operand(Inst, Field, SystemZMC::GR64Regs);
+}
+
+static DecodeStatus decodeBDXAddr64Disp20Operand(MCInst &Inst, uint64_t Field,
+ uint64_t Address,
+ const void *Decoder) {
+ return decodeBDXAddr20Operand(Inst, Field, SystemZMC::GR64Regs);
+}
+
+#include "SystemZGenDisassemblerTables.inc"
+
+DecodeStatus SystemZDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
+ const MemoryObject &Region,
+ uint64_t Address,
+ raw_ostream &os,
+ raw_ostream &cs) const {
+ // Get the first two bytes of the instruction.
+ uint8_t Bytes[6];
+ Size = 0;
+ if (Region.readBytes(Address, 2, Bytes, 0) == -1)
+ return MCDisassembler::Fail;
+
+ // The top 2 bits of the first byte specify the size.
+ const uint8_t *Table;
+ if (Bytes[0] < 0x40) {
+ Size = 2;
+ Table = DecoderTable16;
+ } else if (Bytes[0] < 0xc0) {
+ Size = 4;
+ Table = DecoderTable32;
+ } else {
+ Size = 6;
+ Table = DecoderTable48;
+ }
+
+ // Read any remaining bytes.
+ if (Size > 2 && Region.readBytes(Address + 2, Size - 2, Bytes + 2, 0) == -1)
+ return MCDisassembler::Fail;
+
+ // Construct the instruction.
+ uint64_t Inst = 0;
+ for (uint64_t I = 0; I < Size; ++I)
+ Inst = (Inst << 8) | Bytes[I];
+
+ return decodeInstruction(Table, MI, Inst, Address, this, STI);
+}
diff --git a/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp b/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
index d73cf49808..369802b2b8 100644
--- a/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
+++ b/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
@@ -114,10 +114,26 @@ void SystemZInstPrinter::printAccessRegOperand(const MCInst *MI, int OpNum,
O << "%a" << (unsigned int)Value;
}
+void SystemZInstPrinter::printPCRelOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ const MCOperand &MO = MI->getOperand(OpNum);
+ if (MO.isImm()) {
+ O << "0x";
+ O.write_hex(MO.getImm());
+ } else
+ O << *MO.getExpr();
+}
+
void SystemZInstPrinter::printCallOperand(const MCInst *MI, int OpNum,
raw_ostream &O) {
- printOperand(MI, OpNum, O);
- O << "@PLT";
+ const MCOperand &MO = MI->getOperand(OpNum);
+ if (MO.isImm()) {
+ O << "0x";
+ O.write_hex(MO.getImm());
+ } else {
+ O << *MO.getExpr();
+ O << "@PLT";
+ }
}
void SystemZInstPrinter::printOperand(const MCInst *MI, int OpNum,
diff --git a/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h b/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
index b82e79d93c..f77282efcb 100644
--- a/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
+++ b/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
@@ -56,6 +56,7 @@ private:
void printU16ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printS32ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printU32ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
+ void printPCRelOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printCallOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printAccessRegOperand(const MCInst *MI, int OpNum, raw_ostream &O);
diff --git a/lib/Target/SystemZ/LLVMBuild.txt b/lib/Target/SystemZ/LLVMBuild.txt
index aba0de27ac..95e657f7bd 100644
--- a/lib/Target/SystemZ/LLVMBuild.txt
+++ b/lib/Target/SystemZ/LLVMBuild.txt
@@ -16,7 +16,7 @@
;===------------------------------------------------------------------------===;
[common]
-subdirectories = AsmParser InstPrinter MCTargetDesc TargetInfo
+subdirectories = AsmParser Disassembler InstPrinter MCTargetDesc TargetInfo
[component_0]
type = TargetGroup
@@ -24,6 +24,7 @@ name = SystemZ
parent = Target
has_asmparser = 1
has_asmprinter = 1
+has_disassembler = 1
has_jit = 1
[component_1]
diff --git a/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp b/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
index ea2250f546..7721b1ffab 100644
--- a/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
+++ b/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
@@ -45,30 +45,43 @@ private:
// Called by the TableGen code to get the binary encoding of operand
// MO in MI. Fixups is the list of fixups against MI.
- unsigned getMachineOpValue(const MCInst &MI, const MCOperand &MO,
+ uint64_t getMachineOpValue(const MCInst &MI, const MCOperand &MO,
SmallVectorImpl<MCFixup> &Fixups) const;
+ // Called by the TableGen code to get the binary encoding of an address.
+ // The index, if any, is encoded first, followed by the base,
+ // followed by the displacement. In a 20-bit displacement,
+ // the low 12 bits are encoded before the high 8 bits.
+ uint64_t getBDAddr12Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups) const;
+ uint64_t getBDAddr20Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups) const;
+ uint64_t getBDXAddr12Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups) const;
+ uint64_t getBDXAddr20Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups) const;
+
// Operand OpNum of MI needs a PC-relative fixup of kind Kind at
// Offset bytes from the start of MI. Add the fixup to Fixups
// and return the in-place addend, which since we're a RELA target
// is always 0.
- unsigned getPCRelEncoding(const MCInst &MI, unsigned int OpNum,
+ uint64_t getPCRelEncoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups,
unsigned Kind, int64_t Offset) const;
- unsigned getPC16DBLEncoding(const MCInst &MI, unsigned int OpNum,
+ uint64_t getPC16DBLEncoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups) const {
return getPCRelEncoding(MI, OpNum, Fixups, SystemZ::FK_390_PC16DBL, 2);
}
- unsigned getPC32DBLEncoding(const MCInst &MI, unsigned int OpNum,
+ uint64_t getPC32DBLEncoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups) const {
return getPCRelEncoding(MI, OpNum, Fixups, SystemZ::FK_390_PC32DBL, 2);
}
- unsigned getPLT16DBLEncoding(const MCInst &MI, unsigned int OpNum,
+ uint64_t getPLT16DBLEncoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups) const {
return getPCRelEncoding(MI, OpNum, Fixups, SystemZ::FK_390_PLT16DBL, 2);
}
- unsigned getPLT32DBLEncoding(const MCInst &MI, unsigned int OpNum,
+ uint64_t getPLT32DBLEncoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups) const {
return getPCRelEncoding(MI, OpNum, Fixups, SystemZ::FK_390_PLT32DBL, 2);
}
@@ -95,34 +108,73 @@ EncodeInstruction(const MCInst &MI, raw_ostream &OS,
}
}
-unsigned SystemZMCCodeEmitter::
+uint64_t SystemZMCCodeEmitter::
getMachineOpValue(const MCInst &MI, const MCOperand &MO,
SmallVectorImpl<MCFixup> &Fixups) const {
if (MO.isReg())
return Ctx.getRegisterInfo().getEncodingValue(MO.getReg());
if (MO.isImm())
- return static_cast<unsigned>(MO.getImm());
+ return static_cast<uint64_t>(MO.getImm());
llvm_unreachable("Unexpected operand type!");
}
-unsigned
-SystemZMCCodeEmitter::getPCRelEncoding(const MCInst &MI, unsigned int OpNum,
+uint64_t SystemZMCCodeEmitter::
+getBDAddr12Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups) const {
+ uint64_t Base = getMachineOpValue(MI, MI.getOperand(OpNum), Fixups);
+ uint64_t Disp = getMachineOpValue(MI, MI.getOperand(OpNum + 1), Fixups);
+ assert(isUInt<4>(Base) && isUInt<12>(Disp));
+ return (Base << 12) | Disp;
+}
+
+uint64_t SystemZMCCodeEmitter::
+getBDAddr20Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups) const {
+ uint64_t Base = getMachineOpValue(MI, MI.getOperand(OpNum), Fixups);
+ uint64_t Disp = getMachineOpValue(MI, MI.getOperand(OpNum + 1), Fixups);
+ assert(isUInt<4>(Base) && isInt<20>(Disp));
+ return (Base << 20) | ((Disp & 0xfff) << 8) | ((Disp & 0xff000) >> 12);
+}
+
+uint64_t SystemZMCCodeEmitter::
+getBDXAddr12Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups) const {
+ uint64_t Base = getMachineOpValue(MI, MI.getOperand(OpNum), Fixups);
+ uint64_t Disp = getMachineOpValue(MI, MI.getOperand(OpNum + 1), Fixups);
+ uint64_t Index = getMachineOpValue(MI, MI.getOperand(OpNum + 2), Fixups);
+ assert(isUInt<4>(Base) && isUInt<12>(Disp) && isUInt<4>(Index));
+ return (Index << 16) | (Base << 12) | Disp;
+}
+
+uint64_t SystemZMCCodeEmitter::
+getBDXAddr20Encoding(const MCInst &MI, unsigned OpNum,
+ SmallVectorImpl<MCFixup> &Fixups) const {
+ uint64_t Base = getMachineOpValue(MI, MI.getOperand(OpNum), Fixups);
+ uint64_t Disp = getMachineOpValue(MI, MI.getOperand(OpNum + 1), Fixups);
+ uint64_t Index = getMachineOpValue(MI, MI.getOperand(OpNum + 2), Fixups);
+ assert(isUInt<4>(Base) && isInt<20>(Disp) && isUInt<4>(Index));
+ return (Index << 24) | (Base << 20) | ((Disp & 0xfff) << 8)
+ | ((Disp & 0xff000) >> 12);
+}
+
+uint64_t
+SystemZMCCodeEmitter::getPCRelEncoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups,
unsigned Kind, int64_t Offset) const {
const MCOperand &MO = MI.getOperand(OpNum);
- // For compatibility with the GNU assembler, treat constant operands as
- // unadjusted PC-relative offsets.
+ const MCExpr *Expr;
if (MO.isImm())
- return MO.getImm() / 2;
-
- const MCExpr *Expr = MO.getExpr();
- if (Offset) {
- // The operand value is relative to the start of MI, but the fixup
- // is relative to the operand field itself, which is Offset bytes
- // into MI. Add Offset to the relocation value to cancel out
- // this difference.
- const MCExpr *OffsetExpr = MCConstantExpr::Create(Offset, Ctx);
- Expr = MCBinaryExpr::CreateAdd(Expr, OffsetExpr, Ctx);
+ Expr = MCConstantExpr::Create(MO.getImm() + Offset, Ctx);
+ else {
+ Expr = MO.getExpr();
+ if (Offset) {
+ // The operand value is relative to the start of MI, but the fixup
+ // is relative to the operand field itself, which is Offset bytes
+ // into MI. Add Offset to the relocation value to cancel out
+ // this difference.
+ const MCExpr *OffsetExpr = MCConstantExpr::Create(Offset, Ctx);
+ Expr = MCBinaryExpr::CreateAdd(Expr, OffsetExpr, Ctx);
+ }
}
Fixups.push_back(MCFixup::Create(Offset, Expr, (MCFixupKind)Kind));
return 0;
diff --git a/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp b/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp
index 6844f92ec9..3653192d85 100644
--- a/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp
+++ b/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp
@@ -27,11 +27,55 @@
using namespace llvm;
-static MCAsmInfo *createSystemZMCAsmInfo(StringRef TT) {
+const unsigned SystemZMC::GR32Regs[16] = {
+ SystemZ::R0W, SystemZ::R1W, SystemZ::R2W, SystemZ::R3W,
+ SystemZ::R4W, SystemZ::R5W, SystemZ::R6W, SystemZ::R7W,
+ SystemZ::R8W, SystemZ::R9W, SystemZ::R10W, SystemZ::R11W,
+ SystemZ::R12W, SystemZ::R13W, SystemZ::R14W, SystemZ::R15W
+};
+
+const unsigned SystemZMC::GR64Regs[16] = {
+ SystemZ::R0D, SystemZ::R1D, SystemZ::R2D, SystemZ::R3D,
+ SystemZ::R4D, SystemZ::R5D, SystemZ::R6D, SystemZ::R7D,
+ SystemZ::R8D, SystemZ::R9D, SystemZ::R10D, SystemZ::R11D,
+ SystemZ::R12D, SystemZ::R13D, SystemZ::R14D, SystemZ::R15D
+};
+
+const unsigned SystemZMC::GR128Regs[16] = {
+ SystemZ::R0Q, 0, SystemZ::R2Q, 0,
+ SystemZ::R4Q, 0, SystemZ::R6Q, 0,
+ SystemZ::R8Q, 0, SystemZ::R10Q, 0,
+ SystemZ::R12Q, 0, SystemZ::R14Q, 0
+};
+
+const unsigned SystemZMC::FP32Regs[16] = {
+ SystemZ::F0S, SystemZ::F1S, SystemZ::F2S, SystemZ::F3S,
+ SystemZ::F4S, SystemZ::F5S, SystemZ::F6S, SystemZ::F7S,
+ SystemZ::F8S, SystemZ::F9S, SystemZ::F10S, SystemZ::F11S,
+ SystemZ::F12S, SystemZ::F13S, SystemZ::F14S, SystemZ::F15S
+};
+
+const unsigned SystemZMC::FP64Regs[16] = {
+ SystemZ::F0D, SystemZ::F1D, SystemZ::F2D, SystemZ::F3D,
+ SystemZ::F4D, SystemZ::F5D, SystemZ::F6D, SystemZ::F7D,
+ SystemZ::F8D, SystemZ::F9D, SystemZ::F10D, SystemZ::F11D,
+ SystemZ::F12D, SystemZ::F13D, SystemZ::F14D, SystemZ::F15D
+};
+
+const unsigned SystemZMC::FP128Regs[16] = {
+ SystemZ::F0Q, SystemZ::F1Q, 0, 0,
+ SystemZ::F4Q, SystemZ::F5Q, 0, 0,
+ SystemZ::F8Q, SystemZ::F9Q, 0, 0,
+ SystemZ::F12Q, SystemZ::F13Q, 0, 0
+};
+
+static MCAsmInfo *createSystemZMCAsmInfo(const MCRegisterInfo &MRI,
+ StringRef TT) {
MCAsmInfo *MAI = new SystemZMCAsmInfo(TT);
- MachineLocation FPDst(MachineLocation::VirtualFP);
- MachineLocation FPSrc(SystemZ::R15D, -SystemZMC::CFAOffsetFromInitialSP);
- MAI->addInitialFrameState(0, FPDst, FPSrc);
+ MCCFIInstruction Inst =
+ MCCFIInstruction::createDefCfa(0, MRI.getDwarfRegNum(SystemZ::R15D, true),
+ SystemZMC::CFAOffsetFromInitialSP);
+ MAI->addInitialFrameState(Inst);
return MAI;
}
diff --git a/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h b/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
index 229912f161..1f70047db6 100644
--- a/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
+++ b/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
@@ -34,6 +34,16 @@ namespace SystemZMC {
// The offset of the DWARF CFA from the incoming stack pointer.
const int64_t CFAOffsetFromInitialSP = CallFrameSize;
+
+ // Maps of asm register numbers to LLVM register numbers, with 0 indicating
+ // an invalid register. We don't use the register classes directly because
+ // they specify the allocation order.
+ extern const unsigned GR32Regs[16];
+ extern const unsigned GR64Regs[16];
+ extern const unsigned GR128Regs[16];
+ extern const unsigned FP32Regs[16];
+ extern const unsigned FP64Regs[16];
+ extern const unsigned FP128Regs[16];
}
MCCodeEmitter *createSystemZMCCodeEmitter(const MCInstrInfo &MCII,
diff --git a/lib/Target/SystemZ/Makefile b/lib/Target/SystemZ/Makefile
index c992584af9..445725bd1e 100644
--- a/lib/Target/SystemZ/Makefile
+++ b/lib/Target/SystemZ/Makefile
@@ -16,13 +16,14 @@ BUILT_SOURCES = SystemZGenRegisterInfo.inc \
SystemZGenAsmWriter.inc \
SystemZGenAsmMatcher.inc \
SystemZGenCodeEmitter.inc \
+ SystemZGenDisassemblerTables.inc \
SystemZGenInstrInfo.inc \
SystemZGenDAGISel.inc \
SystemZGenSubtargetInfo.inc \
SystemZGenCallingConv.inc \
SystemZGenMCCodeEmitter.inc
-DIRS = InstPrinter AsmParser TargetInfo MCTargetDesc
+DIRS = InstPrinter AsmParser Disassembler TargetInfo MCTargetDesc
include $(LEVEL)/Makefile.common
diff --git a/lib/Target/SystemZ/README.txt b/lib/Target/SystemZ/README.txt
index d1f56a4916..8f5a5476b4 100644
--- a/lib/Target/SystemZ/README.txt
+++ b/lib/Target/SystemZ/README.txt
@@ -29,17 +29,44 @@ to load 103. This seems to be a general target-independent problem.
--
-The tuning of the choice between Load Address (LA) and addition in
+The tuning of the choice between LOAD ADDRESS (LA) and addition in
SystemZISelDAGToDAG.cpp is suspect. It should be tweaked based on
performance measurements.
--
+We don't support tail calls at present.
+
+--
+
+We don't support prefetching yet.
+
+--
+
There is no scheduling support.
--
-We don't use the Branch on Count or Branch on Index families of instruction.
+We don't use the BRANCH ON COUNT or BRANCH ON INDEX families of instruction.
+
+--
+
+We might want to use BRANCH ON CONDITION for conditional indirect calls
+and conditional returns.
+
+--
+
+We don't use the combined COMPARE AND BRANCH instructions. Using them
+would require a change to the way we handle out-of-range branches.
+At the moment, we start with 32-bit forms like BRCL and shorten them
+to forms like BRC where possible, but COMPARE AND BRANCH does not have
+a 32-bit form.
+
+--
+
+We should probably model just CC, not the PSW as a whole. Strictly
+speaking, every instruction changes the PSW since the PSW contains the
+current instruction address.
--
@@ -54,7 +81,30 @@ equality after an integer comparison, etc.
--
-We don't optimize string and block memory operations.
+We don't use the LOAD AND TEST or TEST DATA CLASS instructions.
+
+--
+
+We could use the generic floating-point forms of LOAD COMPLEMENT,
+LOAD NEGATIVE and LOAD POSITIVE in cases where we don't need the
+condition codes. For example, we could use LCDFR instead of LCDBR.
+
+--
+
+We don't optimize block memory operations.
+
+It's definitely worth using things like MVC, CLC, NC, XC and OC with
+constant lengths. MVCIN may be worthwhile too.
+
+We should probably implement things like memcpy using MVC with EXECUTE.
+Likewise memcmp and CLC. MVCLE and CLCLE could be useful too.
+
+--
+
+We don't optimize string operations.
+
+MVST, CLST, SRST and CUSE could be useful here. Some of the TRANSLATE
+family might be too, although they are probably more difficult to exploit.
--
@@ -63,9 +113,33 @@ conventions require f128s to be returned by invisible reference.
--
+ADD LOGICAL WITH SIGNED IMMEDIATE could be useful when we need to
+produce a carry. SUBTRACT LOGICAL IMMEDIATE could be useful when we
+need to produce a borrow. (Note that there are no memory forms of
+ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW, so the high
+part of 128-bit memory operations would probably need to be done
+via a register.)
+
+--
+
+We don't use the halfword forms of LOAD REVERSED and STORE REVERSED
+(LRVH and STRVH).
+
+--
+
+We could take advantage of the various ... UNDER MASK instructions,
+such as ICM and STCM.
+
+--
+
+We could make more use of the ROTATE AND ... SELECTED BITS instructions.
+At the moment we only use RISBG, and only then for subword atomic operations.
+
+--
+
DAGCombiner can detect integer absolute, but there's not yet an associated
-ISD opcode. We could add one and implement it using Load Positive.
-Negated absolutes could use Load Negative.
+ISD opcode. We could add one and implement it using LOAD POSITIVE.
+Negated absolutes could use LOAD NEGATIVE.
--
@@ -142,5 +216,15 @@ See CodeGen/SystemZ/alloca-01.ll for an example.
--
Atomic loads and stores use the default compare-and-swap based implementation.
-This is probably much too conservative in practice, and the overhead is
-especially bad for 8- and 16-bit accesses.
+This is much too conservative in practice, since the architecture guarantees
+that 1-, 2-, 4- and 8-byte loads and stores to aligned addresses are
+inherently atomic.
+
+--
+
+If needed, we can support 16-byte atomics using LPQ, STPQ and CSDG.
+
+--
+
+We might want to model all access registers and use them to spill
+32-bit values.
diff --git a/lib/Target/SystemZ/SystemZInstrFP.td b/lib/Target/SystemZ/SystemZInstrFP.td
index 7c9f0e668b..104af6e99d 100644
--- a/lib/Target/SystemZ/SystemZInstrFP.td
+++ b/lib/Target/SystemZ/SystemZInstrFP.td
@@ -40,24 +40,22 @@ def LDGR : UnaryRRE<"ldgr", 0xB3C1, bitconvert, FP64, GR64>;
// fcopysign with an FP32 result.
let isCodeGenOnly = 1 in {
- def CPSDRss : BinaryRevRRF<"cpsdr", 0xB372, fcopysign, FP32, FP32>;
- def CPSDRsd : BinaryRevRRF<"cpsdr", 0xB372, fcopysign, FP32, FP64>;
+ def CPSDRss : BinaryRRF<"cpsdr", 0xB372, fcopysign, FP32, FP32>;
+ def CPSDRsd : BinaryRRF<"cpsdr", 0xB372, fcopysign, FP32, FP64>;
}
-// The sign of an FP128 is in the high register. Give the CPSDRsd
-// operands in R1, R2, R3 order.
+// The sign of an FP128 is in the high register.
def : Pat<(fcopysign FP32:$src1, FP128:$src2),
- (CPSDRsd (EXTRACT_SUBREG FP128:$src2, subreg_high), FP32:$src1)>;
+ (CPSDRsd FP32:$src1, (EXTRACT_SUBREG FP128:$src2, subreg_high))>;
// fcopysign with an FP64 result.
let isCodeGenOnly = 1 in
- def CPSDRds : BinaryRevRRF<"cpsdr", 0xB372, fcopysign, FP64, FP32>;
-def CPSDRdd : BinaryRevRRF<"cpsdr", 0xB372, fcopysign, FP64, FP64>;
+ def CPSDRds : BinaryRRF<"cpsdr", 0xB372, fcopysign, FP64, FP32>;
+def CPSDRdd : BinaryRRF<"cpsdr", 0xB372, fcopysign, FP64, FP64>;
-// The sign of an FP128 is in the high register. Give the CPSDRdd
-// operands in R1, R2, R3 order.
+// The sign of an FP128 is in the high register.
def : Pat<(fcopysign FP64:$src1, FP128:$src2),
- (CPSDRdd (EXTRACT_SUBREG FP128:$src2, subreg_high), FP64:$src1)>;
+ (CPSDRdd FP64:$src1, (EXTRACT_SUBREG FP128:$src2, subreg_high))>;
// fcopysign with an FP128 result. Use "upper" as the high half and leave
// the low half as-is.
@@ -65,13 +63,12 @@ class CopySign128<RegisterOperand cls, dag upper>
: Pat<(fcopysign FP128:$src1, cls:$src2),
(INSERT_SUBREG FP128:$src1, upper, subreg_high)>;
-// Give the CPSDR* operands in R1, R2, R3 order.
-def : CopySign128<FP32, (CPSDRds FP32:$src2,
- (EXTRACT_SUBREG FP128:$src1, subreg_high))>;
-def : CopySign128<FP64, (CPSDRdd FP64:$src2,
- (EXTRACT_SUBREG FP128:$src1, subreg_high))>;
-def : CopySign128<FP128, (CPSDRdd (EXTRACT_SUBREG FP128:$src2, subreg_high),
- (EXTRACT_SUBREG FP128:$src1, subreg_high))>;
+def : CopySign128<FP32, (CPSDRds (EXTRACT_SUBREG FP128:$src1, subreg_high),
+ FP32:$src2)>;
+def : CopySign128<FP64, (CPSDRdd (EXTRACT_SUBREG FP128:$src1, subreg_high),
+ FP64:$src2)>;
+def : CopySign128<FP128, (CPSDRdd (EXTRACT_SUBREG FP128:$src1, subreg_high),
+ (EXTRACT_SUBREG FP128:$src2, subreg_high))>;
//===----------------------------------------------------------------------===//
// Load instructions
@@ -155,13 +152,13 @@ let Defs = [PSW] in {
}
// fp_to_sint always rounds towards zero, which is modifier value 5.
-def : Pat<(i32 (fp_to_sint FP32:$src)), (CFEBR FP32:$src, 5)>;
-def : Pat<(i32 (fp_to_sint FP64:$src)), (CFDBR FP64:$src, 5)>;
-def : Pat<(i32 (fp_to_sint FP128:$src)), (CFXBR FP128:$src, 5)>;
+def : Pat<(i32 (fp_to_sint FP32:$src)), (CFEBR 5, FP32:$src)>;
+def : Pat<(i32 (fp_to_sint FP64:$src)), (CFDBR 5, FP64:$src)>;
+def : Pat<(i32 (fp_to_sint FP128:$src)), (CFXBR 5, FP128:$src)>;
-def : Pat<(i64 (fp_to_sint FP32:$src)), (CGEBR FP32:$src, 5)>;
-def : Pat<(i64 (fp_to_sint FP64:$src)), (CGDBR FP64:$src, 5)>;
-def : Pat<(i64 (fp_to_sint FP128:$src)), (CGXBR FP128:$src, 5)>;
+def : Pat<(i64 (fp_to_sint FP32:$src)), (CGEBR 5, FP32:$src)>;
+def : Pat<(i64 (fp_to_sint FP64:$src)), (CGDBR 5, FP64:$src)>;
+def : Pat<(i64 (fp_to_sint FP128:$src)), (CGXBR 5, FP128:$src)>;
//===----------------------------------------------------------------------===//
// Unary arithmetic
@@ -210,9 +207,9 @@ let Defs = [PSW] in {
// frint rounds according to the current mode (modifier 0) and detects
// inexact conditions.
-def : Pat<(frint FP32:$src), (FIEBR FP32:$src, 0)>;
-def : Pat<(frint FP64:$src), (FIDBR FP64:$src, 0)>;
-def : Pat<(frint FP128:$src), (FIXBR FP128:$src, 0)>;
+def : Pat<(frint FP32:$src), (FIEBR 0, FP32:$src)>;
+def : Pat<(frint FP64:$src), (FIDBR 0, FP64:$src)>;
+def : Pat<(frint FP128:$src), (FIXBR 0, FP128:$src)>;
//===----------------------------------------------------------------------===//
// Binary arithmetic
diff --git a/lib/Target/SystemZ/SystemZInstrFormats.td b/lib/Target/SystemZ/SystemZInstrFormats.td
index b32b7eb0fc..bf5aa8dbeb 100644
--- a/lib/Target/SystemZ/SystemZInstrFormats.td
+++ b/lib/Target/SystemZ/SystemZInstrFormats.td
@@ -82,25 +82,24 @@ def getDisp20Opcode : InstrMapping {
//
// Formats are specified using operand field declarations of the form:
//
-// bits<4> Rn : register input or output for operand n
-// bits<m> In : immediate value of width m for operand n
-// bits<4> Bn : base register for address operand n
-// bits<m> Dn : displacement value of width m for address operand n
-// bits<4> Xn : index register for address operand n
-// bits<4> Mn : mode value for operand n
+// bits<4> Rn : register input or output for operand n
+// bits<m> In : immediate value of width m for operand n
+// bits<4> BDn : address operand n, which has a base and a displacement
+// bits<m> XBDn : address operand n, which has an index, a base and a
+// displacement
+// bits<4> Xn : index register for address operand n
+// bits<4> Mn : mode value for operand n
//
-// The operand numbers ("n" in the list above) follow the architecture manual,
-// but the fields are always declared in assembly order, so there are some
-// cases where operand "2" comes after operand "3". For address operands,
-// the base register field is declared first, followed by the displacement,
-// followed by the index (if any). This matches the bdaddr* and bdxaddr*
-// orders.
+// The operand numbers ("n" in the list above) follow the architecture manual.
+// Assembly operands sometimes have a different order; in particular, R3 often
+// is often written between operands 1 and 2.
//
//===----------------------------------------------------------------------===//
class InstRI<bits<12> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<4, outs, ins, asmstr, pattern> {
field bits<32> Inst;
+ field bits<32> SoftFail = 0;
bits<4> R1;
bits<16> I2;
@@ -114,6 +113,7 @@ class InstRI<bits<12> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRIEf<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<6, outs, ins, asmstr, pattern> {
field bits<48> Inst;
+ field bits<48> SoftFail = 0;
bits<4> R1;
bits<4> R2;
@@ -133,6 +133,7 @@ class InstRIEf<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRIL<bits<12> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<6, outs, ins, asmstr, pattern> {
field bits<48> Inst;
+ field bits<48> SoftFail = 0;
bits<4> R1;
bits<32> I2;
@@ -146,6 +147,7 @@ class InstRIL<bits<12> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRR<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<2, outs, ins, asmstr, pattern> {
field bits<16> Inst;
+ field bits<16> SoftFail = 0;
bits<4> R1;
bits<4> R2;
@@ -158,6 +160,7 @@ class InstRR<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRRD<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<4, outs, ins, asmstr, pattern> {
field bits<32> Inst;
+ field bits<32> SoftFail = 0;
bits<4> R1;
bits<4> R3;
@@ -173,6 +176,7 @@ class InstRRD<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRRE<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<4, outs, ins, asmstr, pattern> {
field bits<32> Inst;
+ field bits<32> SoftFail = 0;
bits<4> R1;
bits<4> R2;
@@ -186,6 +190,7 @@ class InstRRE<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRRF<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<4, outs, ins, asmstr, pattern> {
field bits<32> Inst;
+ field bits<32> SoftFail = 0;
bits<4> R1;
bits<4> R2;
@@ -201,17 +206,14 @@ class InstRRF<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRX<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<4, outs, ins, asmstr, pattern> {
field bits<32> Inst;
+ field bits<32> SoftFail = 0;
bits<4> R1;
- bits<4> B2;
- bits<12> D2;
- bits<4> X2;
+ bits<20> XBD2;
let Inst{31-24} = op;
let Inst{23-20} = R1;
- let Inst{19-16} = X2;
- let Inst{15-12} = B2;
- let Inst{11-0} = D2;
+ let Inst{19-0} = XBD2;
let HasIndex = 1;
}
@@ -219,17 +221,14 @@ class InstRX<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRXE<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<6, outs, ins, asmstr, pattern> {
field bits<48> Inst;
+ field bits<48> SoftFail = 0;
bits<4> R1;
- bits<4> B2;
- bits<12> D2;
- bits<4> X2;
+ bits<20> XBD2;
let Inst{47-40} = op{15-8};
let Inst{39-36} = R1;
- let Inst{35-32} = X2;
- let Inst{31-28} = B2;
- let Inst{27-16} = D2;
+ let Inst{35-16} = XBD2;
let Inst{15-8} = 0;
let Inst{7-0} = op{7-0};
@@ -239,18 +238,15 @@ class InstRXE<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRXF<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<6, outs, ins, asmstr, pattern> {
field bits<48> Inst;
+ field bits<48> SoftFail = 0;
bits<4> R1;
bits<4> R3;
- bits<4> B2;
- bits<12> D2;
- bits<4> X2;
+ bits<20> XBD2;
let Inst{47-40} = op{15-8};
let Inst{39-36} = R3;
- let Inst{35-32} = X2;
- let Inst{31-28} = B2;
- let Inst{27-16} = D2;
+ let Inst{35-16} = XBD2;
let Inst{15-12} = R1;
let Inst{11-8} = 0;
let Inst{7-0} = op{7-0};
@@ -261,18 +257,14 @@ class InstRXF<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRXY<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<6, outs, ins, asmstr, pattern> {
field bits<48> Inst;
+ field bits<48> SoftFail = 0;
bits<4> R1;
- bits<4> B2;
- bits<20> D2;
- bits<4> X2;
+ bits<28> XBD2;
let Inst{47-40} = op{15-8};
let Inst{39-36} = R1;
- let Inst{35-32} = X2;
- let Inst{31-28} = B2;
- let Inst{27-16} = D2{11-0};
- let Inst{15-8} = D2{19-12};
+ let Inst{35-8} = XBD2;
let Inst{7-0} = op{7-0};
let Has20BitOffset = 1;
@@ -282,34 +274,31 @@ class InstRXY<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstRS<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<4, outs, ins, asmstr, pattern> {
field bits<32> Inst;
+ field bits<32> SoftFail = 0;
bits<4> R1;
bits<4> R3;
- bits<4> B2;
- bits<12> D2;
+ bits<16> BD2;
let Inst{31-24} = op;
let Inst{23-20} = R1;
let Inst{19-16} = R3;
- let Inst{15-12} = B2;
- let Inst{11-0} = D2;
+ let Inst{15-0} = BD2;
}
class InstRSY<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<6, outs, ins, asmstr, pattern> {
field bits<48> Inst;
+ field bits<48> SoftFail = 0;
bits<4> R1;
bits<4> R3;
- bits<4> B2;
- bits<20> D2;
+ bits<24> BD2;
let Inst{47-40} = op{15-8};
let Inst{39-36} = R1;
let Inst{35-32} = R3;
- let Inst{31-28} = B2;
- let Inst{27-16} = D2{11-0};
- let Inst{15-8} = D2{19-12};
+ let Inst{31-8} = BD2;
let Inst{7-0} = op{7-0};
let Has20BitOffset = 1;
@@ -318,44 +307,40 @@ class InstRSY<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InstSI<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<4, outs, ins, asmstr, pattern> {
field bits<32> Inst;
+ field bits<32> SoftFail = 0;
- bits<4> B1;
- bits<12> D1;
+ bits<16> BD1;
bits<8> I2;
let Inst{31-24} = op;
let Inst{23-16} = I2;
- let Inst{15-12} = B1;
- let Inst{11-0} = D1;
+ let Inst{15-0} = BD1;
}
class InstSIL<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<6, outs, ins, asmstr, pattern> {
field bits<48> Inst;
+ field bits<48> SoftFail = 0;
- bits<4> B1;
- bits<12> D1;
+ bits<16> BD1;
bits<16> I2;
let Inst{47-32} = op;
- let Inst{31-28} = B1;
- let Inst{27-16} = D1;
+ let Inst{31-16} = BD1;
let Inst{15-0} = I2;
}
class InstSIY<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
: InstSystemZ<6, outs, ins, asmstr, pattern> {
field bits<48> Inst;
+ field bits<48> SoftFail = 0;
- bits<4> B1;
- bits<20> D1;
+ bits<24> BD1;
bits<8> I2;
let Inst{47-40} = op{15-8};
let Inst{39-32} = I2;
- let Inst{31-28} = B1;
- let Inst{27-16} = D1{11-0};
- let Inst{15-8} = D1{19-12};
+ let Inst{31-8} = BD1;
let Inst{7-0} = op{7-0};
let Has20BitOffset = 1;
@@ -432,23 +417,23 @@ class InstSIY<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
class InherentRRE<string mnemonic, bits<16> opcode, RegisterOperand cls,
dag src>
- : InstRRE<opcode, (outs cls:$dst), (ins),
- mnemonic#"\t$dst",
- [(set cls:$dst, src)]> {
+ : InstRRE<opcode, (outs cls:$R1), (ins),
+ mnemonic#"\t$R1",
+ [(set cls:$R1, src)]> {
let R2 = 0;
}
class LoadMultipleRSY<string mnemonic, bits<16> opcode, RegisterOperand cls>
- : InstRSY<opcode, (outs cls:$dst1, cls:$dst2), (ins bdaddr20only:$addr),
- mnemonic#"\t$dst1, $dst2, $addr", []> {
+ : InstRSY<opcode, (outs cls:$R1, cls:$R3), (ins bdaddr20only:$BD2),
+ mnemonic#"\t$R1, $R3, $BD2", []> {
let mayLoad = 1;
}
class StoreRILPC<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls>
- : InstRIL<opcode, (outs), (ins cls:$src, pcrel32:$addr),
- mnemonic#"\t$src, $addr",
- [(operator cls:$src, pcrel32:$addr)]> {
+ : InstRIL<opcode, (outs), (ins cls:$R1, pcrel32:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(operator cls:$R1, pcrel32:$I2)]> {
let mayStore = 1;
// We want PC-relative addresses to be tried ahead of BD and BDX addresses.
// However, BDXs have two extra operands and are therefore 6 units more
@@ -458,17 +443,17 @@ class StoreRILPC<string mnemonic, bits<12> opcode, SDPatternOperator operator,
class StoreRX<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode = bdxaddr12only>
- : InstRX<opcode, (outs), (ins cls:$src, mode:$addr),
- mnemonic#"\t$src, $addr",
- [(operator cls:$src, mode:$addr)]> {
+ : InstRX<opcode, (outs), (ins cls:$R1, mode:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(operator cls:$R1, mode:$XBD2)]> {
let mayStore = 1;
}
class StoreRXY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode = bdxaddr20only>
- : InstRXY<opcode, (outs), (ins cls:$src, mode:$addr),
- mnemonic#"\t$src, $addr",
- [(operator cls:$src, mode:$addr)]> {
+ : InstRXY<opcode, (outs), (ins cls:$R1, mode:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(operator cls:$R1, mode:$XBD2)]> {
let mayStore = 1;
}
@@ -483,32 +468,32 @@ multiclass StoreRXPair<string mnemonic, bits<8> rxOpcode, bits<16> rxyOpcode,
}
class StoreMultipleRSY<string mnemonic, bits<16> opcode, RegisterOperand cls>
- : InstRSY<opcode, (outs), (ins cls:$from, cls:$to, bdaddr20only:$addr),
- mnemonic#"\t$from, $to, $addr", []> {
+ : InstRSY<opcode, (outs), (ins cls:$R1, cls:$R3, bdaddr20only:$BD2),
+ mnemonic#"\t$R1, $R3, $BD2", []> {
let mayStore = 1;
}
class StoreSI<string mnemonic, bits<8> opcode, SDPatternOperator operator,
Immediate imm, AddressingMode mode = bdaddr12only>
- : InstSI<opcode, (outs), (ins mode:$addr, imm:$src),
- mnemonic#"\t$addr, $src",
- [(operator imm:$src, mode:$addr)]> {
+ : InstSI<opcode, (outs), (ins mode:$BD1, imm:$I2),
+ mnemonic#"\t$BD1, $I2",
+ [(operator imm:$I2, mode:$BD1)]> {
let mayStore = 1;
}
class StoreSIY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
Immediate imm, AddressingMode mode = bdaddr20only>
- : InstSIY<opcode, (outs), (ins mode:$addr, imm:$src),
- mnemonic#"\t$addr, $src",
- [(operator imm:$src, mode:$addr)]> {
+ : InstSIY<opcode, (outs), (ins mode:$BD1, imm:$I2),
+ mnemonic#"\t$BD1, $I2",
+ [(operator imm:$I2, mode:$BD1)]> {
let mayStore = 1;
}
class StoreSIL<string mnemonic, bits<16> opcode, SDPatternOperator operator,
Immediate imm>
- : InstSIL<opcode, (outs), (ins bdaddr12only:$addr, imm:$src),
- mnemonic#"\t$addr, $src",
- [(operator imm:$src, bdaddr12only:$addr)]> {
+ : InstSIL<opcode, (outs), (ins bdaddr12only:$BD1, imm:$I2),
+ mnemonic#"\t$BD1, $I2",
+ [(operator imm:$I2, bdaddr12only:$BD1)]> {
let mayStore = 1;
}
@@ -524,38 +509,38 @@ multiclass StoreSIPair<string mnemonic, bits<8> siOpcode, bits<16> siyOpcode,
class UnaryRR<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls1, RegisterOperand cls2>
- : InstRR<opcode, (outs cls1:$dst), (ins cls2:$src),
- mnemonic#"\t$dst, $src",
- [(set cls1:$dst, (operator cls2:$src))]>;
+ : InstRR<opcode, (outs cls1:$R1), (ins cls2:$R2),
+ mnemonic#"\t$R1, $R2",
+ [(set cls1:$R1, (operator cls2:$R2))]>;
class UnaryRRE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls1, RegisterOperand cls2>
- : InstRRE<opcode, (outs cls1:$dst), (ins cls2:$src),
- mnemonic#"\t$dst, $src",
- [(set cls1:$dst, (operator cls2:$src))]>;
+ : InstRRE<opcode, (outs cls1:$R1), (ins cls2:$R2),
+ mnemonic#"\t$R1, $R2",
+ [(set cls1:$R1, (operator cls2:$R2))]>;
class UnaryRRF<string mnemonic, bits<16> opcode, RegisterOperand cls1,
RegisterOperand cls2>
- : InstRRF<opcode, (outs cls1:$dst), (ins cls2:$src, uimm8zx4:$mode),
- mnemonic#"\t$dst, $mode, $src", []>;
+ : InstRRF<opcode, (outs cls1:$R1), (ins uimm8zx4:$R3, cls2:$R2),
+ mnemonic#"\t$R1, $R3, $R2", []>;
class UnaryRI<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls, Immediate imm>
- : InstRI<opcode, (outs cls:$dst), (ins imm:$src),
- mnemonic#"\t$dst, $src",
- [(set cls:$dst, (operator imm:$src))]>;
+ : InstRI<opcode, (outs cls:$R1), (ins imm:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(set cls:$R1, (operator imm:$I2))]>;
class UnaryRIL<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls, Immediate imm>
- : InstRIL<opcode, (outs cls:$dst), (ins imm:$src),
- mnemonic#"\t$dst, $src",
- [(set cls:$dst, (operator imm:$src))]>;
+ : InstRIL<opcode, (outs cls:$R1), (ins imm:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(set cls:$R1, (operator imm:$I2))]>;
class UnaryRILPC<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls>
- : InstRIL<opcode, (outs cls:$dst), (ins pcrel32:$addr),
- mnemonic#"\t$dst, $addr",
- [(set cls:$dst, (operator pcrel32:$addr))]> {
+ : InstRIL<opcode, (outs cls:$R1), (ins pcrel32:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(set cls:$R1, (operator pcrel32:$I2))]> {
let mayLoad = 1;
// We want PC-relative addresses to be tried ahead of BD and BDX addresses.
// However, BDXs have two extra operands and are therefore 6 units more
@@ -565,25 +550,25 @@ class UnaryRILPC<string mnemonic, bits<12> opcode, SDPatternOperator operator,
class UnaryRX<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode = bdxaddr12only>
- : InstRX<opcode, (outs cls:$dst), (ins mode:$addr),
- mnemonic#"\t$dst, $addr",
- [(set cls:$dst, (operator mode:$addr))]> {
+ : InstRX<opcode, (outs cls:$R1), (ins mode:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(set cls:$R1, (operator mode:$XBD2))]> {
let mayLoad = 1;
}
class UnaryRXE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls>
- : InstRXE<opcode, (outs cls:$dst), (ins bdxaddr12only:$addr),
- mnemonic#"\t$dst, $addr",
- [(set cls:$dst, (operator bdxaddr12only:$addr))]> {
+ : InstRXE<opcode, (outs cls:$R1), (ins bdxaddr12only:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(set cls:$R1, (operator bdxaddr12only:$XBD2))]> {
let mayLoad = 1;
}
class UnaryRXY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode = bdxaddr20only>
- : InstRXY<opcode, (outs cls:$dst), (ins mode:$addr),
- mnemonic#"\t$dst, $addr",
- [(set cls:$dst, (operator mode:$addr))]> {
+ : InstRXY<opcode, (outs cls:$R1), (ins mode:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(set cls:$R1, (operator mode:$XBD2))]> {
let mayLoad = 1;
}
@@ -599,83 +584,76 @@ multiclass UnaryRXPair<string mnemonic, bits<8> rxOpcode, bits<16> rxyOpcode,
class BinaryRR<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls1, RegisterOperand cls2>
- : InstRR<opcode, (outs cls1:$dst), (ins cls1:$src1, cls2:$src2),
- mnemonic#"\t$dst, $src2",
- [(set cls1:$dst, (operator cls1:$src1, cls2:$src2))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRR<opcode, (outs cls1:$R1), (ins cls1:$R1src, cls2:$R2),
+ mnemonic#"\t$R1, $R2",
+ [(set cls1:$R1, (operator cls1:$R1src, cls2:$R2))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
}
class BinaryRRE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls1, RegisterOperand cls2>
- : InstRRE<opcode, (outs cls1:$dst), (ins cls1:$src1, cls2:$src2),
- mnemonic#"\t$dst, $src2",
- [(set cls1:$dst, (operator cls1:$src1, cls2:$src2))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRRE<opcode, (outs cls1:$R1), (ins cls1:$R1src, cls2:$R2),
+ mnemonic#"\t$R1, $R2",
+ [(set cls1:$R1, (operator cls1:$R1src, cls2:$R2))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
}
-// Here the assembly and dag operands are in natural order,
-// but the first input operand maps to R3 and the second to R2.
-// This is used for "CPSDR R1, R3, R2", which is equivalent to
-// R1 = copysign (R3, R2).
-//
-// Direct uses of the instruction must pass operands in encoding order --
-// R1, R2, R3 -- so they must pass the source operands in reverse order.
-class BinaryRevRRF<string mnemonic, bits<16> opcode, SDPatternOperator operator,
- RegisterOperand cls1, RegisterOperand cls2>
- : InstRRF<opcode, (outs cls1:$dst), (ins cls2:$src2, cls1:$src1),
- mnemonic#"\t$dst, $src1, $src2",
- [(set cls1:$dst, (operator cls1:$src1, cls2:$src2))]>;
+class BinaryRRF<string mnemonic, bits<16> opcode, SDPatternOperator operator,
+ RegisterOperand cls1, RegisterOperand cls2>
+ : InstRRF<opcode, (outs cls1:$R1), (ins cls1:$R3, cls2:$R2),
+ mnemonic#"\t$R1, $R3, $R2",
+ [(set cls1:$R1, (operator cls1:$R3, cls2:$R2))]>;
class BinaryRI<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls, Immediate imm>
- : InstRI<opcode, (outs cls:$dst), (ins cls:$src1, imm:$src2),
- mnemonic#"\t$dst, $src2",
- [(set cls:$dst, (operator cls:$src1, imm:$src2))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRI<opcode, (outs cls:$R1), (ins cls:$R1src, imm:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(set cls:$R1, (operator cls:$R1src, imm:$I2))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
}
class BinaryRIL<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls, Immediate imm>
- : InstRIL<opcode, (outs cls:$dst), (ins cls:$src1, imm:$src2),
- mnemonic#"\t$dst, $src2",
- [(set cls:$dst, (operator cls:$src1, imm:$src2))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRIL<opcode, (outs cls:$R1), (ins cls:$R1src, imm:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(set cls:$R1, (operator cls:$R1src, imm:$I2))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
}
class BinaryRX<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls, SDPatternOperator load,
AddressingMode mode = bdxaddr12only>
- : InstRX<opcode, (outs cls:$dst), (ins cls:$src1, mode:$src2),
- mnemonic#"\t$dst, $src2",
- [(set cls:$dst, (operator cls:$src1, (load mode:$src2)))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRX<opcode, (outs cls:$R1), (ins cls:$R1src, mode:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(set cls:$R1, (operator cls:$R1src, (load mode:$XBD2)))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
let mayLoad = 1;
}
class BinaryRXE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, SDPatternOperator load>
- : InstRXE<opcode, (outs cls:$dst), (ins cls:$src1, bdxaddr12only:$src2),
- mnemonic#"\t$dst, $src2",
- [(set cls:$dst, (operator cls:$src1,
- (load bdxaddr12only:$src2)))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRXE<opcode, (outs cls:$R1), (ins cls:$R1src, bdxaddr12only:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(set cls:$R1, (operator cls:$R1src,
+ (load bdxaddr12only:$XBD2)))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
let mayLoad = 1;
}
class BinaryRXY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, SDPatternOperator load,
AddressingMode mode = bdxaddr20only>
- : InstRXY<opcode, (outs cls:$dst), (ins cls:$src1, mode:$src2),
- mnemonic#"\t$dst, $src2",
- [(set cls:$dst, (operator cls:$src1, (load mode:$src2)))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRXY<opcode, (outs cls:$R1), (ins cls:$R1src, mode:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(set cls:$R1, (operator cls:$R1src, (load mode:$XBD2)))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
let mayLoad = 1;
}
@@ -693,18 +671,18 @@ multiclass BinaryRXPair<string mnemonic, bits<8> rxOpcode, bits<16> rxyOpcode,
class BinarySI<string mnemonic, bits<8> opcode, SDPatternOperator operator,
Operand imm, AddressingMode mode = bdaddr12only>
- : InstSI<opcode, (outs), (ins mode:$addr, imm:$src),
- mnemonic#"\t$addr, $src",
- [(store (operator (load mode:$addr), imm:$src), mode:$addr)]> {
+ : InstSI<opcode, (outs), (ins mode:$BD1, imm:$I2),
+ mnemonic#"\t$BD1, $I2",
+ [(store (operator (load mode:$BD1), imm:$I2), mode:$BD1)]> {
let mayLoad = 1;
let mayStore = 1;
}
class BinarySIY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
Operand imm, AddressingMode mode = bdaddr20only>
- : InstSIY<opcode, (outs), (ins mode:$addr, imm:$src),
- mnemonic#"\t$addr, $src",
- [(store (operator (load mode:$addr), imm:$src), mode:$addr)]> {
+ : InstSIY<opcode, (outs), (ins mode:$BD1, imm:$I2),
+ mnemonic#"\t$BD1, $I2",
+ [(store (operator (load mode:$BD1), imm:$I2), mode:$BD1)]> {
let mayLoad = 1;
let mayStore = 1;
}
@@ -722,49 +700,49 @@ multiclass BinarySIPair<string mnemonic, bits<8> siOpcode,
class ShiftRS<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode>
- : InstRS<opcode, (outs cls:$dst), (ins cls:$src1, mode:$src2),
- mnemonic#"\t$dst, $src2",
- [(set cls:$dst, (operator cls:$src1, mode:$src2))]> {
+ : InstRS<opcode, (outs cls:$R1), (ins cls:$R1src, mode:$BD2),
+ mnemonic#"\t$R1, $BD2",
+ [(set cls:$R1, (operator cls:$R1src, mode:$BD2))]> {
let R3 = 0;
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
}
class ShiftRSY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode>
- : InstRSY<opcode, (outs cls:$dst), (ins cls:$src1, mode:$src2),
- mnemonic#"\t$dst, $src1, $src2",
- [(set cls:$dst, (operator cls:$src1, mode:$src2))]>;
+ : InstRSY<opcode, (outs cls:$R1), (ins cls:$R3, mode:$BD2),
+ mnemonic#"\t$R1, $R3, $BD2",
+ [(set cls:$R1, (operator cls:$R3, mode:$BD2))]>;
class CompareRR<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls1, RegisterOperand cls2>
- : InstRR<opcode, (outs), (ins cls1:$src1, cls2:$src2),
- mnemonic#"\t$src1, $src2",
- [(operator cls1:$src1, cls2:$src2)]>;
+ : InstRR<opcode, (outs), (ins cls1:$R1, cls2:$R2),
+ mnemonic#"\t$R1, $R2",
+ [(operator cls1:$R1, cls2:$R2)]>;
class CompareRRE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls1, RegisterOperand cls2>
- : InstRRE<opcode, (outs), (ins cls1:$src1, cls2:$src2),
- mnemonic#"\t$src1, $src2",
- [(operator cls1:$src1, cls2:$src2)]>;
+ : InstRRE<opcode, (outs), (ins cls1:$R1, cls2:$R2),
+ mnemonic#"\t$R1, $R2",
+ [(operator cls1:$R1, cls2:$R2)]>;
class CompareRI<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls, Immediate imm>
- : InstRI<opcode, (outs), (ins cls:$src1, imm:$src2),
- mnemonic#"\t$src1, $src2",
- [(operator cls:$src1, imm:$src2)]>;
+ : InstRI<opcode, (outs), (ins cls:$R1, imm:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(operator cls:$R1, imm:$I2)]>;
class CompareRIL<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls, Immediate imm>
- : InstRIL<opcode, (outs), (ins cls:$src1, imm:$src2),
- mnemonic#"\t$src1, $src2",
- [(operator cls:$src1, imm:$src2)]>;
+ : InstRIL<opcode, (outs), (ins cls:$R1, imm:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(operator cls:$R1, imm:$I2)]>;
class CompareRILPC<string mnemonic, bits<12> opcode, SDPatternOperator operator,
RegisterOperand cls, SDPatternOperator load>
- : InstRIL<opcode, (outs), (ins cls:$src1, pcrel32:$src2),
- mnemonic#"\t$src1, $src2",
- [(operator cls:$src1, (load pcrel32:$src2))]> {
+ : InstRIL<opcode, (outs), (ins cls:$R1, pcrel32:$I2),
+ mnemonic#"\t$R1, $I2",
+ [(operator cls:$R1, (load pcrel32:$I2))]> {
let mayLoad = 1;
// We want PC-relative addresses to be tried ahead of BD and BDX addresses.
// However, BDXs have two extra operands and are therefore 6 units more
@@ -775,26 +753,26 @@ class CompareRILPC<string mnemonic, bits<12> opcode, SDPatternOperator operator,
class CompareRX<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls, SDPatternOperator load,
AddressingMode mode = bdxaddr12only>
- : InstRX<opcode, (outs), (ins cls:$src1, mode:$src2),
- mnemonic#"\t$src1, $src2",
- [(operator cls:$src1, (load mode:$src2))]> {
+ : InstRX<opcode, (outs), (ins cls:$R1, mode:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(operator cls:$R1, (load mode:$XBD2))]> {
let mayLoad = 1;
}
class CompareRXE<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, SDPatternOperator load>
- : InstRXE<opcode, (outs), (ins cls:$src1, bdxaddr12only:$src2),
- mnemonic#"\t$src1, $src2",
- [(operator cls:$src1, (load bdxaddr12only:$src2))]> {
+ : InstRXE<opcode, (outs), (ins cls:$R1, bdxaddr12only:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(operator cls:$R1, (load bdxaddr12only:$XBD2))]> {
let mayLoad = 1;
}
class CompareRXY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, SDPatternOperator load,
AddressingMode mode = bdxaddr20only>
- : InstRXY<opcode, (outs), (ins cls:$src1, mode:$src2),
- mnemonic#"\t$src1, $src2",
- [(operator cls:$src1, (load mode:$src2))]> {
+ : InstRXY<opcode, (outs), (ins cls:$R1, mode:$XBD2),
+ mnemonic#"\t$R1, $XBD2",
+ [(operator cls:$R1, (load mode:$XBD2))]> {
let mayLoad = 1;
}
@@ -814,26 +792,26 @@ multiclass CompareRXPair<string mnemonic, bits<8> rxOpcode, bits<16> rxyOpcode,
class CompareSI<string mnemonic, bits<8> opcode, SDPatternOperator operator,
SDPatternOperator load, Immediate imm,
AddressingMode mode = bdaddr12only>
- : InstSI<opcode, (outs), (ins mode:$addr, imm:$src),
- mnemonic#"\t$addr, $src",
- [(operator (load mode:$addr), imm:$src)]> {
+ : InstSI<opcode, (outs), (ins mode:$BD1, imm:$I2),
+ mnemonic#"\t$BD1, $I2",
+ [(operator (load mode:$BD1), imm:$I2)]> {
let mayLoad = 1;
}
class CompareSIL<string mnemonic, bits<16> opcode, SDPatternOperator operator,
SDPatternOperator load, Immediate imm>
- : InstSIL<opcode, (outs), (ins bdaddr12only:$addr, imm:$src),
- mnemonic#"\t$addr, $src",
- [(operator (load bdaddr12only:$addr), imm:$src)]> {
+ : InstSIL<opcode, (outs), (ins bdaddr12only:$BD1, imm:$I2),
+ mnemonic#"\t$BD1, $I2",
+ [(operator (load bdaddr12only:$BD1), imm:$I2)]> {
let mayLoad = 1;
}
class CompareSIY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
SDPatternOperator load, Immediate imm,
AddressingMode mode = bdaddr20only>
- : InstSIY<opcode, (outs), (ins mode:$addr, imm:$src),
- mnemonic#"\t$addr, $src",
- [(operator (load mode:$addr), imm:$src)]> {
+ : InstSIY<opcode, (outs), (ins mode:$BD1, imm:$I2),
+ mnemonic#"\t$BD1, $I2",
+ [(operator (load mode:$BD1), imm:$I2)]> {
let mayLoad = 1;
}
@@ -851,43 +829,43 @@ multiclass CompareSIPair<string mnemonic, bits<8> siOpcode, bits<16> siyOpcode,
class TernaryRRD<string mnemonic, bits<16> opcode,
SDPatternOperator operator, RegisterOperand cls>
- : InstRRD<opcode, (outs cls:$dst), (ins cls:$src1, cls:$src2, cls:$src3),
- mnemonic#"\t$dst, $src2, $src3",
- [(set cls:$dst, (operator cls:$src1, cls:$src2, cls:$src3))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRRD<opcode, (outs cls:$R1), (ins cls:$R1src, cls:$R3, cls:$R2),
+ mnemonic#"\t$R1, $R3, $R2",
+ [(set cls:$R1, (operator cls:$R1src, cls:$R3, cls:$R2))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
}
class TernaryRXF<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, SDPatternOperator load>
- : InstRXF<opcode, (outs cls:$dst),
- (ins cls:$src1, cls:$src2, bdxaddr12only:$src3),
- mnemonic#"\t$dst, $src2, $src3",
- [(set cls:$dst, (operator cls:$src1, cls:$src2,
- (load bdxaddr12only:$src3)))]> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRXF<opcode, (outs cls:$R1),
+ (ins cls:$R1src, cls:$R3, bdxaddr12only:$XBD2),
+ mnemonic#"\t$R1, $R3, $XBD2",
+ [(set cls:$R1, (operator cls:$R1src, cls:$R3,
+ (load bdxaddr12only:$XBD2)))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
let mayLoad = 1;
}
class CmpSwapRS<string mnemonic, bits<8> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode = bdaddr12only>
- : InstRS<opcode, (outs cls:$dst), (ins cls:$old, cls:$new, mode:$ptr),
- mnemonic#"\t$dst, $new, $ptr",
- [(set cls:$dst, (operator mode:$ptr, cls:$old, cls:$new))]> {
- let Constraints = "$old = $dst";
- let DisableEncoding = "$old";
+ : InstRS<opcode, (outs cls:$R1), (ins cls:$R1src, cls:$R3, mode:$BD2),
+ mnemonic#"\t$R1, $R3, $BD2",
+ [(set cls:$R1, (operator mode:$BD2, cls:$R1src, cls:$R3))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
let mayLoad = 1;
let mayStore = 1;
}
class CmpSwapRSY<string mnemonic, bits<16> opcode, SDPatternOperator operator,
RegisterOperand cls, AddressingMode mode = bdaddr20only>
- : InstRSY<opcode, (outs cls:$dst), (ins cls:$old, cls:$new, mode:$ptr),
- mnemonic#"\t$dst, $new, $ptr",
- [(set cls:$dst, (operator mode:$ptr, cls:$old, cls:$new))]> {
- let Constraints = "$old = $dst";
- let DisableEncoding = "$old";
+ : InstRSY<opcode, (outs cls:$R1), (ins cls:$R1src, cls:$R3, mode:$BD2),
+ mnemonic#"\t$R1, $R3, $BD2",
+ [(set cls:$R1, (operator mode:$BD2, cls:$R1src, cls:$R3))]> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
let mayLoad = 1;
let mayStore = 1;
}
@@ -904,12 +882,12 @@ multiclass CmpSwapRSPair<string mnemonic, bits<8> rsOpcode, bits<16> rsyOpcode,
class RotateSelectRIEf<string mnemonic, bits<16> opcode, RegisterOperand cls1,
RegisterOperand cls2>
- : InstRIEf<opcode, (outs cls1:$dst),
- (ins cls1:$src1, cls2:$src2,
- uimm8zx6:$imm1, uimm8zx6:$imm2, uimm8zx6:$imm3),
- mnemonic#"\t$dst, $src2, $imm1, $imm2, $imm3", []> {
- let Constraints = "$src1 = $dst";
- let DisableEncoding = "$src1";
+ : InstRIEf<opcode, (outs cls1:$R1),
+ (ins cls1:$R1src, cls2:$R2,
+ uimm8zx6:$I3, uimm8zx6:$I4, uimm8zx6:$I5),
+ mnemonic#"\t$R1, $R2, $I3, $I4, $I5", []> {
+ let Constraints = "$R1 = $R1src";
+ let DisableEncoding = "$R1src";
}
//===----------------------------------------------------------------------===//
diff --git a/lib/Target/SystemZ/SystemZInstrInfo.td b/lib/Target/SystemZ/SystemZInstrInfo.td
index 7ffa382d36..903fb740a4 100644
--- a/lib/Target/SystemZ/SystemZInstrInfo.td
+++ b/lib/Target/SystemZ/SystemZInstrInfo.td
@@ -42,20 +42,19 @@ let isReturn = 1, isTerminator = 1, isBarrier = 1, hasCtrlDep = 1,
// Unconditional branches. R1 is the condition-code mask (all 1s).
let isBranch = 1, isTerminator = 1, isBarrier = 1, R1 = 15 in {
let isIndirectBranch = 1 in
- def BR : InstRR<0x07, (outs), (ins ADDR64:$dst),
- "br\t$dst", [(brind ADDR64:$dst)]>;
+ def BR : InstRR<0x07, (outs), (ins ADDR64:$R2),
+ "br\t$R2", [(brind ADDR64:$R2)]>;
// An assembler extended mnemonic for BRC. Use a separate instruction for
// the asm parser, so that we don't relax Js to external symbols into JGs.
let isCodeGenOnly = 1 in
- def J : InstRI<0xA74, (outs), (ins brtarget16:$dst), "j\t$dst", []>;
- let isAsmParserOnly = 1 in
- def AsmJ : InstRI<0xA74, (outs), (ins brtarget16:$dst), "j\t$dst", []>;
+ def J : InstRI<0xA74, (outs), (ins brtarget16:$I2), "j\t$I2", []>;
+ def AsmJ : InstRI<0xA74, (outs), (ins brtarget16:$I2), "j\t$I2", []>;
// An assembler extended mnemonic for BRCL. (The extension is "G"
// rather than "L" because "JL" is "Jump if Less".)
- def JG : InstRIL<0xC04, (outs), (ins brtarget32:$dst),
- "jg\t$dst", [(br bb:$dst)]>;
+ def JG : InstRIL<0xC04, (outs), (ins brtarget32:$I2),
+ "jg\t$I2", [(br bb:$I2)]>;
}
// Conditional branches. It's easier for LLVM to handle these branches
@@ -64,42 +63,39 @@ let isBranch = 1, isTerminator = 1, isBarrier = 1, R1 = 15 in {
// JE and JLH when writing out the assembly though.
multiclass CondBranches<Operand imm, string short, string long> {
let isBranch = 1, isTerminator = 1, Uses = [PSW] in {
- def "" : InstRI<0xA74, (outs), (ins imm:$cond, brtarget16:$dst), short, []>;
- def L : InstRIL<0xC04, (outs), (ins imm:$cond, brtarget32:$dst), long, []>;
+ def "" : InstRI<0xA74, (outs), (ins imm:$R1, brtarget16:$I2), short, []>;
+ def L : InstRIL<0xC04, (outs), (ins imm:$R1, brtarget32:$I2), long, []>;
}
}
let isCodeGenOnly = 1 in
- defm BRC : CondBranches<cond4, "j$cond\t$dst", "jg$cond\t$dst">;
-let isAsmParserOnly = 1 in
- defm AsmBRC : CondBranches<uimm8zx4, "brc\t$cond, $dst", "brcl\t$cond, $dst">;
+ defm BRC : CondBranches<cond4, "j$R1\t$I2", "jg$R1\t$I2">;
+defm AsmBRC : CondBranches<uimm8zx4, "brc\t$R1, $I2", "brcl\t$R1, $I2">;
def : Pat<(z_br_ccmask cond4:$cond, bb:$dst), (BRCL cond4:$cond, bb:$dst)>;
// Define AsmParser mnemonics for each condition code.
multiclass CondExtendedMnemonic<bits<4> Cond, string name> {
let R1 = Cond in {
- def "" : InstRI<0xA74, (outs), (ins brtarget16:$dst),
- "j"##name##"\t$dst", []>;
- def L : InstRIL<0xC04, (outs), (ins brtarget32:$dst),
- "jg"##name##"\t$dst", []>;
+ def "" : InstRI<0xA74, (outs), (ins brtarget16:$I2),
+ "j"##name##"\t$I2", []>;
+ def L : InstRIL<0xC04, (outs), (ins brtarget32:$I2),
+ "jg"##name##"\t$I2", []>;
}
}
-let isAsmParserOnly = 1 in {
- defm AsmJO : CondExtendedMnemonic<1, "o">;
- defm AsmJH : CondExtendedMnemonic<2, "h">;
- defm AsmJNLE : CondExtendedMnemonic<3, "nle">;
- defm AsmJL : CondExtendedMnemonic<4, "l">;
- defm AsmJNHE : CondExtendedMnemonic<5, "nhe">;
- defm AsmJLH : CondExtendedMnemonic<6, "lh">;
- defm AsmJNE : CondExtendedMnemonic<7, "ne">;
- defm AsmJE : CondExtendedMnemonic<8, "e">;
- defm AsmJNLH : CondExtendedMnemonic<9, "nlh">;
- defm AsmJHE : CondExtendedMnemonic<10, "he">;
- defm AsmJNL : CondExtendedMnemonic<11, "nl">;
- defm AsmJLE : CondExtendedMnemonic<12, "le">;
- defm AsmJNH : CondExtendedMnemonic<13, "nh">;
- defm AsmJNO : CondExtendedMnemonic<14, "no">;
-}
+defm AsmJO : CondExtendedMnemonic<1, "o">;
+defm AsmJH : CondExtendedMnemonic<2, "h">;
+defm AsmJNLE : CondExtendedMnemonic<3, "nle">;
+defm AsmJL : CondExtendedMnemonic<4, "l">;
+defm AsmJNHE : CondExtendedMnemonic<5, "nhe">;
+defm AsmJLH : CondExtendedMnemonic<6, "lh">;
+defm AsmJNE : CondExtendedMnemonic<7, "ne">;
+defm AsmJE : CondExtendedMnemonic<8, "e">;
+defm AsmJNLH : CondExtendedMnemonic<9, "nlh">;
+defm AsmJHE : CondExtendedMnemonic<10, "he">;
+defm AsmJNL : CondExtendedMnemonic<11, "nl">;
+defm AsmJLE : CondExtendedMnemonic<12, "le">;
+defm AsmJNH : CondExtendedMnemonic<13, "nh">;
+defm AsmJNO : CondExtendedMnemonic<14, "no">;
def Select32 : SelectWrapper<GR32>;
def Select64 : SelectWrapper<GR64>;
@@ -112,24 +108,22 @@ def Select64 : SelectWrapper<GR64>;
let isCall = 1, Defs = [R0D, R1D, R2D, R3D, R4D, R5D, R14D,
F0D, F1D, F2D, F3D, F4D, F5D, F6D, F7D],
R1 = 14, isCodeGenOnly = 1 in {
- def BRAS : InstRI<0xA75, (outs), (ins pcrel16call:$dst, variable_ops),
- "bras\t%r14, $dst", []>;
- def BRASL : InstRIL<0xC05, (outs), (ins pcrel32call:$dst, variable_ops),
- "brasl\t%r14, $dst", [(z_call pcrel32call:$dst)]>;
- def BASR : InstRR<0x0D, (outs), (ins ADDR64:$dst, variable_ops),
- "basr\t%r14, $dst", [(z_call ADDR64:$dst)]>;
+ def BRAS : InstRI<0xA75, (outs), (ins pcrel16call:$I2, variable_ops),
+ "bras\t%r14, $I2", []>;
+ def BRASL : InstRIL<0xC05, (outs), (ins pcrel32call:$I2, variable_ops),
+ "brasl\t%r14, $I2", [(z_call pcrel32call:$I2)]>;
+ def BASR : InstRR<0x0D, (outs), (ins ADDR64:$R2, variable_ops),
+ "basr\t%r14, $R2", [(z_call ADDR64:$R2)]>;
}
// Define the general form of the call instructions for the asm parser.
// These instructions don't hard-code %r14 as the return address register.
-let isAsmParserOnly = 1 in {
- def AsmBRAS : InstRI<0xA75, (outs), (ins GR64:$save, brtarget16:$dst),
- "bras\t$save, $dst", []>;
- def AsmBRASL : InstRIL<0xC05, (outs), (ins GR64:$save, brtarget32:$dst),
- "brasl\t$save, $dst", []>;
- def AsmBASR : InstRR<0x0D, (outs), (ins GR64:$save, ADDR64:$dst),
- "basr\t$save, $dst", []>;
-}
+def AsmBRAS : InstRI<0xA75, (outs), (ins GR64:$R1, brtarget16:$I2),
+ "bras\t$R1, $I2", []>;
+def AsmBRASL : InstRIL<0xC05, (outs), (ins GR64:$R1, brtarget32:$I2),
+ "brasl\t$R1, $I2", []>;
+def AsmBASR : InstRR<0x0D, (outs), (ins GR64:$R1, ADDR64:$R2),
+ "basr\t$R1, $R2", []>;
//===----------------------------------------------------------------------===//
// Move instructions
@@ -337,21 +331,21 @@ def STRVG : StoreRXY<"strvg", 0xE32F, storeu<bswap>, GR64>;
// Load BDX-style addresses.
let neverHasSideEffects = 1, Function = "la" in {
let PairType = "12" in
- def LA : InstRX<0x41, (outs GR64:$dst), (ins laaddr12pair:$src),
- "la\t$dst, $src",
- [(set GR64:$dst, laaddr12pair:$src)]>;
+ def LA : InstRX<0x41, (outs GR64:$R1), (ins laaddr12pair:$XBD2),
+ "la\t$R1, $XBD2",
+ [(set GR64:$R1, laaddr12pair:$XBD2)]>;
let PairType = "20" in
- def LAY : InstRXY<0xE371, (outs GR64:$dst), (ins laaddr20pair:$src),
- "lay\t$dst, $src",
- [(set GR64:$dst, laaddr20pair:$src)]>;
+ def LAY : InstRXY<0xE371, (outs GR64:$R1), (ins laaddr20pair:$XBD2),
+ "lay\t$R1, $XBD2",
+ [(set GR64:$R1, laaddr20pair:$XBD2)]>;
}
// Load a PC-relative address. There's no version of this instruction
// with a 16-bit offset, so there's no relaxation.
let neverHasSideEffects = 1 in {
- def LARL : InstRIL<0xC00, (outs GR64:$dst), (ins pcrel32:$src),
- "larl\t$dst, $src",
- [(set GR64:$dst, pcrel32:$src)]>;
+ def LARL : InstRIL<0xC00, (outs GR64:$R1), (ins pcrel32:$I2),
+ "larl\t$R1, $I2",
+ [(set GR64:$R1, pcrel32:$I2)]>;
}
//===----------------------------------------------------------------------===//
@@ -484,6 +478,7 @@ let Defs = [PSW] in {
def SGR : BinaryRRE<"sgr", 0xB909, sub, GR64, GR64>;
// Subtraction of memory.
+ defm SH : BinaryRXPair<"sh", 0x4B, 0xE37B, sub, GR32, sextloadi16>;
defm S : BinaryRXPair<"s", 0x5B, 0xE35B, sub, GR32, load>;
def SGF : BinaryRXY<"sgf", 0xE319, sub, GR64, sextloadi32>;
def SG : BinaryRXY<"sg", 0xE309, sub, GR64, load>;
@@ -903,9 +898,9 @@ let Defs = [PSW] in {
// Read a 32-bit access register into a GR32. As with all GR32 operations,
// the upper 32 bits of the enclosing GR64 remain unchanged, which is useful
// when a 64-bit address is stored in a pair of access registers.
-def EAR : InstRRE<0xB24F, (outs GR32:$dst), (ins access_reg:$src),
- "ear\t$dst, $src",
- [(set GR32:$dst, (z_extract_access access_reg:$src))]>;
+def EAR : InstRRE<0xB24F, (outs GR32:$R1), (ins access_reg:$R2),
+ "ear\t$R1, $R2",
+ [(set GR32:$R1, (z_extract_access access_reg:$R2))]>;
// Find leftmost one, AKA count leading zeros. The instruction actually
// returns a pair of GR64s, the first giving the number of leading zeros
diff --git a/lib/Target/SystemZ/SystemZOperands.td b/lib/Target/SystemZ/SystemZOperands.td
index 0abc3f7517..66d9c5fceb 100644
--- a/lib/Target/SystemZ/SystemZOperands.td
+++ b/lib/Target/SystemZ/SystemZOperands.td
@@ -24,14 +24,30 @@ class ImmediateAsmOperand<string name>
class Immediate<ValueType vt, code pred, SDNodeXForm xform, string asmop>
: PatLeaf<(vt imm), pred, xform>, Operand<vt> {
let PrintMethod = "print"##asmop##"Operand";
+ let DecoderMethod = "decode"##asmop##"Operand";
let ParserMatchClass = !cast<AsmOperandClass>(asmop);
}
+// Constructs an asm operand for a PC-relative address. SIZE says how
+// many bits there are.
+class PCRelAsmOperand<string size> : ImmediateAsmOperand<"PCRel"##size> {
+ let PredicateMethod = "isImm";
+ let ParserMethod = "parsePCRel"##size;
+}
+
+// Constructs an operand for a PC-relative address with address type VT.
+// ASMOP is the associated asm operand.
+class PCRelOperand<ValueType vt, AsmOperandClass asmop> : Operand<vt> {
+ let PrintMethod = "printPCRelOperand";
+ let ParserMatchClass = asmop;
+}
+
// Constructs both a DAG pattern and instruction operand for a PC-relative
-// address with address size VT. SELF is the name of the operand.
-class PCRelAddress<ValueType vt, string self>
+// address with address size VT. SELF is the name of the operand and
+// ASMOP is the associated asm operand.
+class PCRelAddress<ValueType vt, string self, AsmOperandClass asmop>
: ComplexPattern<vt, 1, "selectPCRelAddress", [z_pcrel_wrapper]>,
- Operand<vt> {
+ PCRelOperand<vt, asmop> {
let MIOperandInfo = (ops !cast<Operand>(self));
}
@@ -45,11 +61,14 @@ class AddressAsmOperand<string format, string bitsize, string dispsize>
}
// Constructs both a DAG pattern and instruction operand for an addressing mode.
-// The mode is selected by custom code in selectTYPE...SUFFIX(). The address
-// registers have BITSIZE bits and displacements have DISPSIZE bits. NUMOPS is
-// the number of operands that make up an address and OPERANDS lists the types
-// of those operands using (ops ...). FORMAT is the type of addressing mode,
-// which needs to match the names used in AddressAsmOperand.
+// The mode is selected by custom code in select<TYPE><DISPSIZE><SUFFIX>(),
+// encoded by custom code in get<FORMAT><DISPSIZE>Encoding() and decoded
+// by custom code in decode<TYPE><BITSIZE>Disp<DISPSIZE>Operand().
+// The address registers have BITSIZE bits and displacements have
+// DISPSIZE bits. NUMOPS is the number of operands that make up an
+// address and OPERANDS lists the types of those operands using (ops ...).
+// FORMAT is the type of addressing mode, which needs to match the names
+// used in AddressAsmOperand.
class AddressingMode<string type, string bitsize, string dispsize,
string suffix, int numops, string format, dag operands>
: ComplexPattern<!cast<ValueType>("i"##bitsize), numops,
@@ -57,6 +76,8 @@ class AddressingMode<string type, string bitsize, string dispsize,
[add, sub, or, frameindex, z_adjdynalloc]>,
Operand<!cast<ValueType>("i"##bitsize)> {
let PrintMethod = "print"##format##"Operand";
+ let EncoderMethod = "get"##format##dispsize##"Encoding";
+ let DecoderMethod = "decode"##format##bitsize##"Disp"##dispsize##"Operand";
let MIOperandInfo = operands;
let ParserMatchClass =
!cast<AddressAsmOperand>(format##bitsize##"Disp"##dispsize);
@@ -334,30 +355,39 @@ def fpimmneg0 : PatLeaf<(fpimm), [{ return N->isExactlyValue(-0.0); }]>;
// Symbolic address operands
//===----------------------------------------------------------------------===//
+// PC-relative asm operands.
+def PCRel16 : PCRelAsmOperand<"16">;
+def PCRel32 : PCRelAsmOperand<"32">;
+
// PC-relative offsets of a basic block. The offset is sign-extended
// and multiplied by 2.
-def brtarget16 : Operand<OtherVT> {
+def brtarget16 : PCRelOperand<OtherVT, PCRel16> {
let EncoderMethod = "getPC16DBLEncoding";
+ let DecoderMethod = "decodePC16DBLOperand";
}
-def brtarget32 : Operand<OtherVT> {
+def brtarget32 : PCRelOperand<OtherVT, PCRel32> {
let EncoderMethod = "getPC32DBLEncoding";
+ let DecoderMethod = "decodePC32DBLOperand";
}
// A PC-relative offset of a global value. The offset is sign-extended
// and multiplied by 2.
-def pcrel32 : PCRelAddress<i64, "pcrel32"> {
+def pcrel32 : PCRelAddress<i64, "pcrel32", PCRel32> {
let EncoderMethod = "getPC32DBLEncoding";
+ let DecoderMethod = "decodePC32DBLOperand";
}
// A PC-relative offset of a global value when the value is used as a
// call target. The offset is sign-extended and multiplied by 2.
-def pcrel16call : PCRelAddress<i64, "pcrel16call"> {
+def pcrel16call : PCRelAddress<i64, "pcrel16call", PCRel16> {
let PrintMethod = "printCallOperand";
let EncoderMethod = "getPLT16DBLEncoding";
+ let DecoderMethod = "decodePC16DBLOperand";
}
-def pcrel32call : PCRelAddress<i64, "pcrel32call"> {
+def pcrel32call : PCRelAddress<i64, "pcrel32call", PCRel32> {
let PrintMethod = "printCallOperand";
let EncoderMethod = "getPLT32DBLEncoding";
+ let DecoderMethod = "decodePC32DBLOperand";
}
//===----------------------------------------------------------------------===//
diff --git a/lib/Target/SystemZ/SystemZTargetMachine.cpp b/lib/Target/SystemZ/SystemZTargetMachine.cpp
index 8c4c456ef5..17450ee53e 100644
--- a/lib/Target/SystemZ/SystemZTargetMachine.cpp
+++ b/lib/Target/SystemZ/SystemZTargetMachine.cpp
@@ -33,6 +33,7 @@ SystemZTargetMachine::SystemZTargetMachine(const Target &T, StringRef TT,
"-f32:32-f64:64-f128:64-a0:8:16-n32:64"),
InstrInfo(*this), TLInfo(*this), TSInfo(*this),
FrameLowering(*this, Subtarget) {
+ initAsmInfo();
}
namespace {
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 019a670083..263eb5ed9c 100644
--- a/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -1196,6 +1196,7 @@ RewriteIntelBracExpression(SmallVectorImpl<AsmRewrite> *AsmRewrites,
}
}
assert (Found && "Unable to rewrite ImmDisp.");
+ (void)Found;
} else {
// We have a symbolic and an immediate displacement, but no displacement
// before the bracketed expression. Put the immediate displacement
diff --git a/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp b/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
index 226ebca8cb..d5aab8e0a2 100644
--- a/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
+++ b/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
@@ -263,7 +263,7 @@ static MCRegisterInfo *createX86MCRegisterInfo(StringRef TT) {
return X;
}
-static MCAsmInfo *createX86MCAsmInfo(StringRef TT) {
+static MCAsmInfo *createX86MCAsmInfo(const MCRegisterInfo &MRI, StringRef TT) {
Triple TheTriple(TT);
bool is64Bit = TheTriple.getArch() == Triple::x86_64;
@@ -290,14 +290,16 @@ static MCAsmInfo *createX86MCAsmInfo(StringRef TT) {
int stackGrowth = is64Bit ? -8 : -4;
// Initial state of the frame pointer is esp+stackGrowth.
- MachineLocation Dst(MachineLocation::VirtualFP);
- MachineLocation Src(is64Bit ? X86::RSP : X86::ESP, stackGrowth);
- MAI->addInitialFrameState(0, Dst, Src);
+ unsigned StackPtr = is64Bit ? X86::RSP : X86::ESP;
+ MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(
+ 0, MRI.getDwarfRegNum(StackPtr, true), -stackGrowth);
+ MAI->addInitialFrameState(Inst);
// Add return address to move list
- MachineLocation CSDst(is64Bit ? X86::RSP : X86::ESP, stackGrowth);
- MachineLocation CSSrc(is64Bit ? X86::RIP : X86::EIP);
- MAI->addInitialFrameState(0, CSDst, CSSrc);
+ unsigned InstPtr = is64Bit ? X86::RIP : X86::EIP;
+ MCCFIInstruction Inst2 = MCCFIInstruction::createOffset(
+ 0, MRI.getDwarfRegNum(InstPtr, true), stackGrowth);
+ MAI->addInitialFrameState(Inst2);
return MAI;
}
diff --git a/lib/Target/X86/X86InstrMMX.td b/lib/Target/X86/X86InstrMMX.td
index 49721df7c1..07314a092c 100644
--- a/lib/Target/X86/X86InstrMMX.td
+++ b/lib/Target/X86/X86InstrMMX.td
@@ -357,21 +357,21 @@ defm MMX_PHADDSW : SS3I_binop_rm_int_mm<0x03, "phaddsw",int_x86_ssse3_phadd_sw,
defm MMX_PSUBB : MMXI_binop_rm_int<0xF8, "psubb", int_x86_mmx_psub_b,
MMX_INTALU_ITINS>;
defm MMX_PSUBW : MMXI_binop_rm_int<0xF9, "psubw", int_x86_mmx_psub_w,
- MMX_INTALU_ITINS, 1>;
+ MMX_INTALU_ITINS>;
defm MMX_PSUBD : MMXI_binop_rm_int<0xFA, "psubd", int_x86_mmx_psub_d,
- MMX_INTALU_ITINS, 1>;
+ MMX_INTALU_ITINS>;
defm MMX_PSUBQ : MMXI_binop_rm_int<0xFB, "psubq", int_x86_mmx_psub_q,
- MMX_INTALUQ_ITINS, 1>;
+ MMX_INTALUQ_ITINS>;
defm MMX_PSUBSB : MMXI_binop_rm_int<0xE8, "psubsb" , int_x86_mmx_psubs_b,
- MMX_INTALU_ITINS, 1>;
+ MMX_INTALU_ITINS>;
defm MMX_PSUBSW : MMXI_binop_rm_int<0xE9, "psubsw" , int_x86_mmx_psubs_w,
- MMX_INTALU_ITINS, 1>;
+ MMX_INTALU_ITINS>;
defm MMX_PSUBUSB : MMXI_binop_rm_int<0xD8, "psubusb", int_x86_mmx_psubus_b,
- MMX_INTALU_ITINS, 1>;
+ MMX_INTALU_ITINS>;
defm MMX_PSUBUSW : MMXI_binop_rm_int<0xD9, "psubusw", int_x86_mmx_psubus_w,
- MMX_INTALU_ITINS, 1>;
+ MMX_INTALU_ITINS>;
defm MMX_PHSUBW : SS3I_binop_rm_int_mm<0x05, "phsubw", int_x86_ssse3_phsub_w,
MMX_PHADDSUBW>;
diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp
index 00fa47f80b..0422a61fb8 100644
--- a/lib/Target/X86/X86TargetMachine.cpp
+++ b/lib/Target/X86/X86TargetMachine.cpp
@@ -49,6 +49,7 @@ X86_32TargetMachine::X86_32TargetMachine(const Target &T, StringRef TT,
TLInfo(*this),
TSInfo(*this),
JITInfo(*this) {
+ initAsmInfo();
}
void X86_64TargetMachine::anchor() { }
@@ -69,6 +70,7 @@ X86_64TargetMachine::X86_64TargetMachine(const Target &T, StringRef TT,
TLInfo(*this),
TSInfo(*this),
JITInfo(*this) {
+ initAsmInfo();
}
/// X86TargetMachine ctor - Create an X86 target.
diff --git a/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.cpp b/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.cpp
index e38da34a81..10bb6dfa92 100644
--- a/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.cpp
+++ b/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.cpp
@@ -51,13 +51,13 @@ static MCSubtargetInfo *createXCoreMCSubtargetInfo(StringRef TT, StringRef CPU,
return X;
}
-static MCAsmInfo *createXCoreMCAsmInfo(StringRef TT) {
+static MCAsmInfo *createXCoreMCAsmInfo(const MCRegisterInfo &MRI,
+ StringRef TT) {
MCAsmInfo *MAI = new XCoreMCAsmInfo(TT);
// Initial state of the frame pointer is SP.
- MachineLocation Dst(MachineLocation::VirtualFP);
- MachineLocation Src(XCore::SP, 0);
- MAI->addInitialFrameState(0, Dst, Src);
+ MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(0, XCore::SP, 0);
+ MAI->addInitialFrameState(Inst);
return MAI;
}
diff --git a/lib/Target/XCore/XCoreTargetMachine.cpp b/lib/Target/XCore/XCoreTargetMachine.cpp
index 07e5fff141..3ef1520c71 100644
--- a/lib/Target/XCore/XCoreTargetMachine.cpp
+++ b/lib/Target/XCore/XCoreTargetMachine.cpp
@@ -33,6 +33,7 @@ XCoreTargetMachine::XCoreTargetMachine(const Target &T, StringRef TT,
FrameLowering(Subtarget),
TLInfo(*this),
TSInfo(*this) {
+ initAsmInfo();
}
namespace {
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp
index 0ef900e2b9..4a9cb27b03 100644
--- a/lib/Transforms/IPO/GlobalOpt.cpp
+++ b/lib/Transforms/IPO/GlobalOpt.cpp
@@ -3323,8 +3323,6 @@ bool GlobalOpt::runOnModule(Module &M) {
// Try to find the llvm.globalctors list.
GlobalVariable *GlobalCtors = FindGlobalCtors(M);
- Function *CXAAtExitFn = FindCXAAtExit(M, TLI);
-
bool LocalChange = true;
while (LocalChange) {
LocalChange = false;
@@ -3342,7 +3340,9 @@ bool GlobalOpt::runOnModule(Module &M) {
// Resolve aliases, when possible.
LocalChange |= OptimizeGlobalAliases(M);
- // Try to remove trivial global destructors.
+ // Try to remove trivial global destructors if they are not removed
+ // already.
+ Function *CXAAtExitFn = FindCXAAtExit(M, TLI);
if (CXAAtExitFn)
LocalChange |= OptimizeEmptyGlobalCXXDtors(CXAAtExitFn);
diff --git a/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp b/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
index 87d56214a3..51ca29bc07 100644
--- a/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
+++ b/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
@@ -846,7 +846,7 @@ Instruction *InstCombiner::visitSDiv(BinaryOperator &I) {
/// FP value and:
/// 1) 1/C is exact, or
/// 2) reciprocal is allowed.
-/// If the convertion was successful, the simplified expression "X * 1/C" is
+/// If the conversion was successful, the simplified expression "X * 1/C" is
/// returned; otherwise, NULL is returned.
///
static Instruction *CvtFDivConstToReciprocal(Value *Dividend,
diff --git a/lib/Transforms/ObjCARC/ObjCARCOpts.cpp b/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
index 43e2e20035..4bf25facc6 100644
--- a/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
+++ b/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
@@ -107,6 +107,12 @@ namespace {
return std::make_pair(Vector.begin() + Pair.first->second, false);
}
+ iterator find(const KeyT &Key) {
+ typename MapTy::iterator It = Map.find(Key);
+ if (It == Map.end()) return Vector.end();
+ return Vector.begin() + It->second;
+ }
+
const_iterator find(const KeyT &Key) const {
typename MapTy::const_iterator It = Map.find(Key);
if (It == Map.end()) return Vector.end();
@@ -253,6 +259,40 @@ static bool DoesRetainableObjPtrEscape(const User *Ptr) {
return false;
}
+/// This is a wrapper around getUnderlyingObjCPtr along the lines of
+/// GetUnderlyingObjects except that it returns early when it sees the first
+/// alloca.
+static inline bool AreAnyUnderlyingObjectsAnAlloca(const Value *V) {
+ SmallPtrSet<const Value *, 4> Visited;
+ SmallVector<const Value *, 4> Worklist;
+ Worklist.push_back(V);
+ do {
+ const Value *P = Worklist.pop_back_val();
+ P = GetUnderlyingObjCPtr(P);
+
+ if (isa<AllocaInst>(P))
+ return true;
+
+ if (!Visited.insert(P))
+ continue;
+
+ if (const SelectInst *SI = dyn_cast<const SelectInst>(P)) {
+ Worklist.push_back(SI->getTrueValue());
+ Worklist.push_back(SI->getFalseValue());
+ continue;
+ }
+
+ if (const PHINode *PN = dyn_cast<const PHINode>(P)) {
+ for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i)
+ Worklist.push_back(PN->getIncomingValue(i));
+ continue;
+ }
+ } while (!Worklist.empty());
+
+ return false;
+}
+
+
/// @}
///
/// \defgroup ARCOpt ARC Optimization.
@@ -300,18 +340,18 @@ STATISTIC(NumNoops, "Number of no-op objc calls eliminated");
STATISTIC(NumPartialNoops, "Number of partially no-op objc calls eliminated");
STATISTIC(NumAutoreleases,"Number of autoreleases converted to releases");
STATISTIC(NumRets, "Number of return value forwarding "
- "retain+autoreleaes eliminated");
+ "retain+autoreleases eliminated");
STATISTIC(NumRRs, "Number of retain+release paths eliminated");
STATISTIC(NumPeeps, "Number of calls peephole-optimized");
+#ifndef NDEBUG
STATISTIC(NumRetainsBeforeOpt,
- "Number of retains before optimization.");
+ "Number of retains before optimization");
STATISTIC(NumReleasesBeforeOpt,
- "Number of releases before optimization.");
-#ifndef NDEBUG
+ "Number of releases before optimization");
STATISTIC(NumRetainsAfterOpt,
- "Number of retains after optimization.");
+ "Number of retains after optimization");
STATISTIC(NumReleasesAfterOpt,
- "Number of releases after optimization.");
+ "Number of releases after optimization");
#endif
namespace {
@@ -414,8 +454,18 @@ namespace {
/// sequence.
SmallPtrSet<Instruction *, 2> ReverseInsertPts;
+ /// Does this pointer have multiple owners?
+ ///
+ /// In the presence of multiple owners with the same provenance caused by
+ /// allocas, we can not assume that the frontend will emit balanced code
+ /// since it could put the release on the pointer loaded from the
+ /// alloca. This confuses the optimizer so we must be more conservative in
+ /// that case.
+ bool MultipleOwners;
+
RRInfo() :
- KnownSafe(false), IsTailCallRelease(false), ReleaseMetadata(0) {}
+ KnownSafe(false), IsTailCallRelease(false), ReleaseMetadata(0),
+ MultipleOwners(false) {}
void clear();
@@ -428,6 +478,7 @@ namespace {
void RRInfo::clear() {
KnownSafe = false;
IsTailCallRelease = false;
+ MultipleOwners = false;
ReleaseMetadata = 0;
Calls.clear();
ReverseInsertPts.clear();
@@ -457,10 +508,12 @@ namespace {
Seq(S_None) {}
void SetKnownPositiveRefCount() {
+ DEBUG(dbgs() << "Setting Known Positive.\n");
KnownPositiveRefCount = true;
}
void ClearKnownPositiveRefCount() {
+ DEBUG(dbgs() << "Clearing Known Positive.\n");
KnownPositiveRefCount = false;
}
@@ -516,6 +569,7 @@ PtrState::Merge(const PtrState &Other, bool TopDown) {
RRI.IsTailCallRelease = RRI.IsTailCallRelease &&
Other.RRI.IsTailCallRelease;
RRI.Calls.insert(Other.RRI.Calls.begin(), Other.RRI.Calls.end());
+ RRI.MultipleOwners |= Other.RRI.MultipleOwners;
// Merge the insert point sets. If there are any differences,
// that makes this a partial merge.
@@ -587,14 +641,26 @@ namespace {
/// definition.
void SetAsExit() { BottomUpPathCount = 1; }
+ /// Attempt to find the PtrState object describing the top down state for
+ /// pointer Arg. Return a new initialized PtrState describing the top down
+ /// state for Arg if we do not find one.
PtrState &getPtrTopDownState(const Value *Arg) {
return PerPtrTopDown[Arg];
}
+ /// Attempt to find the PtrState object describing the bottom up state for
+ /// pointer Arg. Return a new initialized PtrState describing the bottom up
+ /// state for Arg if we do not find one.
PtrState &getPtrBottomUpState(const Value *Arg) {
return PerPtrBottomUp[Arg];
}
+ /// Attempt to find the PtrState object describing the bottom up state for
+ /// pointer Arg.
+ ptr_iterator findPtrBottomUpState(const Value *Arg) {
+ return PerPtrBottomUp.find(Arg);
+ }
+
void clearBottomUpPointers() {
PerPtrBottomUp.clear();
}
@@ -1440,11 +1506,7 @@ void ObjCARCOpt::OptimizeIndividualCalls(Function &F) {
case IC_RetainBlock:
// If we strength reduce an objc_retainBlock to an objc_retain, continue
// onto the objc_retain peephole optimizations. Otherwise break.
- if (!OptimizeRetainBlockCall(F, Inst, Class))
- break;
- // FALLTHROUGH
- case IC_Retain:
- ++NumRetainsBeforeOpt;
+ OptimizeRetainBlockCall(F, Inst, Class);
break;
case IC_RetainRV:
if (OptimizeRetainRVCall(F, Inst))
@@ -1453,9 +1515,6 @@ void ObjCARCOpt::OptimizeIndividualCalls(Function &F) {
case IC_AutoreleaseRV:
OptimizeAutoreleaseRVCall(F, Inst, Class);
break;
- case IC_Release:
- ++NumReleasesBeforeOpt;
- break;
}
// objc_autorelease(x) -> objc_release(x) if x is otherwise unused.
@@ -1866,6 +1925,28 @@ ObjCARCOpt::VisitInstructionBottomUp(Instruction *Inst,
case IC_None:
// These are irrelevant.
return NestingDetected;
+ case IC_User:
+ // If we have a store into an alloca of a pointer we are tracking, the
+ // pointer has multiple owners implying that we must be more conservative.
+ //
+ // This comes up in the context of a pointer being ``KnownSafe''. In the
+ // presense of a block being initialized, the frontend will emit the
+ // objc_retain on the original pointer and the release on the pointer loaded
+ // from the alloca. The optimizer will through the provenance analysis
+ // realize that the two are related, but since we only require KnownSafe in
+ // one direction, will match the inner retain on the original pointer with
+ // the guard release on the original pointer. This is fixed by ensuring that
+ // in the presense of allocas we only unconditionally remove pointers if
+ // both our retain and our release are KnownSafe.
+ if (StoreInst *SI = dyn_cast<StoreInst>(Inst)) {
+ if (AreAnyUnderlyingObjectsAnAlloca(SI->getPointerOperand())) {
+ BBState::ptr_iterator I = MyStates.findPtrBottomUpState(
+ StripPointerCastsAndObjCCalls(SI->getValueOperand()));
+ if (I != MyStates.bottom_up_ptr_end())
+ I->second.RRI.MultipleOwners = true;
+ }
+ }
+ break;
default:
break;
}
@@ -2412,8 +2493,10 @@ ObjCARCOpt::ConnectTDBUTraversals(DenseMap<const BasicBlock *, BBState>
bool KnownSafe,
bool &AnyPairsCompletelyEliminated) {
// If a pair happens in a region where it is known that the reference count
- // is already incremented, we can similarly ignore possible decrements.
+ // is already incremented, we can similarly ignore possible decrements unless
+ // we are dealing with a retainable object with multiple provenance sources.
bool KnownSafeTD = true, KnownSafeBU = true;
+ bool MultipleOwners = false;
// Connect the dots between the top-down-collected RetainsToMove and
// bottom-up-collected ReleasesToMove to form sets of related calls.
@@ -2432,6 +2515,7 @@ ObjCARCOpt::ConnectTDBUTraversals(DenseMap<const BasicBlock *, BBState>
assert(It != Retains.end());
const RRInfo &NewRetainRRI = It->second;
KnownSafeTD &= NewRetainRRI.KnownSafe;
+ MultipleOwners |= NewRetainRRI.MultipleOwners;
for (SmallPtrSet<Instruction *, 2>::const_iterator
LI = NewRetainRRI.Calls.begin(),
LE = NewRetainRRI.Calls.end(); LI != LE; ++LI) {
@@ -2525,9 +2609,12 @@ ObjCARCOpt::ConnectTDBUTraversals(DenseMap<const BasicBlock *, BBState>
if (NewRetains.empty()) break;
}
- // If the pointer is known incremented or nested, we can safely delete the
- // pair regardless of what's between them.
- if (KnownSafeTD || KnownSafeBU) {
+ // If the pointer is known incremented in 1 direction and we do not have
+ // MultipleOwners, we can safely remove the retain/releases. Otherwise we need
+ // to be known safe in both directions.
+ bool UnconditionallySafe = (KnownSafeTD && KnownSafeBU) ||
+ ((KnownSafeTD || KnownSafeBU) && !MultipleOwners);
+ if (UnconditionallySafe) {
RetainsToMove.ReverseInsertPts.clear();
ReleasesToMove.ReverseInsertPts.clear();
NewCount = 0;
@@ -3050,6 +3137,12 @@ bool ObjCARCOpt::runOnFunction(Function &F) {
PA.setAA(&getAnalysis<AliasAnalysis>());
+#ifndef NDEBUG
+ if (AreStatisticsEnabled()) {
+ GatherStatistics(F, false);
+ }
+#endif
+
// This pass performs several distinct transformations. As a compile-time aid
// when compiling code that isn't ObjC, skip these if the relevant ObjC
// library functions aren't declared.
diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp
index 0dd6abb1ae..58a1a74655 100644
--- a/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -318,6 +318,93 @@ private:
ValueMap WidenMap;
};
+/// \brief Check if conditionally executed loads are hoistable.
+///
+/// This class has two functions: isHoistableLoad and canHoistAllLoads.
+/// isHoistableLoad should be called on all load instructions that are executed
+/// conditionally. After all conditional loads are processed, the client should
+/// call canHoistAllLoads to determine if all of the conditional executed loads
+/// have an unconditional memory access to the same memory address in the loop.
+class LoadHoisting {
+ typedef SmallPtrSet<Value *, 8> MemorySet;
+
+ Loop *TheLoop;
+ DominatorTree *DT;
+ MemorySet CondLoadAddrSet;
+
+public:
+ LoadHoisting(Loop *L, DominatorTree *D) : TheLoop(L), DT(D) {}
+
+ /// \brief Check if the instruction is a load with a identifiable address.
+ bool isHoistableLoad(Instruction *L);
+
+ /// \brief Check if all of the conditional loads are hoistable because there
+ /// exists an unconditional memory access to the same address in the loop.
+ bool canHoistAllLoads();
+};
+
+bool LoadHoisting::isHoistableLoad(Instruction *L) {
+ LoadInst *LI = dyn_cast<LoadInst>(L);
+ if (!LI)
+ return false;
+
+ CondLoadAddrSet.insert(LI->getPointerOperand());
+ return true;
+}
+
+static void addMemAccesses(BasicBlock *BB, SmallPtrSet<Value *, 8> &Set) {
+ for (BasicBlock::iterator BI = BB->begin(), BE = BB->end(); BI != BE; ++BI) {
+ Instruction *I = &*BI;
+ Value *Addr = 0;
+
+ // Try a load.
+ LoadInst *LI = dyn_cast<LoadInst>(I);
+ if (LI) {
+ Addr = LI->getPointerOperand();
+ Set.insert(Addr);
+ continue;
+ }
+
+ // Try a store.
+ StoreInst *SI = dyn_cast<StoreInst>(I);
+ if (!SI)
+ continue;
+
+ Addr = SI->getPointerOperand();
+ Set.insert(Addr);
+ }
+}
+
+bool LoadHoisting::canHoistAllLoads() {
+ // No conditional loads.
+ if (CondLoadAddrSet.empty())
+ return true;
+
+ MemorySet UncondMemAccesses;
+ std::vector<BasicBlock*> &LoopBlocks = TheLoop->getBlocksVector();
+ BasicBlock *LoopLatch = TheLoop->getLoopLatch();
+
+ // Iterate over the unconditional blocks and collect memory access addresses.
+ for (unsigned i = 0, e = LoopBlocks.size(); i < e; ++i) {
+ BasicBlock *BB = LoopBlocks[i];
+
+ // Ignore conditional blocks.
+ if (BB != LoopLatch && !DT->dominates(BB, LoopLatch))
+ continue;
+
+ addMemAccesses(BB, UncondMemAccesses);
+ }
+
+ // And make sure there is a matching unconditional access for every
+ // conditional load.
+ for (MemorySet::iterator MI = CondLoadAddrSet.begin(),
+ ME = CondLoadAddrSet.end(); MI != ME; ++MI)
+ if (!UncondMemAccesses.count(*MI))
+ return false;
+
+ return true;
+}
+
/// LoopVectorizationLegality checks if it is legal to vectorize a loop, and
/// to what vectorization factor.
/// This class does not look at the profitability of vectorization, only the
@@ -337,7 +424,8 @@ public:
DominatorTree *DT, TargetTransformInfo* TTI,
AliasAnalysis *AA, TargetLibraryInfo *TLI)
: TheLoop(L), SE(SE), DL(DL), DT(DT), TTI(TTI), AA(AA), TLI(TLI),
- Induction(0), WidestIndTy(0), HasFunNoNaNAttr(false) {}
+ Induction(0), WidestIndTy(0), HasFunNoNaNAttr(false),
+ LoadSpeculation(L, DT) {}
/// This enum represents the kinds of reductions that we support.
enum ReductionKind {
@@ -598,6 +686,9 @@ private:
RuntimePointerCheck PtrRtCheck;
/// Can we assume the absence of NaNs.
bool HasFunNoNaNAttr;
+
+ /// Utility to determine whether loads can be speculated.
+ LoadHoisting LoadSpeculation;
};
/// LoopVectorizationCostModel - estimates the expected speedups due to
@@ -1389,9 +1480,10 @@ InnerLoopVectorizer::createEmptyLoop(LoopVectorizationLegality *Legal) {
case LoopVectorizationLegality::IK_NoInduction:
llvm_unreachable("Unknown induction");
case LoopVectorizationLegality::IK_IntInduction: {
- // Handle the integer induction counter:
+ // Handle the integer induction counter.
assert(OrigPhi->getType()->isIntegerTy() && "Invalid type");
- assert(OrigPhi == OldInduction && "Unknown integer PHI");
+
+ // We have the canonical induction variable.
if (OrigPhi == OldInduction) {
// Create a truncated version of the resume value for the scalar loop,
// we might have promoted the type to a larger width.
@@ -1402,11 +1494,20 @@ InnerLoopVectorizer::createEmptyLoop(LoopVectorizationLegality *Legal) {
for (unsigned I = 0, E = LoopBypassBlocks.size(); I != E; ++I)
TruncResumeVal->addIncoming(II.StartValue, LoopBypassBlocks[I]);
TruncResumeVal->addIncoming(EndValue, VecBody);
+
+ // We know what the end value is.
+ EndValue = IdxEndRoundDown;
+ // We also know which PHI node holds it.
+ ResumeIndex = ResumeVal;
+ break;
}
- // We know what the end value is.
- EndValue = IdxEndRoundDown;
- // We also know which PHI node holds it.
- ResumeIndex = ResumeVal;
+
+ // Not the canonical induction variable - add the vector loop count to the
+ // start value.
+ Value *CRD = BypassBuilder.CreateSExtOrTrunc(CountRoundDown,
+ II.StartValue->getType(),
+ "cast.crd");
+ EndValue = BypassBuilder.CreateAdd(CRD, II.StartValue , "ind.end");
break;
}
case LoopVectorizationLegality::IK_ReverseIntInduction: {
@@ -2056,12 +2157,25 @@ InnerLoopVectorizer::vectorizeBlockInLoop(LoopVectorizationLegality *Legal,
case LoopVectorizationLegality::IK_NoInduction:
llvm_unreachable("Unknown induction");
case LoopVectorizationLegality::IK_IntInduction: {
- assert(P == OldInduction && "Unexpected PHI");
- // We might have had to extend the type.
- Value *Trunc = Builder.CreateTrunc(Induction, P->getType());
- Value *Broadcasted = getBroadcastInstrs(Trunc);
- // After broadcasting the induction variable we need to make the
- // vector consecutive by adding 0, 1, 2 ...
+ assert(P->getType() == II.StartValue->getType() && "Types must match");
+ Type *PhiTy = P->getType();
+ Value *Broadcasted;
+ if (P == OldInduction) {
+ // Handle the canonical induction variable. We might have had to
+ // extend the type.
+ Broadcasted = Builder.CreateTrunc(Induction, PhiTy);
+ } else {
+ // Handle other induction variables that are now based on the
+ // canonical one.
+ Value *NormalizedIdx = Builder.CreateSub(Induction, ExtendedIdx,
+ "normalized.idx");
+ NormalizedIdx = Builder.CreateSExtOrTrunc(NormalizedIdx, PhiTy);
+ Broadcasted = Builder.CreateAdd(II.StartValue, NormalizedIdx,
+ "offset.idx");
+ }
+ Broadcasted = getBroadcastInstrs(Broadcasted);
+ // After broadcasting the induction variable we need to make the vector
+ // consecutive by adding 0, 1, 2, etc.
for (unsigned part = 0; part < UF; ++part)
Entry[part] = getConsecutiveVector(Broadcasted, VF * part, false);
continue;
@@ -2466,11 +2580,11 @@ bool LoopVectorizationLegality::canVectorizeInstrs() {
// Int inductions are special because we only allow one IV.
if (IK == IK_IntInduction) {
- if (Induction) {
- DEBUG(dbgs() << "LV: Found too many inductions."<< *Phi <<"\n");
- return false;
- }
- Induction = Phi;
+ // Use the phi node with the widest type as induction. Use the last
+ // one if there are multiple (no good reason for doing this other
+ // than it is expedient).
+ if (!Induction || PhiTy == WidestIndTy)
+ Induction = Phi;
}
DEBUG(dbgs() << "LV: Found an induction variable.\n");
@@ -3236,8 +3350,12 @@ bool LoopVectorizationLegality::blockNeedsPredication(BasicBlock *BB) {
bool LoopVectorizationLegality::blockCanBePredicated(BasicBlock *BB) {
for (BasicBlock::iterator it = BB->begin(), e = BB->end(); it != e; ++it) {
- // We don't predicate loads/stores at the moment.
- if (it->mayReadFromMemory() || it->mayWriteToMemory() || it->mayThrow())
+ // We might be able to hoist the load.
+ if (it->mayReadFromMemory() && !LoadSpeculation.isHoistableLoad(it))
+ return false;
+
+ // We don't predicate stores at the moment.
+ if (it->mayWriteToMemory() || it->mayThrow())
return false;
// The instructions below can trap.
@@ -3251,6 +3369,10 @@ bool LoopVectorizationLegality::blockCanBePredicated(BasicBlock *BB) {
}
}
+ // Check that we can actually speculate the hoistable loads.
+ if (!LoadSpeculation.canHoistAllLoads())
+ return false;
+
return true;
}
diff --git a/lib/Transforms/Vectorize/VecUtils.cpp b/lib/Transforms/Vectorize/VecUtils.cpp
index 55adf8a816..50d2af0f65 100644
--- a/lib/Transforms/Vectorize/VecUtils.cpp
+++ b/lib/Transforms/Vectorize/VecUtils.cpp
@@ -282,6 +282,7 @@ int BoUpSLP::getTreeCost(ArrayRef<Value *> VL) {
DEBUG(dbgs()<<"SLP: Adding to MustExtract "
"because of a safe out of tree usage.\n");
MustExtract.insert(*it);
+ continue;
}
if (Lane == -1) Lane = LaneMap[*I];
if (Lane != LaneMap[*I]) {
@@ -610,6 +611,9 @@ Value *BoUpSLP::Scalarize(ArrayRef<Value *> VL, VectorType *Ty) {
GatherInstructions.push_back(Vec);
}
+ for (unsigned i = 0; i < Ty->getNumElements(); ++i)
+ VectorizedValues[VL[i]] = Vec;
+
return Vec;
}
@@ -617,6 +621,7 @@ Value *BoUpSLP::vectorizeTree(ArrayRef<Value *> VL, int VF) {
Value *V = vectorizeTree_rec(VL, VF);
Instruction *LastInstr = GetLastInstr(VL, VL.size());
+ int LastInstrIdx = InstrIdx[LastInstr];
IRBuilder<> Builder(LastInstr);
for (ValueSet::iterator it = MustExtract.begin(), e = MustExtract.end();
it != e; ++it) {
@@ -625,7 +630,16 @@ Value *BoUpSLP::vectorizeTree(ArrayRef<Value *> VL, int VF) {
assert(LaneMap.count(I) && "Unable to find the lane for the external use");
Value *Idx = Builder.getInt32(LaneMap[I]);
Value *Extract = Builder.CreateExtractElement(Vec, Idx);
- I->replaceAllUsesWith(Extract);
+ bool Replaced = false;
+ for (Value::use_iterator U = I->use_begin(), UE = U->use_end(); U != UE;
+ ++U) {
+ Instruction *UI = cast<Instruction>(*U);
+ if (UI->getParent() != I->getParent() || InstrIdx[UI] > LastInstrIdx)
+ UI->replaceUsesOfWith(I ,Extract);
+ Replaced = true;
+ }
+ assert(Replaced && "Must replace at least one outside user");
+ (void)Replaced;
}
// We moved some instructions around. We have to number them again
@@ -633,6 +647,7 @@ Value *BoUpSLP::vectorizeTree(ArrayRef<Value *> VL, int VF) {
numberInstructions();
MustScalarize.clear();
MustExtract.clear();
+ VectorizedValues.clear();
return V;
}
@@ -690,7 +705,10 @@ Value *BoUpSLP::vectorizeTree_rec(ArrayRef<Value *> VL, int VF) {
IRBuilder<> Builder(GetLastInstr(VL, VF));
CastInst *CI = dyn_cast<CastInst>(VL0);
Value *V = Builder.CreateCast(CI->getOpcode(), InVec, VecTy);
- VectorizedValues[VL0] = V;
+
+ for (int i = 0; i < VF; ++i)
+ VectorizedValues[VL[i]] = V;
+
return V;
}
case Instruction::Add:
@@ -713,16 +731,19 @@ Value *BoUpSLP::vectorizeTree_rec(ArrayRef<Value *> VL, int VF) {
case Instruction::Xor: {
ValueList LHSVL, RHSVL;
for (int i = 0; i < VF; ++i) {
- RHSVL.push_back(cast<Instruction>(VL[i])->getOperand(0));
- LHSVL.push_back(cast<Instruction>(VL[i])->getOperand(1));
+ LHSVL.push_back(cast<Instruction>(VL[i])->getOperand(0));
+ RHSVL.push_back(cast<Instruction>(VL[i])->getOperand(1));
}
- Value *RHS = vectorizeTree_rec(RHSVL, VF);
Value *LHS = vectorizeTree_rec(LHSVL, VF);
+ Value *RHS = vectorizeTree_rec(RHSVL, VF);
IRBuilder<> Builder(GetLastInstr(VL, VF));
BinaryOperator *BinOp = cast<BinaryOperator>(VL0);
- Value *V = Builder.CreateBinOp(BinOp->getOpcode(), RHS,LHS);
- VectorizedValues[VL0] = V;
+ Value *V = Builder.CreateBinOp(BinOp->getOpcode(), LHS,RHS);
+
+ for (int i = 0; i < VF; ++i)
+ VectorizedValues[VL[i]] = V;
+
return V;
}
case Instruction::Load: {
@@ -739,7 +760,10 @@ Value *BoUpSLP::vectorizeTree_rec(ArrayRef<Value *> VL, int VF) {
VecTy->getPointerTo());
LI = Builder.CreateLoad(VecPtr);
LI->setAlignment(Alignment);
- VectorizedValues[VL0] = LI;
+
+ for (int i = 0; i < VF; ++i)
+ VectorizedValues[VL[i]] = LI;
+
return LI;
}
case Instruction::Store: {
@@ -762,9 +786,7 @@ Value *BoUpSLP::vectorizeTree_rec(ArrayRef<Value *> VL, int VF) {
return 0;
}
default:
- Value *S = Scalarize(VL, VecTy);
- VectorizedValues[VL0] = S;
- return S;
+ return Scalarize(VL, VecTy);
}
}
diff --git a/test/CodeGen/ARM/2013-05-13-DAGCombiner-undef-mask.ll b/test/CodeGen/ARM/2013-05-13-DAGCombiner-undef-mask.ll
new file mode 100644
index 0000000000..8f6709ec5e
--- /dev/null
+++ b/test/CodeGen/ARM/2013-05-13-DAGCombiner-undef-mask.ll
@@ -0,0 +1,10 @@
+; RUN: llc < %s
+target triple = "armv7-none-linux-gnueabi"
+
+define <3 x i64> @shuffle(i1 %dec1, i1 %dec0, <3 x i64> %b) {
+entry:
+ %.sink = select i1 %dec1, <3 x i64> %b, <3 x i64> zeroinitializer
+ %.sink15 = select i1 %dec0, <3 x i64> %b, <3 x i64> zeroinitializer
+ %vecinit7 = shufflevector <3 x i64> %.sink, <3 x i64> %.sink15, <3 x i32> <i32 0, i32 4, i32 undef>
+ ret <3 x i64> %vecinit7
+}
diff --git a/test/CodeGen/ARM/call-tc.ll b/test/CodeGen/ARM/call-tc.ll
index 58fbbda0f6..c7e17ea353 100644
--- a/test/CodeGen/ARM/call-tc.ll
+++ b/test/CodeGen/ARM/call-tc.ll
@@ -162,3 +162,20 @@ define i32 @t9() nounwind {
declare %class.MutexLock* @_ZN9MutexLockC1Ev(%class.MutexLock*) unnamed_addr nounwind align 2
declare %class.MutexLock* @_ZN9MutexLockD1Ev(%class.MutexLock*) unnamed_addr nounwind align 2
+
+; rdar://13827621
+; Correctly preserve the input chain for the tailcall node in the bitcast case,
+; otherwise the call to floorf is lost.
+define float @libcall_tc_test2(float* nocapture %a, float %b) {
+; CHECKT2D: libcall_tc_test2:
+; CHECKT2D: blx _floorf
+; CHECKT2D: b.w _truncf
+ %1 = load float* %a, align 4
+ %call = tail call float @floorf(float %1)
+ store float %call, float* %a, align 4
+ %call1 = tail call float @truncf(float %b)
+ ret float %call1
+}
+
+declare float @floorf(float) readnone
+declare float @truncf(float) readnone
diff --git a/test/CodeGen/ARM/fast-isel-GEP-coalesce.ll b/test/CodeGen/ARM/fast-isel-GEP-coalesce.ll
index 60bc6a62f5..28a84e3bf9 100644
--- a/test/CodeGen/ARM/fast-isel-GEP-coalesce.ll
+++ b/test/CodeGen/ARM/fast-isel-GEP-coalesce.ll
@@ -26,8 +26,8 @@ entry:
; THUMB: t2
%addr = alloca i32*, align 4
store i32* getelementptr inbounds ([3 x [3 x %struct.A]]* @A, i32 0, i32 2, i32 2, i32 3, i32 1, i32 2, i32 2), i32** %addr, align 4
-; ARM: movw r1, #1148
-; ARM: add r0, r0, r1
+; ARM: movw [[R:r[0-9]+]], #1148
+; ARM: add r0, r{{[0-9]+}}, [[R]]
; THUMB: addw r0, r0, #1148
%0 = load i32** %addr, align 4
ret i32* %0
diff --git a/test/CodeGen/ARM/fast-isel-br-const.ll b/test/CodeGen/ARM/fast-isel-br-const.ll
index 4e6efd2489..aefe200dc7 100644
--- a/test/CodeGen/ARM/fast-isel-br-const.ll
+++ b/test/CodeGen/ARM/fast-isel-br-const.ll
@@ -7,8 +7,8 @@ entry:
; ARM: t1:
%x = add i32 %a, %b
br i1 1, label %if.then, label %if.else
-; THUMB-NOT: b LBB0_1
-; ARM-NOT: b LBB0_1
+; THUMB-NOT: b {{\.?}}LBB0_1
+; ARM-NOT: b {{\.?}}LBB0_1
if.then: ; preds = %entry
call void @foo1()
@@ -16,8 +16,8 @@ if.then: ; preds = %entry
if.else: ; preds = %entry
br i1 0, label %if.then2, label %if.else3
-; THUMB: b LBB0_4
-; ARM: b LBB0_4
+; THUMB: b {{\.?}}LBB0_4
+; ARM: b {{\.?}}LBB0_4
if.then2: ; preds = %if.else
call void @foo2()
@@ -26,8 +26,8 @@ if.then2: ; preds = %if.else
if.else3: ; preds = %if.else
%y = sub i32 %a, %b
br i1 1, label %if.then5, label %if.end
-; THUMB-NOT: b LBB0_5
-; ARM-NOT: b LBB0_5
+; THUMB-NOT: b {{\.?}}LBB0_5
+; ARM-NOT: b {{\.?}}LBB0_5
if.then5: ; preds = %if.else3
call void @foo1()
diff --git a/test/CodeGen/ARM/fast-isel-call-multi-reg-return.ll b/test/CodeGen/ARM/fast-isel-call-multi-reg-return.ll
index b6f201728c..46d5f997c6 100644
--- a/test/CodeGen/ARM/fast-isel-call-multi-reg-return.ll
+++ b/test/CodeGen/ARM/fast-isel-call-multi-reg-return.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -O0 -verify-machineinstrs -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
-; RUN: llc < %s -O0 -verify-machineinstrs -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
; Fast-isel can't handle non-double multi-reg retvals.
; This test just check to make sure we don't hit the assert in FinishCall.
diff --git a/test/CodeGen/ARM/fast-isel-call.ll b/test/CodeGen/ARM/fast-isel-call.ll
index b6c9098613..6ee2c349ab 100644
--- a/test/CodeGen/ARM/fast-isel-call.ll
+++ b/test/CodeGen/ARM/fast-isel-call.ll
@@ -2,8 +2,12 @@
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -arm-long-calls | FileCheck %s --check-prefix=ARM-LONG
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -arm-long-calls | FileCheck %s --check-prefix=THUMB-LONG
-; RUN: llc < %s -O0 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=ARM-NOVFP
-; RUN: llc < %s -O0 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=THUMB-NOVFP
+; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=ARM-NOVFP
+; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=THUMB-NOVFP
+
+; Note that some of these tests assume that relocations are either
+; movw/movt or constant pool loads. Different platforms will select
+; different approaches.
define i32 @t0(i1 zeroext %a) nounwind {
%1 = zext i1 %a to i32
@@ -88,53 +92,53 @@ declare zeroext i1 @t9();
define i32 @t10(i32 %argc, i8** nocapture %argv) {
entry:
; ARM: @t10
-; ARM: movw r0, #0
-; ARM: movw r1, #248
-; ARM: movw r2, #187
-; ARM: movw r3, #28
-; ARM: movw r9, #40
-; ARM: movw r12, #186
-; ARM: uxtb r0, r0
-; ARM: uxtb r1, r1
-; ARM: uxtb r2, r2
-; ARM: uxtb r3, r3
-; ARM: uxtb r9, r9
-; ARM: str r9, [sp]
-; ARM: uxtb r9, r12
-; ARM: str r9, [sp, #4]
-; ARM: bl _bar
+; ARM: movw [[R0:l?r[0-9]*]], #0
+; ARM: movw [[R1:l?r[0-9]*]], #248
+; ARM: movw [[R2:l?r[0-9]*]], #187
+; ARM: movw [[R3:l?r[0-9]*]], #28
+; ARM: movw [[R4:l?r[0-9]*]], #40
+; ARM: movw [[R5:l?r[0-9]*]], #186
+; ARM: uxtb [[R0]], [[R0]]
+; ARM: uxtb [[R1]], [[R1]]
+; ARM: uxtb [[R2]], [[R2]]
+; ARM: uxtb [[R3]], [[R3]]
+; ARM: uxtb [[R4]], [[R4]]
+; ARM: str [[R4]], [sp]
+; ARM: uxtb [[R4]], [[R5]]
+; ARM: str [[R4]], [sp, #4]
+; ARM: bl {{_?}}bar
; ARM-LONG: @t10
-; ARM-LONG: movw lr, :lower16:L_bar$non_lazy_ptr
-; ARM-LONG: movt lr, :upper16:L_bar$non_lazy_ptr
-; ARM-LONG: ldr lr, [lr]
-; ARM-LONG: blx lr
+; ARM-LONG: {{(movw)|(ldr)}} [[R:l?r[0-9]*]], {{(:lower16:L_bar\$non_lazy_ptr)|(.LCPI)}}
+; ARM-LONG: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}}
+; ARM-LONG: ldr [[R]], {{\[}}[[R]]{{\]}}
+; ARM-LONG: blx [[R]]
; THUMB: @t10
-; THUMB: movs r0, #0
-; THUMB: movt r0, #0
-; THUMB: movs r1, #248
-; THUMB: movt r1, #0
-; THUMB: movs r2, #187
-; THUMB: movt r2, #0
-; THUMB: movs r3, #28
-; THUMB: movt r3, #0
-; THUMB: movw r9, #40
-; THUMB: movt r9, #0
-; THUMB: movw r12, #186
-; THUMB: movt r12, #0
-; THUMB: uxtb r0, r0
-; THUMB: uxtb r1, r1
-; THUMB: uxtb r2, r2
-; THUMB: uxtb r3, r3
-; THUMB: uxtb.w r9, r9
-; THUMB: str.w r9, [sp]
-; THUMB: uxtb.w r9, r12
-; THUMB: str.w r9, [sp, #4]
-; THUMB: bl _bar
+; THUMB: movs [[R0:l?r[0-9]*]], #0
+; THUMB: movt [[R0]], #0
+; THUMB: movs [[R1:l?r[0-9]*]], #248
+; THUMB: movt [[R1]], #0
+; THUMB: movs [[R2:l?r[0-9]*]], #187
+; THUMB: movt [[R2]], #0
+; THUMB: movs [[R3:l?r[0-9]*]], #28
+; THUMB: movt [[R3]], #0
+; THUMB: movw [[R4:l?r[0-9]*]], #40
+; THUMB: movt [[R4]], #0
+; THUMB: movw [[R5:l?r[0-9]*]], #186
+; THUMB: movt [[R5]], #0
+; THUMB: uxtb [[R0]], [[R0]]
+; THUMB: uxtb [[R1]], [[R1]]
+; THUMB: uxtb [[R2]], [[R2]]
+; THUMB: uxtb [[R3]], [[R3]]
+; THUMB: uxtb.w [[R4]], [[R4]]
+; THUMB: str.w [[R4]], [sp]
+; THUMB: uxtb.w [[R4]], [[R5]]
+; THUMB: str.w [[R4]], [sp, #4]
+; THUMB: bl {{_?}}bar
; THUMB-LONG: @t10
-; THUMB-LONG: movw lr, :lower16:L_bar$non_lazy_ptr
-; THUMB-LONG: movt lr, :upper16:L_bar$non_lazy_ptr
-; THUMB-LONG: ldr.w lr, [lr]
-; THUMB-LONG: blx lr
+; THUMB-LONG: {{(movw)|(ldr.n)}} [[R:l?r[0-9]*]], {{(:lower16:L_bar\$non_lazy_ptr)|(.LCPI)}}
+; THUMB-LONG: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}}
+; THUMB-LONG: ldr{{(.w)?}} [[R]], {{\[}}[[R]]{{\]}}
+; THUMB-LONG: blx [[R]]
%call = call i32 @bar(i8 zeroext 0, i8 zeroext -8, i8 zeroext -69, i8 zeroext 28, i8 zeroext 40, i8 zeroext -70)
ret i32 0
}
@@ -147,12 +151,12 @@ define i32 @bar0(i32 %i) nounwind {
define void @foo3() uwtable {
; ARM: movw r0, #0
-; ARM: movw r1, :lower16:_bar0
-; ARM: movt r1, :upper16:_bar0
+; ARM: {{(movw r1, :lower16:_?bar0)|(ldr r1, .LCPI)}}
+; ARM: {{(movt r1, :upper16:_?bar0)|(ldr r1, \[r1\])}}
; ARM: blx r1
; THUMB: movs r0, #0
-; THUMB: movw r1, :lower16:_bar0
-; THUMB: movt r1, :upper16:_bar0
+; THUMB: {{(movw r1, :lower16:_?bar0)|(ldr.n r1, .LCPI)}}
+; THUMB: {{(movt r1, :upper16:_?bar0)|(ldr r1, \[r1\])}}
; THUMB: blx r1
%fptr = alloca i32 (i32)*, align 8
store i32 (i32)* @bar0, i32 (i32)** %fptr, align 8
@@ -164,66 +168,23 @@ define void @foo3() uwtable {
define i32 @LibCall(i32 %a, i32 %b) {
entry:
; ARM: LibCall
-; ARM: bl ___udivsi3
+; ARM: bl {{___udivsi3|__aeabi_uidiv}}
; ARM-LONG: LibCall
-; ARM-LONG: movw r2, :lower16:L___udivsi3$non_lazy_ptr
-; ARM-LONG: movt r2, :upper16:L___udivsi3$non_lazy_ptr
+; ARM-LONG: {{(movw r2, :lower16:L___udivsi3\$non_lazy_ptr)|(ldr r2, .LCPI)}}
+; ARM-LONG: {{(movt r2, :upper16:L___udivsi3\$non_lazy_ptr)?}}
; ARM-LONG: ldr r2, [r2]
; ARM-LONG: blx r2
; THUMB: LibCall
-; THUMB: bl ___udivsi3
+; THUMB: bl {{___udivsi3|__aeabi_uidiv}}
; THUMB-LONG: LibCall
-; THUMB-LONG: movw r2, :lower16:L___udivsi3$non_lazy_ptr
-; THUMB-LONG: movt r2, :upper16:L___udivsi3$non_lazy_ptr
+; THUMB-LONG: {{(movw r2, :lower16:L___udivsi3\$non_lazy_ptr)|(ldr.n r2, .LCPI)}}
+; THUMB-LONG: {{(movt r2, :upper16:L___udivsi3\$non_lazy_ptr)?}}
; THUMB-LONG: ldr r2, [r2]
; THUMB-LONG: blx r2
%tmp1 = udiv i32 %a, %b ; <i32> [#uses=1]
ret i32 %tmp1
}
-define i32 @VarArg() nounwind {
-entry:
- %i = alloca i32, align 4
- %j = alloca i32, align 4
- %k = alloca i32, align 4
- %m = alloca i32, align 4
- %n = alloca i32, align 4
- %tmp = alloca i32, align 4
- %0 = load i32* %i, align 4
- %1 = load i32* %j, align 4
- %2 = load i32* %k, align 4
- %3 = load i32* %m, align 4
- %4 = load i32* %n, align 4
-; ARM: VarArg
-; ARM: mov r7, sp
-; ARM: movw r0, #5
-; ARM: ldr r1, [r7, #-4]
-; ARM: ldr r2, [r7, #-8]
-; ARM: ldr r3, [r7, #-12]
-; ARM: ldr r9, [sp, #16]
-; ARM: ldr r12, [sp, #12]
-; ARM: str r9, [sp]
-; ARM: str r12, [sp, #4]
-; ARM: bl _CallVariadic
-; THUMB: mov r7, sp
-; THUMB: movs r0, #5
-; THUMB: movt r0, #0
-; THUMB: ldr r1, [sp, #28]
-; THUMB: ldr r2, [sp, #24]
-; THUMB: ldr r3, [sp, #20]
-; THUMB: ldr.w r9, [sp, #16]
-; THUMB: ldr.w r12, [sp, #12]
-; THUMB: str.w r9, [sp]
-; THUMB: str.w r12, [sp, #4]
-; THUMB: bl _CallVariadic
- %call = call i32 (i32, ...)* @CallVariadic(i32 5, i32 %0, i32 %1, i32 %2, i32 %3, i32 %4)
- store i32 %call, i32* %tmp, align 4
- %5 = load i32* %tmp, align 4
- ret i32 %5
-}
-
-declare i32 @CallVariadic(i32, ...)
-
; Test fastcc
define fastcc void @fast_callee(float %i) ssp {
diff --git a/test/CodeGen/ARM/fast-isel-crash.ll b/test/CodeGen/ARM/fast-isel-crash.ll
index 8fb4b66b7d..7d45feff69 100644
--- a/test/CodeGen/ARM/fast-isel-crash.ll
+++ b/test/CodeGen/ARM/fast-isel-crash.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -O0 -verify-machineinstrs -mtriple=thumbv7-apple-darwin
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=thumbv7-apple-darwin
%union.anon = type { <16 x i32> }
diff --git a/test/CodeGen/ARM/fast-isel-crash2.ll b/test/CodeGen/ARM/fast-isel-crash2.ll
index f245168a8e..8867f87065 100644
--- a/test/CodeGen/ARM/fast-isel-crash2.ll
+++ b/test/CodeGen/ARM/fast-isel-crash2.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -O0 -verify-machineinstrs -mtriple=thumbv7-apple-darwin
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=thumbv7-apple-darwin
; rdar://9515076
; (Make sure this doesn't crash.)
diff --git a/test/CodeGen/ARM/fast-isel-deadcode.ll b/test/CodeGen/ARM/fast-isel-deadcode.ll
index 3a943d854b..5e6666c47d 100644
--- a/test/CodeGen/ARM/fast-isel-deadcode.ll
+++ b/test/CodeGen/ARM/fast-isel-deadcode.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -O0 -verify-machineinstrs -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
+; RUN: llc < %s -O0 -fast-isel-abort -verify-machineinstrs -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
; Target-specific selector can't properly handle the double because it isn't
; being passed via a register, so the materialized arguments become dead code.
diff --git a/test/CodeGen/ARM/fast-isel-intrinsic.ll b/test/CodeGen/ARM/fast-isel-intrinsic.ll
index 48105dd389..bc9769a537 100644
--- a/test/CodeGen/ARM/fast-isel-intrinsic.ll
+++ b/test/CodeGen/ARM/fast-isel-intrinsic.ll
@@ -3,33 +3,37 @@
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -arm-long-calls | FileCheck %s --check-prefix=ARM-LONG
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -arm-long-calls | FileCheck %s --check-prefix=THUMB-LONG
+; Note that some of these tests assume that relocations are either
+; movw/movt or constant pool loads. Different platforms will select
+; different approaches.
+
@message1 = global [60 x i8] c"The LLVM Compiler Infrastructure\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1
@temp = common global [60 x i8] zeroinitializer, align 1
define void @t1() nounwind ssp {
; ARM: t1
-; ARM: movw r0, :lower16:_message1
-; ARM: movt r0, :upper16:_message1
+; ARM: {{(movw r0, :lower16:_?message1)|(ldr r0, .LCPI)}}
+; ARM: {{(movt r0, :upper16:_?message1)|(ldr r0, \[r0\])}}
; ARM: add r0, r0, #5
; ARM: movw r1, #64
; ARM: movw r2, #10
; ARM: uxtb r1, r1
-; ARM: bl _memset
+; ARM: bl {{_?}}memset
; ARM-LONG: t1
; ARM-LONG: movw r3, :lower16:L_memset$non_lazy_ptr
; ARM-LONG: movt r3, :upper16:L_memset$non_lazy_ptr
; ARM-LONG: ldr r3, [r3]
; ARM-LONG: blx r3
; THUMB: t1
-; THUMB: movw r0, :lower16:_message1
-; THUMB: movt r0, :upper16:_message1
+; THUMB: {{(movw r0, :lower16:_?message1)|(ldr.n r0, .LCPI)}}
+; THUMB: {{(movt r0, :upper16:_?message1)|(ldr r0, \[r0\])}}
; THUMB: adds r0, #5
; THUMB: movs r1, #64
; THUMB: movt r1, #0
; THUMB: movs r2, #10
; THUMB: movt r2, #0
; THUMB: uxtb r1, r1
-; THUMB: bl _memset
+; THUMB: bl {{_?}}memset
; THUMB-LONG: t1
; THUMB-LONG: movw r3, :lower16:L_memset$non_lazy_ptr
; THUMB-LONG: movt r3, :upper16:L_memset$non_lazy_ptr
@@ -43,31 +47,33 @@ declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind
define void @t2() nounwind ssp {
; ARM: t2
-; ARM: movw r0, :lower16:L_temp$non_lazy_ptr
-; ARM: movt r0, :upper16:L_temp$non_lazy_ptr
+; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}}
+; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; ARM: ldr r0, [r0]
; ARM: add r1, r0, #4
; ARM: add r0, r0, #16
; ARM: movw r2, #17
-; ARM: str r0, [sp] @ 4-byte Spill
+; ARM: str r0, [sp[[SLOT:[, #0-9]*]]] @ 4-byte Spill
; ARM: mov r0, r1
-; ARM: ldr r1, [sp] @ 4-byte Reload
-; ARM: bl _memcpy
+; ARM: ldr r1, [sp[[SLOT]]] @ 4-byte Reload
+; ARM: bl {{_?}}memcpy
; ARM-LONG: t2
; ARM-LONG: movw r3, :lower16:L_memcpy$non_lazy_ptr
; ARM-LONG: movt r3, :upper16:L_memcpy$non_lazy_ptr
; ARM-LONG: ldr r3, [r3]
; ARM-LONG: blx r3
; THUMB: t2
-; THUMB: movw r0, :lower16:L_temp$non_lazy_ptr
-; THUMB: movt r0, :upper16:L_temp$non_lazy_ptr
+; THUMB: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr.n r0, .LCPI)}}
+; THUMB: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; THUMB: ldr r0, [r0]
; THUMB: adds r1, r0, #4
; THUMB: adds r0, #16
; THUMB: movs r2, #17
; THUMB: movt r2, #0
+; THUMB: str r0, [sp[[SLOT:[, #0-9]*]]] @ 4-byte Spill
; THUMB: mov r0, r1
-; THUMB: bl _memcpy
+; THUMB: ldr r1, [sp[[SLOT]]] @ 4-byte Reload
+; THUMB: bl {{_?}}memcpy
; THUMB-LONG: t2
; THUMB-LONG: movw r3, :lower16:L_memcpy$non_lazy_ptr
; THUMB-LONG: movt r3, :upper16:L_memcpy$non_lazy_ptr
@@ -81,29 +87,31 @@ declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32,
define void @t3() nounwind ssp {
; ARM: t3
-; ARM: movw r0, :lower16:L_temp$non_lazy_ptr
-; ARM: movt r0, :upper16:L_temp$non_lazy_ptr
+; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}}
+; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; ARM: ldr r0, [r0]
; ARM: add r1, r0, #4
; ARM: add r0, r0, #16
; ARM: movw r2, #10
; ARM: mov r0, r1
-; ARM: bl _memmove
+; ARM: bl {{_?}}memmove
; ARM-LONG: t3
; ARM-LONG: movw r3, :lower16:L_memmove$non_lazy_ptr
; ARM-LONG: movt r3, :upper16:L_memmove$non_lazy_ptr
; ARM-LONG: ldr r3, [r3]
; ARM-LONG: blx r3
; THUMB: t3
-; THUMB: movw r0, :lower16:L_temp$non_lazy_ptr
-; THUMB: movt r0, :upper16:L_temp$non_lazy_ptr
+; THUMB: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr.n r0, .LCPI)}}
+; THUMB: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; THUMB: ldr r0, [r0]
; THUMB: adds r1, r0, #4
; THUMB: adds r0, #16
; THUMB: movs r2, #10
; THUMB: movt r2, #0
+; THUMB: str r0, [sp[[SLOT:[, #0-9]*]]] @ 4-byte Spill
; THUMB: mov r0, r1
-; THUMB: bl _memmove
+; THUMB: ldr r1, [sp[[SLOT]]] @ 4-byte Reload
+; THUMB: bl {{_?}}memmove
; THUMB-LONG: t3
; THUMB-LONG: movw r3, :lower16:L_memmove$non_lazy_ptr
; THUMB-LONG: movt r3, :upper16:L_memmove$non_lazy_ptr
@@ -115,8 +123,8 @@ define void @t3() nounwind ssp {
define void @t4() nounwind ssp {
; ARM: t4
-; ARM: movw r0, :lower16:L_temp$non_lazy_ptr
-; ARM: movt r0, :upper16:L_temp$non_lazy_ptr
+; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}}
+; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; ARM: ldr r0, [r0]
; ARM: ldr r1, [r0, #16]
; ARM: str r1, [r0, #4]
@@ -126,8 +134,8 @@ define void @t4() nounwind ssp {
; ARM: strh r1, [r0, #12]
; ARM: bx lr
; THUMB: t4
-; THUMB: movw r0, :lower16:L_temp$non_lazy_ptr
-; THUMB: movt r0, :upper16:L_temp$non_lazy_ptr
+; THUMB: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr.n r0, .LCPI)}}
+; THUMB: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; THUMB: ldr r0, [r0]
; THUMB: ldr r1, [r0, #16]
; THUMB: str r1, [r0, #4]
@@ -144,8 +152,8 @@ declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32,
define void @t5() nounwind ssp {
; ARM: t5
-; ARM: movw r0, :lower16:L_temp$non_lazy_ptr
-; ARM: movt r0, :upper16:L_temp$non_lazy_ptr
+; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}}
+; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; ARM: ldr r0, [r0]
; ARM: ldrh r1, [r0, #16]
; ARM: strh r1, [r0, #4]
@@ -159,8 +167,8 @@ define void @t5() nounwind ssp {
; ARM: strh r1, [r0, #12]
; ARM: bx lr
; THUMB: t5
-; THUMB: movw r0, :lower16:L_temp$non_lazy_ptr
-; THUMB: movt r0, :upper16:L_temp$non_lazy_ptr
+; THUMB: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr.n r0, .LCPI)}}
+; THUMB: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; THUMB: ldr r0, [r0]
; THUMB: ldrh r1, [r0, #16]
; THUMB: strh r1, [r0, #4]
@@ -179,8 +187,8 @@ define void @t5() nounwind ssp {
define void @t6() nounwind ssp {
; ARM: t6
-; ARM: movw r0, :lower16:L_temp$non_lazy_ptr
-; ARM: movt r0, :upper16:L_temp$non_lazy_ptr
+; ARM: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr r0, .LCPI)}}
+; ARM: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; ARM: ldr r0, [r0]
; ARM: ldrb r1, [r0, #16]
; ARM: strb r1, [r0, #4]
@@ -204,8 +212,8 @@ define void @t6() nounwind ssp {
; ARM: strb r1, [r0, #13]
; ARM: bx lr
; THUMB: t6
-; THUMB: movw r0, :lower16:L_temp$non_lazy_ptr
-; THUMB: movt r0, :upper16:L_temp$non_lazy_ptr
+; THUMB: {{(movw r0, :lower16:L_temp\$non_lazy_ptr)|(ldr.n r0, .LCPI)}}
+; THUMB: {{(movt r0, :upper16:L_temp\$non_lazy_ptr)?}}
; THUMB: ldr r0, [r0]
; THUMB: ldrb r1, [r0, #16]
; THUMB: strb r1, [r0, #4]
diff --git a/test/CodeGen/ARM/fast-isel-ldr-str-arm.ll b/test/CodeGen/ARM/fast-isel-ldr-str-arm.ll
index dfb8c53735..cf294bcfbe 100644
--- a/test/CodeGen/ARM/fast-isel-ldr-str-arm.ll
+++ b/test/CodeGen/ARM/fast-isel-ldr-str-arm.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-darwin | FileCheck %s --check-prefix=ARM
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-darwin | FileCheck %s --check-prefix=ARM
define i32 @t1(i32* nocapture %ptr) nounwind readonly {
entry:
diff --git a/test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll b/test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll
index 0b5267ddc9..0e71322d4e 100644
--- a/test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll
+++ b/test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
; rdar://10418009
define zeroext i16 @t1(i16* nocapture %a) nounwind uwtable readonly ssp {
diff --git a/test/CodeGen/ARM/fast-isel-mvn.ll b/test/CodeGen/ARM/fast-isel-mvn.ll
index b180e439dd..328168a84f 100644
--- a/test/CodeGen/ARM/fast-isel-mvn.ll
+++ b/test/CodeGen/ARM/fast-isel-mvn.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
; rdar://10412592
; Note: The Thumb code is being generated by the target-independent selector.
diff --git a/test/CodeGen/ARM/fast-isel-pic.ll b/test/CodeGen/ARM/fast-isel-pic.ll
index 867d53f973..6bb9ea3a8c 100644
--- a/test/CodeGen/ARM/fast-isel-pic.ll
+++ b/test/CodeGen/ARM/fast-isel-pic.ll
@@ -1,7 +1,7 @@
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=pic -mtriple=arm-apple-ios | FileCheck %s --check-prefix=ARM
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARMv7
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=pic -mtriple=thumbv7-none-linux-gnueabi | FileCheck %s --check-prefix=THUMB-ELF
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=arm-apple-ios | FileCheck %s --check-prefix=ARM
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARMv7
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=pic -mtriple=thumbv7-none-linux-gnueabi | FileCheck %s --check-prefix=THUMB-ELF
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=pic -mtriple=armv7-none-linux-gnueabi | FileCheck %s --check-prefix=ARMv7-ELF
@g = global i32 0, align 4
diff --git a/test/CodeGen/ARM/fast-isel-redefinition.ll b/test/CodeGen/ARM/fast-isel-redefinition.ll
index 563880dab0..ee150facac 100644
--- a/test/CodeGen/ARM/fast-isel-redefinition.ll
+++ b/test/CodeGen/ARM/fast-isel-redefinition.ll
@@ -1,4 +1,4 @@
-; RUN: llc -O0 -verify-machineinstrs -optimize-regalloc -regalloc=basic < %s
+; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort -optimize-regalloc -regalloc=basic < %s
; This isn't exactly a useful set of command-line options, but check that it
; doesn't crash. (It was crashing because a register was getting redefined.)
diff --git a/test/CodeGen/ARM/fast-isel-select.ll b/test/CodeGen/ARM/fast-isel-select.ll
index b83a733669..a937036284 100644
--- a/test/CodeGen/ARM/fast-isel-select.ll
+++ b/test/CodeGen/ARM/fast-isel-select.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM
; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB
define i32 @t1(i1 %c) nounwind readnone {
diff --git a/test/CodeGen/ARM/fast-isel-static.ll b/test/CodeGen/ARM/fast-isel-static.ll
index e8759a7fc4..afdfa84f39 100644
--- a/test/CodeGen/ARM/fast-isel-static.ll
+++ b/test/CodeGen/ARM/fast-isel-static.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -mtriple=thumbv7-apple-darwin -O0 -verify-machineinstrs -relocation-model=static -arm-long-calls | FileCheck -check-prefix=LONG %s
-; RUN: llc < %s -mtriple=thumbv7-apple-darwin -O0 -verify-machineinstrs -relocation-model=static | FileCheck -check-prefix=NORM %s
+; RUN: llc < %s -mtriple=thumbv7-apple-darwin -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=static -arm-long-calls | FileCheck -check-prefix=LONG %s
+; RUN: llc < %s -mtriple=thumbv7-apple-darwin -O0 -verify-machineinstrs -fast-isel-abort -relocation-model=static | FileCheck -check-prefix=NORM %s
define void @myadd(float* %sum, float* %addend) nounwind {
entry:
@@ -24,7 +24,7 @@ entry:
store float 0.000000e+00, float* %ztot, align 4
store float 1.000000e+00, float* %z, align 4
; CHECK-LONG: blx r
-; CHECK-NORM: bl _myadd
+; CHECK-NORM: bl {{_?}}myadd
call void @myadd(float* %ztot, float* %z)
ret i32 0
}
diff --git a/test/CodeGen/ARM/fast-isel.ll b/test/CodeGen/ARM/fast-isel.ll
index 41fda41326..39ffcac292 100644
--- a/test/CodeGen/ARM/fast-isel.ll
+++ b/test/CodeGen/ARM/fast-isel.ll
@@ -144,15 +144,19 @@ define void @test4() {
store i32 %b, i32* @test4g
ret void
-; THUMB: movw r0, :lower16:L_test4g$non_lazy_ptr
-; THUMB: movt r0, :upper16:L_test4g$non_lazy_ptr
+
+; Note that relocations are either movw/movt or constant pool
+; loads. Different platforms will select different approaches.
+
+; THUMB: {{(movw r0, :lower16:L_test4g\$non_lazy_ptr)|(ldr.n r0, .LCPI)}}
+; THUMB: {{(movt r0, :upper16:L_test4g\$non_lazy_ptr)?}}
; THUMB: ldr r0, [r0]
; THUMB: ldr r1, [r0]
; THUMB: adds r1, #1
; THUMB: str r1, [r0]
-; ARM: movw r0, :lower16:L_test4g$non_lazy_ptr
-; ARM: movt r0, :upper16:L_test4g$non_lazy_ptr
+; ARM: {{(movw r0, :lower16:L_test4g\$non_lazy_ptr)|(ldr r0, .LCPI)}}
+; ARM: {{(movt r0, :upper16:L_test4g\$non_lazy_ptr)?}}
; ARM: ldr r0, [r0]
; ARM: ldr r1, [r0]
; ARM: add r1, r1, #1
diff --git a/test/CodeGen/ARM/vmul.ll b/test/CodeGen/ARM/vmul.ll
index 74628f0c5c..eb5ad8f0c3 100644
--- a/test/CodeGen/ARM/vmul.ll
+++ b/test/CodeGen/ARM/vmul.ll
@@ -599,3 +599,27 @@ for.end179: ; preds = %for.cond.loopexit,
declare <8 x i16> @llvm.arm.neon.vrshiftu.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
declare <8 x i16> @llvm.arm.neon.vqsubu.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
declare <8 x i8> @llvm.arm.neon.vqmovnu.v8i8(<8 x i16>) nounwind readnone
+
+; vmull lowering would create a zext(v4i8 load()) instead of a zextload(v4i8),
+; creating an illegal type during legalization and causing an assert.
+; PR15970
+define void @no_illegal_types_vmull_sext(<4 x i32> %a) {
+entry:
+ %wide.load283.i = load <4 x i8>* undef, align 1
+ %0 = sext <4 x i8> %wide.load283.i to <4 x i32>
+ %1 = sub nsw <4 x i32> %0, %a
+ %2 = mul nsw <4 x i32> %1, %1
+ %predphi290.v.i = select <4 x i1> undef, <4 x i32> undef, <4 x i32> %2
+ store <4 x i32> %predphi290.v.i, <4 x i32>* undef, align 4
+ ret void
+}
+define void @no_illegal_types_vmull_zext(<4 x i32> %a) {
+entry:
+ %wide.load283.i = load <4 x i8>* undef, align 1
+ %0 = zext <4 x i8> %wide.load283.i to <4 x i32>
+ %1 = sub nsw <4 x i32> %0, %a
+ %2 = mul nsw <4 x i32> %1, %1
+ %predphi290.v.i = select <4 x i1> undef, <4 x i32> undef, <4 x i32> %2
+ store <4 x i32> %predphi290.v.i, <4 x i32>* undef, align 4
+ ret void
+}
diff --git a/test/CodeGen/Hexagon/BranchPredict.ll b/test/CodeGen/Hexagon/BranchPredict.ll
new file mode 100644
index 0000000000..716e85da5a
--- /dev/null
+++ b/test/CodeGen/Hexagon/BranchPredict.ll
@@ -0,0 +1,79 @@
+; RUN: llc -march=hexagon -mcpu=hexagonv4 < %s | FileCheck %s
+
+; Check if the branch probabilities are reflected in the instructions:
+; The basic block placement pass should place the more probable successor
+; block as the fall-through block. The unconditional jump in the predecessor
+; should then get the right hint (not_taken or ":nt")
+
+
+@j = external global i32
+
+define i32 @foo(i32 %a) nounwind {
+; CHECK: if{{ *}}(!p{{[0-3]}}.new) jump:nt
+entry:
+ %tobool = icmp eq i32 %a, 0
+ br i1 %tobool, label %if.else, label %if.then, !prof !0
+
+if.then: ; preds = %entry
+ %add = add nsw i32 %a, 10
+ %call = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 %add) nounwind
+ br label %return
+
+if.else: ; preds = %entry
+ %call2 = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 4) nounwind
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ %call, %if.then ], [ %call2, %if.else ]
+ ret i32 %retval.0
+}
+
+declare i32 @foobar(...)
+
+define i32 @bar(i32 %a) nounwind {
+; CHECK: if{{ *}}(p{{[0-3]}}.new) jump:nt
+entry:
+ %tobool = icmp eq i32 %a, 0
+ br i1 %tobool, label %if.else, label %if.then, !prof !1
+
+if.then: ; preds = %entry
+ %add = add nsw i32 %a, 10
+ %call = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 %add) nounwind
+ br label %return
+
+if.else: ; preds = %entry
+ %call2 = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 4) nounwind
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ %call, %if.then ], [ %call2, %if.else ]
+ ret i32 %retval.0
+}
+
+define i32 @foo_bar(i32 %a, i16 signext %b) nounwind {
+; CHECK: if{{ *}}(!cmp.eq(r{{[0-9]*}}.new, #0)) jump:nt
+entry:
+ %0 = load i32* @j, align 4, !tbaa !2
+ %tobool = icmp eq i32 %0, 0
+ br i1 %tobool, label %if.else, label %if.then, !prof !0
+
+if.then: ; preds = %entry
+ %add = add nsw i32 %a, 10
+ %call = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 %add) nounwind
+ br label %return
+
+if.else: ; preds = %entry
+ %add1 = add nsw i32 %a, 4
+ %call2 = tail call i32 bitcast (i32 (...)* @foobar to i32 (i32)*)(i32 %add1) nounwind
+ br label %return
+
+return: ; preds = %if.else, %if.then
+ %retval.0 = phi i32 [ %call, %if.then ], [ %call2, %if.else ]
+ ret i32 %retval.0
+}
+
+!0 = metadata !{metadata !"branch_weights", i32 64, i32 4}
+!1 = metadata !{metadata !"branch_weights", i32 4, i32 64}
+!2 = metadata !{metadata !"int", metadata !3}
+!3 = metadata !{metadata !"omnipotent char", metadata !4}
+!4 = metadata !{metadata !"Simple C/C++ TBAA"}
diff --git a/test/CodeGen/Hexagon/args.ll b/test/CodeGen/Hexagon/args.ll
index f8c9e44c83..aea4ffe2ee 100644
--- a/test/CodeGen/Hexagon/args.ll
+++ b/test/CodeGen/Hexagon/args.ll
@@ -1,11 +1,8 @@
; RUN: llc -march=hexagon -mcpu=hexagonv4 -disable-dfa-sched -disable-hexagon-misched < %s | FileCheck %s
; CHECK: memw(r29{{ *}}+{{ *}}#0){{ *}}={{ *}}#7
-; CHECK: r0 = #1
-; CHECK: r1 = #2
-; CHECK: r2 = #3
-; CHECK: r3 = #4
-; CHECK: r4 = #5
-; CHECK: r5 = #6
+; CHECK: r1:0 = combine(#2, #1)
+; CHECK: r3:2 = combine(#4, #3)
+; CHECK: r5:4 = combine(#6, #5)
define void @foo() nounwind {
diff --git a/test/CodeGen/Hexagon/extload-combine.ll b/test/CodeGen/Hexagon/extload-combine.ll
new file mode 100644
index 0000000000..b3b8bf0703
--- /dev/null
+++ b/test/CodeGen/Hexagon/extload-combine.ll
@@ -0,0 +1,80 @@
+; RUN: llc -march=hexagon -mcpu=hexagonv4 -O3 < %s | FileCheck %s
+; Check that the combine/stxw instructions are being generated.
+; In case of combine one of the operand should be 0 and another should be
+; the output of absolute addressing load instruction.
+
+@a = external global i16
+@b = external global i16
+@c = external global i16
+@char_a = external global i8
+@char_b = external global i8
+@char_c = external global i8
+@int_a = external global i32
+@int_b = external global i32
+@int_c = external global i32
+
+; Function Attrs: nounwind
+define i64 @short_test1() #0 {
+; CHECK: [[VAR:r[0-9]+]]{{ *}}={{ *}}memuh(##
+; CHECK: combine(#0, [[VAR]])
+entry:
+ store i16 0, i16* @a, align 2
+ %0 = load i16* @b, align 2
+ %conv2 = zext i16 %0 to i64
+ ret i64 %conv2
+}
+
+; Function Attrs: nounwind
+define i64 @short_test2() #0 {
+; CHECK: [[VAR1:r[0-9]+]]{{ *}}={{ *}}memh(##
+; CHECK: sxtw([[VAR1]])
+entry:
+ store i16 0, i16* @a, align 2
+ %0 = load i16* @c, align 2
+ %conv2 = sext i16 %0 to i64
+ ret i64 %conv2
+}
+
+; Function Attrs: nounwind
+define i64 @char_test1() #0 {
+; CHECK: [[VAR2:r[0-9]+]]{{ *}}={{ *}}memub(##
+; CHECK: combine(#0, [[VAR2]])
+entry:
+ store i8 0, i8* @char_a, align 1
+ %0 = load i8* @char_b, align 1
+ %conv2 = zext i8 %0 to i64
+ ret i64 %conv2
+}
+
+; Function Attrs: nounwind
+define i64 @char_test2() #0 {
+; CHECK: [[VAR3:r[0-9]+]]{{ *}}={{ *}}memb(##
+; CHECK: sxtw([[VAR3]])
+entry:
+ store i8 0, i8* @char_a, align 1
+ %0 = load i8* @char_c, align 1
+ %conv2 = sext i8 %0 to i64
+ ret i64 %conv2
+}
+
+; Function Attrs: nounwind
+define i64 @int_test1() #0 {
+; CHECK: [[VAR4:r[0-9]+]]{{ *}}={{ *}}memw(##
+; CHECK: combine(#0, [[VAR4]])
+entry:
+ store i32 0, i32* @int_a, align 4
+ %0 = load i32* @int_b, align 4
+ %conv = zext i32 %0 to i64
+ ret i64 %conv
+}
+
+; Function Attrs: nounwind
+define i64 @int_test2() #0 {
+; CHECK: [[VAR5:r[0-9]+]]{{ *}}={{ *}}memw(##
+; CHECK: sxtw([[VAR5]])
+entry:
+ store i32 0, i32* @int_a, align 4
+ %0 = load i32* @int_c, align 4
+ %conv = sext i32 %0 to i64
+ ret i64 %conv
+}
diff --git a/test/CodeGen/Hexagon/packetize_cond_inst.ll b/test/CodeGen/Hexagon/packetize_cond_inst.ll
new file mode 100644
index 0000000000..a48a9f62ec
--- /dev/null
+++ b/test/CodeGen/Hexagon/packetize_cond_inst.ll
@@ -0,0 +1,32 @@
+; RUN: llc -mcpu=hexagonv4 -tail-dup-size=1 < %s | FileCheck %s
+
+target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-v64:64:64-v32:32:32-a0:0-n16:32"
+target triple = "hexagon-unknown--elf"
+
+; Make sure we put the two conditionally executed adds in a packet.
+; ifcnv_add:
+; {
+; p0 = cmp.gt(r2, r1)
+; if (!p0.new) r0 = add(r2, r1)
+; if (p0.new) r0 = add(r0, #10)
+; }
+; CHECK: cmp
+; CHECK-NEXT: add
+; CHECH-NEXT: add
+define i32 @ifcnv_add(i32, i32, i32) nounwind readnone {
+ %4 = icmp sgt i32 %2, %1
+ br i1 %4, label %5, label %7
+
+; <label>:5 ; preds = %3
+ %6 = add nsw i32 %0, 10
+ br label %9
+
+; <label>:7 ; preds = %3
+ %8 = add nsw i32 %2, %1
+ br label %9
+
+; <label>:9 ; preds = %7, %5
+ %10 = phi i32 [ %6, %5 ], [ %8, %7 ]
+ %11 = add nsw i32 %10, 1
+ ret i32 %11
+}
diff --git a/test/CodeGen/Hexagon/tfr-to-combine.ll b/test/CodeGen/Hexagon/tfr-to-combine.ll
new file mode 100644
index 0000000000..e3057cd161
--- /dev/null
+++ b/test/CodeGen/Hexagon/tfr-to-combine.ll
@@ -0,0 +1,35 @@
+; RUN: llc -march=hexagon -mcpu=hexagonv5 -O3 < %s | FileCheck %s
+
+; Check that we combine TFRs and TFRIs into COMBINEs.
+
+@a = external global i16
+@b = external global i16
+@c = external global i16
+
+; Function Attrs: nounwind
+define i64 @test1() #0 {
+; CHECK: combine(#10, #0)
+entry:
+ store i16 0, i16* @a, align 2
+ store i16 10, i16* @b, align 2
+ ret i64 10
+}
+
+; Function Attrs: nounwind
+define i64 @test2() #0 {
+; CHECK: combine(#0, r{{[0-9]+}})
+entry:
+ store i16 0, i16* @a, align 2
+ %0 = load i16* @c, align 2
+ %conv2 = zext i16 %0 to i64
+ ret i64 %conv2
+}
+
+; Function Attrs: nounwind
+define i64 @test4() #0 {
+; CHECK: combine(#0, ##100)
+entry:
+ store i16 100, i16* @b, align 2
+ store i16 0, i16* @a, align 2
+ ret i64 0
+}
diff --git a/test/CodeGen/Mips/hf16call32.ll b/test/CodeGen/Mips/hf16call32.ll
new file mode 100644
index 0000000000..41249e1be2
--- /dev/null
+++ b/test/CodeGen/Mips/hf16call32.ll
@@ -0,0 +1,1028 @@
+; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -soft-float -mips16-hard-float -relocation-model=static < %s | FileCheck %s -check-prefix=stel
+
+@x = common global float 0.000000e+00, align 4
+@y = common global float 0.000000e+00, align 4
+@xd = common global double 0.000000e+00, align 8
+@yd = common global double 0.000000e+00, align 8
+@xy = common global { float, float } zeroinitializer, align 4
+@xyd = common global { double, double } zeroinitializer, align 8
+@ret_sf = common global float 0.000000e+00, align 4
+@ret_df = common global double 0.000000e+00, align 8
+@ret_sc = common global { float, float } zeroinitializer, align 4
+@ret_dc = common global { double, double } zeroinitializer, align 8
+@lx = common global float 0.000000e+00, align 4
+@ly = common global float 0.000000e+00, align 4
+@lxd = common global double 0.000000e+00, align 8
+@lyd = common global double 0.000000e+00, align 8
+@lxy = common global { float, float } zeroinitializer, align 4
+@lxyd = common global { double, double } zeroinitializer, align 8
+@lret_sf = common global float 0.000000e+00, align 4
+@lret_df = common global double 0.000000e+00, align 8
+@lret_sc = common global { float, float } zeroinitializer, align 4
+@lret_dc = common global { double, double } zeroinitializer, align 8
+@.str = private unnamed_addr constant [10 x i8] c"%f %f %i\0A\00", align 1
+@.str1 = private unnamed_addr constant [16 x i8] c"%f=%f %f=%f %i\0A\00", align 1
+@.str2 = private unnamed_addr constant [22 x i8] c"%f=%f %f=%f %f=%f %i\0A\00", align 1
+@.str3 = private unnamed_addr constant [18 x i8] c"%f+%fi=%f+%fi %i\0A\00", align 1
+@.str4 = private unnamed_addr constant [24 x i8] c"%f+%fi=%f+%fi %f=%f %i\0A\00", align 1
+
+; Function Attrs: nounwind
+define void @clear() #0 {
+entry:
+ store float 1.000000e+00, float* @x, align 4
+ store float 1.000000e+00, float* @y, align 4
+ store double 1.000000e+00, double* @xd, align 8
+ store double 1.000000e+00, double* @yd, align 8
+ store float 1.000000e+00, float* getelementptr inbounds ({ float, float }* @xy, i32 0, i32 0)
+ store float 0.000000e+00, float* getelementptr inbounds ({ float, float }* @xy, i32 0, i32 1)
+ store double 1.000000e+00, double* getelementptr inbounds ({ double, double }* @xyd, i32 0, i32 0)
+ store double 0.000000e+00, double* getelementptr inbounds ({ double, double }* @xyd, i32 0, i32 1)
+ store float 1.000000e+00, float* @ret_sf, align 4
+ store double 1.000000e+00, double* @ret_df, align 8
+ store float 1.000000e+00, float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ store float 0.000000e+00, float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ store double 1.000000e+00, double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ store double 0.000000e+00, double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ store float 0.000000e+00, float* @lx, align 4
+ store float 0.000000e+00, float* @ly, align 4
+ store double 0.000000e+00, double* @lxd, align 8
+ store double 0.000000e+00, double* @lyd, align 8
+ store float 0.000000e+00, float* getelementptr inbounds ({ float, float }* @lxy, i32 0, i32 0)
+ store float 0.000000e+00, float* getelementptr inbounds ({ float, float }* @lxy, i32 0, i32 1)
+ store double 0.000000e+00, double* getelementptr inbounds ({ double, double }* @lxyd, i32 0, i32 0)
+ store double 0.000000e+00, double* getelementptr inbounds ({ double, double }* @lxyd, i32 0, i32 1)
+ store float 0.000000e+00, float* @lret_sf, align 4
+ store double 0.000000e+00, double* @lret_df, align 8
+ store float 0.000000e+00, float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ store float 0.000000e+00, float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ store double 0.000000e+00, double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ store double 0.000000e+00, double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ ret void
+}
+
+; Function Attrs: nounwind
+define i32 @main() #0 {
+entry:
+ %retval = alloca i32, align 4
+ store i32 0, i32* %retval
+ call void @clear()
+ store float 1.500000e+00, float* @lx, align 4
+ %0 = load float* @lx, align 4
+ call void @v_sf(float %0)
+ %1 = load float* @x, align 4
+ %conv = fpext float %1 to double
+ %2 = load float* @lx, align 4
+ %conv1 = fpext float %2 to double
+ %3 = load float* @x, align 4
+ %4 = load float* @lx, align 4
+ %cmp = fcmp oeq float %3, %4
+ %conv2 = zext i1 %cmp to i32
+ %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([10 x i8]* @.str, i32 0, i32 0), double %conv, double %conv1, i32 %conv2)
+ call void @clear()
+ store double 0x41678C29C0000000, double* @lxd, align 8
+ %5 = load double* @lxd, align 8
+ call void @v_df(double %5)
+ %6 = load double* @xd, align 8
+ %7 = load double* @lxd, align 8
+ %8 = load double* @xd, align 8
+ %9 = load double* @lxd, align 8
+ %cmp3 = fcmp oeq double %8, %9
+ %conv4 = zext i1 %cmp3 to i32
+ %call5 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([10 x i8]* @.str, i32 0, i32 0), double %6, double %7, i32 %conv4)
+ call void @clear()
+ store float 9.000000e+00, float* @lx, align 4
+ store float 1.000000e+01, float* @ly, align 4
+ %10 = load float* @lx, align 4
+ %11 = load float* @ly, align 4
+ call void @v_sf_sf(float %10, float %11)
+ %12 = load float* @x, align 4
+ %conv6 = fpext float %12 to double
+ %13 = load float* @lx, align 4
+ %conv7 = fpext float %13 to double
+ %14 = load float* @y, align 4
+ %conv8 = fpext float %14 to double
+ %15 = load float* @ly, align 4
+ %conv9 = fpext float %15 to double
+ %16 = load float* @x, align 4
+ %17 = load float* @lx, align 4
+ %cmp10 = fcmp oeq float %16, %17
+ br i1 %cmp10, label %land.rhs, label %land.end
+
+land.rhs: ; preds = %entry
+ %18 = load float* @y, align 4
+ %19 = load float* @ly, align 4
+ %cmp12 = fcmp oeq float %18, %19
+ br label %land.end
+
+land.end: ; preds = %land.rhs, %entry
+ %20 = phi i1 [ false, %entry ], [ %cmp12, %land.rhs ]
+ %land.ext = zext i1 %20 to i32
+ %call14 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), double %conv6, double %conv7, double %conv8, double %conv9, i32 %land.ext)
+ call void @clear()
+ store float 0x3FFE666660000000, float* @lx, align 4
+ store double 0x4007E613249FF279, double* @lyd, align 8
+ %21 = load float* @lx, align 4
+ %22 = load double* @lyd, align 8
+ call void @v_sf_df(float %21, double %22)
+ %23 = load float* @x, align 4
+ %conv15 = fpext float %23 to double
+ %24 = load float* @lx, align 4
+ %conv16 = fpext float %24 to double
+ %25 = load double* @yd, align 8
+ %26 = load double* @lyd, align 8
+ %27 = load float* @x, align 4
+ %28 = load float* @lx, align 4
+ %cmp17 = fcmp oeq float %27, %28
+ %conv18 = zext i1 %cmp17 to i32
+ %29 = load double* @yd, align 8
+ %30 = load double* @lyd, align 8
+ %cmp19 = fcmp oeq double %29, %30
+ %conv20 = zext i1 %cmp19 to i32
+ %and = and i32 %conv18, %conv20
+ %call21 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), double %conv15, double %conv16, double %25, double %26, i32 %and)
+ call void @clear()
+ store double 0x4194E54F94000000, double* @lxd, align 8
+ store float 7.600000e+01, float* @ly, align 4
+ %31 = load double* @lxd, align 8
+ %32 = load float* @ly, align 4
+ call void @v_df_sf(double %31, float %32)
+ %33 = load double* @xd, align 8
+ %34 = load double* @lxd, align 8
+ %35 = load float* @y, align 4
+ %conv22 = fpext float %35 to double
+ %36 = load float* @ly, align 4
+ %conv23 = fpext float %36 to double
+ %37 = load double* @xd, align 8
+ %38 = load double* @lxd, align 8
+ %cmp24 = fcmp oeq double %37, %38
+ %conv25 = zext i1 %cmp24 to i32
+ %39 = load float* @y, align 4
+ %40 = load float* @ly, align 4
+ %cmp26 = fcmp oeq float %39, %40
+ %conv27 = zext i1 %cmp26 to i32
+ %and28 = and i32 %conv25, %conv27
+ %call29 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), double %33, double %34, double %conv22, double %conv23, i32 %and28)
+ call void @clear()
+ store double 7.365198e+07, double* @lxd, align 8
+ store double 0x416536CD80000000, double* @lyd, align 8
+ %41 = load double* @lxd, align 8
+ %42 = load double* @lyd, align 8
+ call void @v_df_df(double %41, double %42)
+ %43 = load double* @xd, align 8
+ %44 = load double* @lxd, align 8
+ %45 = load double* @yd, align 8
+ %46 = load double* @lyd, align 8
+ %47 = load double* @xd, align 8
+ %48 = load double* @lxd, align 8
+ %cmp30 = fcmp oeq double %47, %48
+ %conv31 = zext i1 %cmp30 to i32
+ %49 = load double* @yd, align 8
+ %50 = load double* @lyd, align 8
+ %cmp32 = fcmp oeq double %49, %50
+ %conv33 = zext i1 %cmp32 to i32
+ %and34 = and i32 %conv31, %conv33
+ %call35 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), double %43, double %44, double %45, double %46, i32 %and34)
+ call void @clear()
+ store float 0x4016666660000000, float* @ret_sf, align 4
+ %call36 = call float @sf_v()
+ store float %call36, float* @lret_sf, align 4
+ %51 = load float* @ret_sf, align 4
+ %conv37 = fpext float %51 to double
+ %52 = load float* @lret_sf, align 4
+ %conv38 = fpext float %52 to double
+ %53 = load float* @ret_sf, align 4
+ %54 = load float* @lret_sf, align 4
+ %cmp39 = fcmp oeq float %53, %54
+ %conv40 = zext i1 %cmp39 to i32
+ %call41 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([10 x i8]* @.str, i32 0, i32 0), double %conv37, double %conv38, i32 %conv40)
+ call void @clear()
+ store float 4.587300e+06, float* @ret_sf, align 4
+ store float 3.420000e+02, float* @lx, align 4
+ %55 = load float* @lx, align 4
+ %call42 = call float @sf_sf(float %55)
+ store float %call42, float* @lret_sf, align 4
+ %56 = load float* @ret_sf, align 4
+ %conv43 = fpext float %56 to double
+ %57 = load float* @lret_sf, align 4
+ %conv44 = fpext float %57 to double
+ %58 = load float* @x, align 4
+ %conv45 = fpext float %58 to double
+ %59 = load float* @lx, align 4
+ %conv46 = fpext float %59 to double
+ %60 = load float* @ret_sf, align 4
+ %61 = load float* @lret_sf, align 4
+ %cmp47 = fcmp oeq float %60, %61
+ %conv48 = zext i1 %cmp47 to i32
+ %62 = load float* @x, align 4
+ %63 = load float* @lx, align 4
+ %cmp49 = fcmp oeq float %62, %63
+ %conv50 = zext i1 %cmp49 to i32
+ %and51 = and i32 %conv48, %conv50
+ %call52 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), double %conv43, double %conv44, double %conv45, double %conv46, i32 %and51)
+ call void @clear()
+ store float 4.445910e+06, float* @ret_sf, align 4
+ store double 0x419A7DB294000000, double* @lxd, align 8
+ %64 = load double* @lxd, align 8
+ %call53 = call float @sf_df(double %64)
+ store float %call53, float* @lret_sf, align 4
+ %65 = load float* @ret_sf, align 4
+ %conv54 = fpext float %65 to double
+ %66 = load float* @lret_sf, align 4
+ %conv55 = fpext float %66 to double
+ %67 = load double* @xd, align 8
+ %68 = load double* @lxd, align 8
+ %69 = load float* @ret_sf, align 4
+ %70 = load float* @lret_sf, align 4
+ %cmp56 = fcmp oeq float %69, %70
+ %conv57 = zext i1 %cmp56 to i32
+ %71 = load double* @xd, align 8
+ %72 = load double* @lxd, align 8
+ %cmp58 = fcmp oeq double %71, %72
+ %conv59 = zext i1 %cmp58 to i32
+ %and60 = and i32 %conv57, %conv59
+ %call61 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), double %conv54, double %conv55, double %67, double %68, i32 %and60)
+ call void @clear()
+ store float 0x3FFF4BC6A0000000, float* @ret_sf, align 4
+ store float 4.445500e+03, float* @lx, align 4
+ store float 0x4068ACCCC0000000, float* @ly, align 4
+ %73 = load float* @lx, align 4
+ %74 = load float* @ly, align 4
+ %call62 = call float @sf_sf_sf(float %73, float %74)
+ store float %call62, float* @lret_sf, align 4
+ %75 = load float* @ret_sf, align 4
+ %conv63 = fpext float %75 to double
+ %76 = load float* @lret_sf, align 4
+ %conv64 = fpext float %76 to double
+ %77 = load float* @x, align 4
+ %conv65 = fpext float %77 to double
+ %78 = load float* @lx, align 4
+ %conv66 = fpext float %78 to double
+ %79 = load float* @y, align 4
+ %conv67 = fpext float %79 to double
+ %80 = load float* @ly, align 4
+ %conv68 = fpext float %80 to double
+ %81 = load float* @ret_sf, align 4
+ %82 = load float* @lret_sf, align 4
+ %cmp69 = fcmp oeq float %81, %82
+ br i1 %cmp69, label %land.lhs.true, label %land.end76
+
+land.lhs.true: ; preds = %land.end
+ %83 = load float* @x, align 4
+ %84 = load float* @lx, align 4
+ %cmp71 = fcmp oeq float %83, %84
+ br i1 %cmp71, label %land.rhs73, label %land.end76
+
+land.rhs73: ; preds = %land.lhs.true
+ %85 = load float* @y, align 4
+ %86 = load float* @ly, align 4
+ %cmp74 = fcmp oeq float %85, %86
+ br label %land.end76
+
+land.end76: ; preds = %land.rhs73, %land.lhs.true, %land.end
+ %87 = phi i1 [ false, %land.lhs.true ], [ false, %land.end ], [ %cmp74, %land.rhs73 ]
+ %land.ext77 = zext i1 %87 to i32
+ %call78 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), double %conv63, double %conv64, double %conv65, double %conv66, double %conv67, double %conv68, i32 %land.ext77)
+ call void @clear()
+ store float 9.991300e+04, float* @ret_sf, align 4
+ store float 1.114500e+04, float* @lx, align 4
+ store double 9.994445e+07, double* @lyd, align 8
+ %88 = load float* @lx, align 4
+ %89 = load double* @lyd, align 8
+ %call79 = call float @sf_sf_df(float %88, double %89)
+ store float %call79, float* @lret_sf, align 4
+ %90 = load float* @ret_sf, align 4
+ %conv80 = fpext float %90 to double
+ %91 = load float* @lret_sf, align 4
+ %conv81 = fpext float %91 to double
+ %92 = load float* @x, align 4
+ %conv82 = fpext float %92 to double
+ %93 = load float* @lx, align 4
+ %conv83 = fpext float %93 to double
+ %94 = load double* @yd, align 8
+ %95 = load double* @lyd, align 8
+ %96 = load float* @ret_sf, align 4
+ %97 = load float* @lret_sf, align 4
+ %cmp84 = fcmp oeq float %96, %97
+ br i1 %cmp84, label %land.lhs.true86, label %land.end92
+
+land.lhs.true86: ; preds = %land.end76
+ %98 = load float* @x, align 4
+ %99 = load float* @lx, align 4
+ %cmp87 = fcmp oeq float %98, %99
+ br i1 %cmp87, label %land.rhs89, label %land.end92
+
+land.rhs89: ; preds = %land.lhs.true86
+ %100 = load double* @yd, align 8
+ %101 = load double* @lyd, align 8
+ %cmp90 = fcmp oeq double %100, %101
+ br label %land.end92
+
+land.end92: ; preds = %land.rhs89, %land.lhs.true86, %land.end76
+ %102 = phi i1 [ false, %land.lhs.true86 ], [ false, %land.end76 ], [ %cmp90, %land.rhs89 ]
+ %land.ext93 = zext i1 %102 to i32
+ %call94 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), double %conv80, double %conv81, double %conv82, double %conv83, double %94, double %95, i32 %land.ext93)
+ call void @clear()
+ store float 0x417CCC7A00000000, float* @ret_sf, align 4
+ store double 0x4172034530000000, double* @lxd, align 8
+ store float 4.456200e+04, float* @ly, align 4
+ %103 = load double* @lxd, align 8
+ %104 = load float* @ly, align 4
+ %call95 = call float @sf_df_sf(double %103, float %104)
+ store float %call95, float* @lret_sf, align 4
+ %105 = load float* @ret_sf, align 4
+ %conv96 = fpext float %105 to double
+ %106 = load float* @lret_sf, align 4
+ %conv97 = fpext float %106 to double
+ %107 = load double* @xd, align 8
+ %108 = load double* @lxd, align 8
+ %109 = load float* @y, align 4
+ %conv98 = fpext float %109 to double
+ %110 = load float* @ly, align 4
+ %conv99 = fpext float %110 to double
+ %111 = load float* @ret_sf, align 4
+ %112 = load float* @lret_sf, align 4
+ %cmp100 = fcmp oeq float %111, %112
+ br i1 %cmp100, label %land.lhs.true102, label %land.end108
+
+land.lhs.true102: ; preds = %land.end92
+ %113 = load double* @xd, align 8
+ %114 = load double* @lxd, align 8
+ %cmp103 = fcmp oeq double %113, %114
+ br i1 %cmp103, label %land.rhs105, label %land.end108
+
+land.rhs105: ; preds = %land.lhs.true102
+ %115 = load float* @y, align 4
+ %116 = load float* @ly, align 4
+ %cmp106 = fcmp oeq float %115, %116
+ br label %land.end108
+
+land.end108: ; preds = %land.rhs105, %land.lhs.true102, %land.end92
+ %117 = phi i1 [ false, %land.lhs.true102 ], [ false, %land.end92 ], [ %cmp106, %land.rhs105 ]
+ %land.ext109 = zext i1 %117 to i32
+ %call110 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), double %conv96, double %conv97, double %107, double %108, double %conv98, double %conv99, i32 %land.ext109)
+ call void @clear()
+ store float 3.987721e+06, float* @ret_sf, align 4
+ store double 0x3FF1F49F6DDDC2D8, double* @lxd, align 8
+ store double 0x409129F306A2B170, double* @lyd, align 8
+ %118 = load double* @lxd, align 8
+ %119 = load double* @lyd, align 8
+ %call111 = call float @sf_df_df(double %118, double %119)
+ store float %call111, float* @lret_sf, align 4
+ %120 = load float* @ret_sf, align 4
+ %conv112 = fpext float %120 to double
+ %121 = load float* @lret_sf, align 4
+ %conv113 = fpext float %121 to double
+ %122 = load double* @xd, align 8
+ %123 = load double* @lxd, align 8
+ %124 = load double* @yd, align 8
+ %125 = load double* @lyd, align 8
+ %126 = load float* @ret_sf, align 4
+ %127 = load float* @lret_sf, align 4
+ %cmp114 = fcmp oeq float %126, %127
+ br i1 %cmp114, label %land.lhs.true116, label %land.end122
+
+land.lhs.true116: ; preds = %land.end108
+ %128 = load double* @xd, align 8
+ %129 = load double* @lxd, align 8
+ %cmp117 = fcmp oeq double %128, %129
+ br i1 %cmp117, label %land.rhs119, label %land.end122
+
+land.rhs119: ; preds = %land.lhs.true116
+ %130 = load double* @yd, align 8
+ %131 = load double* @lyd, align 8
+ %cmp120 = fcmp oeq double %130, %131
+ br label %land.end122
+
+land.end122: ; preds = %land.rhs119, %land.lhs.true116, %land.end108
+ %132 = phi i1 [ false, %land.lhs.true116 ], [ false, %land.end108 ], [ %cmp120, %land.rhs119 ]
+ %land.ext123 = zext i1 %132 to i32
+ %call124 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), double %conv112, double %conv113, double %122, double %123, double %124, double %125, i32 %land.ext123)
+ call void @clear()
+ store double 1.561234e+01, double* @ret_df, align 8
+ %call125 = call double @df_v()
+ store double %call125, double* @lret_df, align 8
+ %133 = load double* @ret_df, align 8
+ %134 = load double* @lret_df, align 8
+ %135 = load double* @ret_df, align 8
+ %136 = load double* @lret_df, align 8
+ %cmp126 = fcmp oeq double %135, %136
+ %conv127 = zext i1 %cmp126 to i32
+ %call128 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([10 x i8]* @.str, i32 0, i32 0), double %133, double %134, i32 %conv127)
+ call void @clear()
+ store double 1.345873e+01, double* @ret_df, align 8
+ store float 3.434520e+05, float* @lx, align 4
+ %137 = load float* @lx, align 4
+ %call129 = call double @df_sf(float %137)
+ store double %call129, double* @lret_df, align 8
+ %138 = load double* @ret_df, align 8
+ %139 = load double* @lret_df, align 8
+ %140 = load float* @x, align 4
+ %conv130 = fpext float %140 to double
+ %141 = load float* @lx, align 4
+ %conv131 = fpext float %141 to double
+ %142 = load double* @ret_df, align 8
+ %143 = load double* @lret_df, align 8
+ %cmp132 = fcmp oeq double %142, %143
+ %conv133 = zext i1 %cmp132 to i32
+ %144 = load float* @x, align 4
+ %145 = load float* @lx, align 4
+ %cmp134 = fcmp oeq float %144, %145
+ %conv135 = zext i1 %cmp134 to i32
+ %and136 = and i32 %conv133, %conv135
+ %call137 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), double %138, double %139, double %conv130, double %conv131, i32 %and136)
+ call void @clear()
+ store double 0x4084F3AB7AA25D8D, double* @ret_df, align 8
+ store double 0x4114F671D2F1A9FC, double* @lxd, align 8
+ %146 = load double* @lxd, align 8
+ %call138 = call double @df_df(double %146)
+ store double %call138, double* @lret_df, align 8
+ %147 = load double* @ret_df, align 8
+ %148 = load double* @lret_df, align 8
+ %149 = load double* @xd, align 8
+ %150 = load double* @lxd, align 8
+ %151 = load double* @ret_df, align 8
+ %152 = load double* @lret_df, align 8
+ %cmp139 = fcmp oeq double %151, %152
+ %conv140 = zext i1 %cmp139 to i32
+ %153 = load double* @xd, align 8
+ %154 = load double* @lxd, align 8
+ %cmp141 = fcmp oeq double %153, %154
+ %conv142 = zext i1 %cmp141 to i32
+ %and143 = and i32 %conv140, %conv142
+ %call144 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), double %147, double %148, double %149, double %150, i32 %and143)
+ call void @clear()
+ store double 6.781956e+03, double* @ret_df, align 8
+ store float 4.445500e+03, float* @lx, align 4
+ store float 0x4068ACCCC0000000, float* @ly, align 4
+ %155 = load float* @lx, align 4
+ %156 = load float* @ly, align 4
+ %call145 = call double @df_sf_sf(float %155, float %156)
+ store double %call145, double* @lret_df, align 8
+ %157 = load double* @ret_df, align 8
+ %158 = load double* @lret_df, align 8
+ %159 = load float* @x, align 4
+ %conv146 = fpext float %159 to double
+ %160 = load float* @lx, align 4
+ %conv147 = fpext float %160 to double
+ %161 = load float* @y, align 4
+ %conv148 = fpext float %161 to double
+ %162 = load float* @ly, align 4
+ %conv149 = fpext float %162 to double
+ %163 = load double* @ret_df, align 8
+ %164 = load double* @lret_df, align 8
+ %cmp150 = fcmp oeq double %163, %164
+ br i1 %cmp150, label %land.lhs.true152, label %land.end158
+
+land.lhs.true152: ; preds = %land.end122
+ %165 = load float* @x, align 4
+ %166 = load float* @lx, align 4
+ %cmp153 = fcmp oeq float %165, %166
+ br i1 %cmp153, label %land.rhs155, label %land.end158
+
+land.rhs155: ; preds = %land.lhs.true152
+ %167 = load float* @y, align 4
+ %168 = load float* @ly, align 4
+ %cmp156 = fcmp oeq float %167, %168
+ br label %land.end158
+
+land.end158: ; preds = %land.rhs155, %land.lhs.true152, %land.end122
+ %169 = phi i1 [ false, %land.lhs.true152 ], [ false, %land.end122 ], [ %cmp156, %land.rhs155 ]
+ %land.ext159 = zext i1 %169 to i32
+ %call160 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), double %157, double %158, double %conv146, double %conv147, double %conv148, double %conv149, i32 %land.ext159)
+ call void @clear()
+ store double 1.889130e+05, double* @ret_df, align 8
+ store float 9.111450e+05, float* @lx, align 4
+ store double 0x4185320A58000000, double* @lyd, align 8
+ %170 = load float* @lx, align 4
+ %171 = load double* @lyd, align 8
+ %call161 = call double @df_sf_df(float %170, double %171)
+ store double %call161, double* @lret_df, align 8
+ %172 = load double* @ret_df, align 8
+ %173 = load double* @lret_df, align 8
+ %174 = load float* @x, align 4
+ %conv162 = fpext float %174 to double
+ %175 = load float* @lx, align 4
+ %conv163 = fpext float %175 to double
+ %176 = load double* @yd, align 8
+ %177 = load double* @lyd, align 8
+ %178 = load double* @ret_df, align 8
+ %179 = load double* @lret_df, align 8
+ %cmp164 = fcmp oeq double %178, %179
+ br i1 %cmp164, label %land.lhs.true166, label %land.end172
+
+land.lhs.true166: ; preds = %land.end158
+ %180 = load float* @x, align 4
+ %181 = load float* @lx, align 4
+ %cmp167 = fcmp oeq float %180, %181
+ br i1 %cmp167, label %land.rhs169, label %land.end172
+
+land.rhs169: ; preds = %land.lhs.true166
+ %182 = load double* @yd, align 8
+ %183 = load double* @lyd, align 8
+ %cmp170 = fcmp oeq double %182, %183
+ br label %land.end172
+
+land.end172: ; preds = %land.rhs169, %land.lhs.true166, %land.end158
+ %184 = phi i1 [ false, %land.lhs.true166 ], [ false, %land.end158 ], [ %cmp170, %land.rhs169 ]
+ %land.ext173 = zext i1 %184 to i32
+ %call174 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), double %172, double %173, double %conv162, double %conv163, double %176, double %177, i32 %land.ext173)
+ call void @clear()
+ store double 0x418B2DB900000000, double* @ret_df, align 8
+ store double 0x41B1EF2ED3000000, double* @lxd, align 8
+ store float 1.244562e+06, float* @ly, align 4
+ %185 = load double* @lxd, align 8
+ %186 = load float* @ly, align 4
+ %call175 = call double @df_df_sf(double %185, float %186)
+ store double %call175, double* @lret_df, align 8
+ %187 = load double* @ret_df, align 8
+ %188 = load double* @lret_df, align 8
+ %189 = load double* @xd, align 8
+ %190 = load double* @lxd, align 8
+ %191 = load float* @y, align 4
+ %conv176 = fpext float %191 to double
+ %192 = load float* @ly, align 4
+ %conv177 = fpext float %192 to double
+ %193 = load double* @ret_df, align 8
+ %194 = load double* @lret_df, align 8
+ %cmp178 = fcmp oeq double %193, %194
+ br i1 %cmp178, label %land.lhs.true180, label %land.end186
+
+land.lhs.true180: ; preds = %land.end172
+ %195 = load double* @xd, align 8
+ %196 = load double* @lxd, align 8
+ %cmp181 = fcmp oeq double %195, %196
+ br i1 %cmp181, label %land.rhs183, label %land.end186
+
+land.rhs183: ; preds = %land.lhs.true180
+ %197 = load float* @y, align 4
+ %198 = load float* @ly, align 4
+ %cmp184 = fcmp oeq float %197, %198
+ br label %land.end186
+
+land.end186: ; preds = %land.rhs183, %land.lhs.true180, %land.end172
+ %199 = phi i1 [ false, %land.lhs.true180 ], [ false, %land.end172 ], [ %cmp184, %land.rhs183 ]
+ %land.ext187 = zext i1 %199 to i32
+ %call188 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), double %187, double %188, double %189, double %190, double %conv176, double %conv177, i32 %land.ext187)
+ call void @clear()
+ store double 3.987721e+06, double* @ret_df, align 8
+ store double 5.223560e+00, double* @lxd, align 8
+ store double 0x40B7D37CC1A8AC5C, double* @lyd, align 8
+ %200 = load double* @lxd, align 8
+ %201 = load double* @lyd, align 8
+ %call189 = call double @df_df_df(double %200, double %201)
+ store double %call189, double* @lret_df, align 8
+ %202 = load double* @ret_df, align 8
+ %203 = load double* @lret_df, align 8
+ %204 = load double* @xd, align 8
+ %205 = load double* @lxd, align 8
+ %206 = load double* @yd, align 8
+ %207 = load double* @lyd, align 8
+ %208 = load double* @ret_df, align 8
+ %209 = load double* @lret_df, align 8
+ %cmp190 = fcmp oeq double %208, %209
+ br i1 %cmp190, label %land.lhs.true192, label %land.end198
+
+land.lhs.true192: ; preds = %land.end186
+ %210 = load double* @xd, align 8
+ %211 = load double* @lxd, align 8
+ %cmp193 = fcmp oeq double %210, %211
+ br i1 %cmp193, label %land.rhs195, label %land.end198
+
+land.rhs195: ; preds = %land.lhs.true192
+ %212 = load double* @yd, align 8
+ %213 = load double* @lyd, align 8
+ %cmp196 = fcmp oeq double %212, %213
+ br label %land.end198
+
+land.end198: ; preds = %land.rhs195, %land.lhs.true192, %land.end186
+ %214 = phi i1 [ false, %land.lhs.true192 ], [ false, %land.end186 ], [ %cmp196, %land.rhs195 ]
+ %land.ext199 = zext i1 %214 to i32
+ %call200 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str2, i32 0, i32 0), double %202, double %203, double %204, double %205, double %206, double %207, i32 %land.ext199)
+ call void @clear()
+ store float 4.500000e+00, float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ store float 7.000000e+00, float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ %call201 = call { float, float } @sc_v()
+ %215 = extractvalue { float, float } %call201, 0
+ %216 = extractvalue { float, float } %call201, 1
+ store float %215, float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ store float %216, float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ %ret_sc.real = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ %ret_sc.imag = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ %conv202 = fpext float %ret_sc.real to double
+ %conv203 = fpext float %ret_sc.imag to double
+ %ret_sc.real204 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ %ret_sc.imag205 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ %conv206 = fpext float %ret_sc.real204 to double
+ %conv207 = fpext float %ret_sc.imag205 to double
+ %lret_sc.real = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ %lret_sc.imag = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ %conv208 = fpext float %lret_sc.real to double
+ %conv209 = fpext float %lret_sc.imag to double
+ %lret_sc.real210 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ %lret_sc.imag211 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ %conv212 = fpext float %lret_sc.real210 to double
+ %conv213 = fpext float %lret_sc.imag211 to double
+ %ret_sc.real214 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ %ret_sc.imag215 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ %lret_sc.real216 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ %lret_sc.imag217 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ %cmp.r = fcmp oeq float %ret_sc.real214, %lret_sc.real216
+ %cmp.i = fcmp oeq float %ret_sc.imag215, %lret_sc.imag217
+ %and.ri = and i1 %cmp.r, %cmp.i
+ %conv218 = zext i1 %and.ri to i32
+ %call219 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([18 x i8]* @.str3, i32 0, i32 0), double %conv202, double %conv207, double %conv208, double %conv213, i32 %conv218)
+ call void @clear()
+ store float 0x3FF7A99300000000, float* @lx, align 4
+ store float 4.500000e+00, float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ store float 7.000000e+00, float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ %217 = load float* @lx, align 4
+ %call220 = call { float, float } @sc_sf(float %217)
+ %218 = extractvalue { float, float } %call220, 0
+ %219 = extractvalue { float, float } %call220, 1
+ store float %218, float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ store float %219, float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ %ret_sc.real221 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ %ret_sc.imag222 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ %conv223 = fpext float %ret_sc.real221 to double
+ %conv224 = fpext float %ret_sc.imag222 to double
+ %ret_sc.real225 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ %ret_sc.imag226 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ %conv227 = fpext float %ret_sc.real225 to double
+ %conv228 = fpext float %ret_sc.imag226 to double
+ %lret_sc.real229 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ %lret_sc.imag230 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ %conv231 = fpext float %lret_sc.real229 to double
+ %conv232 = fpext float %lret_sc.imag230 to double
+ %lret_sc.real233 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ %lret_sc.imag234 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ %conv235 = fpext float %lret_sc.real233 to double
+ %conv236 = fpext float %lret_sc.imag234 to double
+ %220 = load float* @x, align 4
+ %conv237 = fpext float %220 to double
+ %221 = load float* @lx, align 4
+ %conv238 = fpext float %221 to double
+ %ret_sc.real239 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 0)
+ %ret_sc.imag240 = load float* getelementptr inbounds ({ float, float }* @ret_sc, i32 0, i32 1)
+ %lret_sc.real241 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 0)
+ %lret_sc.imag242 = load float* getelementptr inbounds ({ float, float }* @lret_sc, i32 0, i32 1)
+ %cmp.r243 = fcmp oeq float %ret_sc.real239, %lret_sc.real241
+ %cmp.i244 = fcmp oeq float %ret_sc.imag240, %lret_sc.imag242
+ %and.ri245 = and i1 %cmp.r243, %cmp.i244
+ br i1 %and.ri245, label %land.rhs247, label %land.end250
+
+land.rhs247: ; preds = %land.end198
+ %222 = load float* @x, align 4
+ %223 = load float* @lx, align 4
+ %cmp248 = fcmp oeq float %222, %223
+ br label %land.end250
+
+land.end250: ; preds = %land.rhs247, %land.end198
+ %224 = phi i1 [ false, %land.end198 ], [ %cmp248, %land.rhs247 ]
+ %land.ext251 = zext i1 %224 to i32
+ %call252 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([24 x i8]* @.str4, i32 0, i32 0), double %conv223, double %conv228, double %conv231, double %conv236, double %conv237, double %conv238, i32 %land.ext251)
+ call void @clear()
+ store double 1.234500e+03, double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ store double 7.677000e+03, double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ %call253 = call { double, double } @dc_v()
+ %225 = extractvalue { double, double } %call253, 0
+ %226 = extractvalue { double, double } %call253, 1
+ store double %225, double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ store double %226, double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ %ret_dc.real = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ %ret_dc.imag = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ %ret_dc.real254 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ %ret_dc.imag255 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ %lret_dc.real = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ %lret_dc.imag = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ %lret_dc.real256 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ %lret_dc.imag257 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ %ret_dc.real258 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ %ret_dc.imag259 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ %lret_dc.real260 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ %lret_dc.imag261 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ %cmp.r262 = fcmp oeq double %ret_dc.real258, %lret_dc.real260
+ %cmp.i263 = fcmp oeq double %ret_dc.imag259, %lret_dc.imag261
+ %and.ri264 = and i1 %cmp.r262, %cmp.i263
+ %conv265 = zext i1 %and.ri264 to i32
+ %call266 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([18 x i8]* @.str3, i32 0, i32 0), double %ret_dc.real, double %ret_dc.imag255, double %lret_dc.real, double %lret_dc.imag257, i32 %conv265)
+ call void @clear()
+ store double 0x40AAF6F532617C1C, double* @lxd, align 8
+ store double 4.444500e+03, double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ store double 7.888000e+03, double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ %227 = load float* @lx, align 4
+ %call267 = call { double, double } @dc_sf(float %227)
+ %228 = extractvalue { double, double } %call267, 0
+ %229 = extractvalue { double, double } %call267, 1
+ store double %228, double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ store double %229, double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ %ret_dc.real268 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ %ret_dc.imag269 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ %ret_dc.real270 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ %ret_dc.imag271 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ %lret_dc.real272 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ %lret_dc.imag273 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ %lret_dc.real274 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ %lret_dc.imag275 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ %230 = load float* @x, align 4
+ %conv276 = fpext float %230 to double
+ %231 = load float* @lx, align 4
+ %conv277 = fpext float %231 to double
+ %ret_dc.real278 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 0)
+ %ret_dc.imag279 = load double* getelementptr inbounds ({ double, double }* @ret_dc, i32 0, i32 1)
+ %lret_dc.real280 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 0)
+ %lret_dc.imag281 = load double* getelementptr inbounds ({ double, double }* @lret_dc, i32 0, i32 1)
+ %cmp.r282 = fcmp oeq double %ret_dc.real278, %lret_dc.real280
+ %cmp.i283 = fcmp oeq double %ret_dc.imag279, %lret_dc.imag281
+ %and.ri284 = and i1 %cmp.r282, %cmp.i283
+ br i1 %and.ri284, label %land.rhs286, label %land.end289
+
+land.rhs286: ; preds = %land.end250
+ %232 = load float* @x, align 4
+ %233 = load float* @lx, align 4
+ %cmp287 = fcmp oeq float %232, %233
+ br label %land.end289
+
+land.end289: ; preds = %land.rhs286, %land.end250
+ %234 = phi i1 [ false, %land.end250 ], [ %cmp287, %land.rhs286 ]
+ %land.ext290 = zext i1 %234 to i32
+ %call291 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([24 x i8]* @.str4, i32 0, i32 0), double %ret_dc.real268, double %ret_dc.imag271, double %lret_dc.real272, double %lret_dc.imag275, double %conv276, double %conv277, i32 %land.ext290)
+ %235 = load i32* %retval
+ ret i32 %235
+}
+
+declare void @v_sf(float) #1
+; stel: .section .mips16.call.fp.v_sf,"ax",@progbits
+; stel: .ent __call_stub_v_sf
+; stel: mtc1 $4,$f12
+; stel: lui $25,%hi(v_sf)
+; stel: addiu $25,$25,%lo(v_sf)
+; stel: jr $25
+; stel: .end __call_stub_v_sf
+
+declare i32 @printf(i8*, ...) #1
+
+declare void @v_df(double) #1
+; stel: .section .mips16.call.fp.v_df,"ax",@progbits
+; stel: .ent __call_stub_v_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: lui $25,%hi(v_df)
+; stel: addiu $25,$25,%lo(v_df)
+; stel: jr $25
+; stel: .end __call_stub_v_df
+
+declare void @v_sf_sf(float, float) #1
+; stel: .section .mips16.call.fp.v_sf_sf,"ax",@progbits
+; stel: .ent __call_stub_v_sf_sf
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f14
+; stel: lui $25,%hi(v_sf_sf)
+; stel: addiu $25,$25,%lo(v_sf_sf)
+; stel: jr $25
+; stel: .end __call_stub_v_sf_sf
+
+declare void @v_sf_df(float, double) #1
+; stel: .section .mips16.call.fp.v_sf_df,"ax",@progbits
+; stel: .ent __call_stub_v_sf_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $6,$f14
+; stel: mtc1 $7,$f15
+; stel: lui $25,%hi(v_sf_df)
+; stel: addiu $25,$25,%lo(v_sf_df)
+; stel: jr $25
+; stel: .end __call_stub_v_sf_df
+
+declare void @v_df_sf(double, float) #1
+; stel: .section .mips16.call.fp.v_df_sf,"ax",@progbits
+; stel: .ent __call_stub_v_df_sf
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: mtc1 $6,$f14
+; stel: lui $25,%hi(v_df_sf)
+; stel: addiu $25,$25,%lo(v_df_sf)
+; stel: jr $25
+; stel: .end __call_stub_v_df_sf
+
+declare void @v_df_df(double, double) #1
+; stel: .section .mips16.call.fp.v_df_df,"ax",@progbits
+; stel: .ent __call_stub_v_df_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: mtc1 $6,$f14
+; stel: mtc1 $7,$f15
+; stel: lui $25,%hi(v_df_df)
+; stel: addiu $25,$25,%lo(v_df_df)
+; stel: jr $25
+; stel: .end __call_stub_v_df_df
+
+declare float @sf_v() #1
+; stel: .section .mips16.call.fp.sf_v,"ax",@progbits
+; stel: .ent __call_stub_sf_v
+; stel: move $18, $31
+; stel: jal sf_v
+; stel: mfc1 $2,$f0
+; stel: jr $18
+; stel: .end __call_stub_sf_v
+
+declare float @sf_sf(float) #1
+; stel: .section .mips16.call.fp.sf_sf,"ax",@progbits
+; stel: .ent __call_stub_sf_sf
+; stel: mtc1 $4,$f12
+; stel: move $18, $31
+; stel: jal sf_sf
+; stel: mfc1 $2,$f0
+; stel: jr $18
+; stel: .end __call_stub_sf_sf
+
+declare float @sf_df(double) #1
+; stel: .section .mips16.call.fp.sf_df,"ax",@progbits
+; stel: .ent __call_stub_sf_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: move $18, $31
+; stel: jal sf_df
+; stel: mfc1 $2,$f0
+; stel: jr $18
+; stel: .end __call_stub_sf_df
+
+declare float @sf_sf_sf(float, float) #1
+; stel: .section .mips16.call.fp.sf_sf_sf,"ax",@progbits
+; stel: .ent __call_stub_sf_sf_sf
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f14
+; stel: move $18, $31
+; stel: jal sf_sf_sf
+; stel: mfc1 $2,$f0
+; stel: jr $18
+; stel: .end __call_stub_sf_sf_sf
+
+declare float @sf_sf_df(float, double) #1
+; stel: .section .mips16.call.fp.sf_sf_df,"ax",@progbits
+; stel: .ent __call_stub_sf_sf_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $6,$f14
+; stel: mtc1 $7,$f15
+; stel: move $18, $31
+; stel: jal sf_sf_df
+; stel: mfc1 $2,$f0
+; stel: jr $18
+; stel: .end __call_stub_sf_sf_df
+
+declare float @sf_df_sf(double, float) #1
+; stel: .section .mips16.call.fp.sf_df_sf,"ax",@progbits
+; stel: .ent __call_stub_sf_df_sf
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: mtc1 $6,$f14
+; stel: move $18, $31
+; stel: jal sf_df_sf
+; stel: mfc1 $2,$f0
+; stel: jr $18
+; stel: .end __call_stub_sf_df_sf
+
+declare float @sf_df_df(double, double) #1
+; stel: .section .mips16.call.fp.sf_df_df,"ax",@progbits
+; stel: .ent __call_stub_sf_df_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: mtc1 $6,$f14
+; stel: mtc1 $7,$f15
+; stel: move $18, $31
+; stel: jal sf_df_df
+; stel: mfc1 $2,$f0
+; stel: jr $18
+; stel: .end __call_stub_sf_df_df
+
+declare double @df_v() #1
+; stel: .section .mips16.call.fp.df_v,"ax",@progbits
+; stel: .ent __call_stub_df_v
+; stel: move $18, $31
+; stel: jal df_v
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_df_v
+
+declare double @df_sf(float) #1
+; stel: .section .mips16.call.fp.df_sf,"ax",@progbits
+; stel: .ent __call_stub_df_sf
+; stel: mtc1 $4,$f12
+; stel: move $18, $31
+; stel: jal df_sf
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_df_sf
+
+declare double @df_df(double) #1
+; stel: .section .mips16.call.fp.df_df,"ax",@progbits
+; stel: .ent __call_stub_df_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: move $18, $31
+; stel: jal df_df
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_df_df
+
+declare double @df_sf_sf(float, float) #1
+; stel: .section .mips16.call.fp.df_sf_sf,"ax",@progbits
+; stel: .ent __call_stub_df_sf_sf
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f14
+; stel: move $18, $31
+; stel: jal df_sf_sf
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_df_sf_sf
+
+declare double @df_sf_df(float, double) #1
+; stel: .section .mips16.call.fp.df_sf_df,"ax",@progbits
+; stel: .ent __call_stub_df_sf_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $6,$f14
+; stel: mtc1 $7,$f15
+; stel: move $18, $31
+; stel: jal df_sf_df
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_df_sf_df
+
+declare double @df_df_sf(double, float) #1
+; stel: .section .mips16.call.fp.df_df_sf,"ax",@progbits
+; stel: .ent __call_stub_df_df_sf
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: mtc1 $6,$f14
+; stel: move $18, $31
+; stel: jal df_df_sf
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_df_df_sf
+
+declare double @df_df_df(double, double) #1
+; stel: .section .mips16.call.fp.df_df_df,"ax",@progbits
+; stel: .ent __call_stub_df_df_df
+; stel: mtc1 $4,$f12
+; stel: mtc1 $5,$f13
+; stel: mtc1 $6,$f14
+; stel: mtc1 $7,$f15
+; stel: move $18, $31
+; stel: jal df_df_df
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_df_df_df
+
+declare { float, float } @sc_v() #1
+; stel: .section .mips16.call.fp.sc_v,"ax",@progbits
+; stel: .ent __call_stub_sc_v
+; stel: move $18, $31
+; stel: jal sc_v
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f2
+; stel: jr $18
+; stel: .end __call_stub_sc_v
+
+declare { float, float } @sc_sf(float) #1
+; stel: .section .mips16.call.fp.sc_sf,"ax",@progbits
+; stel: .ent __call_stub_sc_sf
+; stel: mtc1 $4,$f12
+; stel: move $18, $31
+; stel: jal sc_sf
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f2
+; stel: jr $18
+; stel: .end __call_stub_sc_sf
+
+declare { double, double } @dc_v() #1
+; stel: .section .mips16.call.fp.dc_v,"ax",@progbits
+; stel: .ent __call_stub_dc_v
+; stel: move $18, $31
+; stel: jal dc_v
+; stel: mfc1 $4,$f2
+; stel: mfc1 $5,$f3
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_dc_v
+
+declare { double, double } @dc_sf(float) #1
+; stel: .section .mips16.call.fp.dc_sf,"ax",@progbits
+; stel: .ent __call_stub_dc_sf
+; stel: mtc1 $4,$f12
+; stel: move $18, $31
+; stel: jal dc_sf
+; stel: mfc1 $4,$f2
+; stel: mfc1 $5,$f3
+; stel: mfc1 $2,$f0
+; stel: mfc1 $3,$f1
+; stel: jr $18
+; stel: .end __call_stub_dc_sf
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
diff --git a/test/CodeGen/Mips/mno-ldc1-sdc1.ll b/test/CodeGen/Mips/mno-ldc1-sdc1.ll
new file mode 100644
index 0000000000..eae9a2216a
--- /dev/null
+++ b/test/CodeGen/Mips/mno-ldc1-sdc1.ll
@@ -0,0 +1,45 @@
+; RUN: llc -march=mipsel -relocation-model=pic -mno-ldc1-sdc1 < %s | \
+; RUN: FileCheck %s -check-prefix=LE-PIC
+; RUN: llc -march=mipsel -relocation-model=static -mno-ldc1-sdc1 < %s | \
+; RUN: FileCheck %s -check-prefix=LE-STATIC
+; RUN: llc -march=mips -relocation-model=pic -mno-ldc1-sdc1 < %s | \
+; RUN: FileCheck %s -check-prefix=BE-PIC
+; RUN: llc -march=mipsel < %s | FileCheck %s -check-prefix=CHECK-LDC1-SDC1
+
+@g0 = common global double 0.000000e+00, align 8
+
+; LE-PIC: test_ldc1:
+; LE-PIC: lwc1 $f0, 0(${{[0-9]+}})
+; LE-PIC: lwc1 $f1, 4(${{[0-9]+}})
+; LE-STATIC: test_ldc1:
+; LE-STATIC: lwc1 $f0, %lo(g0)(${{[0-9]+}})
+; LE-STATIC: lwc1 $f1, %lo(g0+4)(${{[0-9]+}})
+; BE-PIC: test_ldc1:
+; BE-PIC: lwc1 $f1, 0(${{[0-9]+}})
+; BE-PIC: lwc1 $f0, 4(${{[0-9]+}})
+; CHECK-LDC1-SDC1: test_ldc1:
+; CHECK-LDC1-SDC1: ldc1 $f{{[0-9]+}}
+
+define double @test_ldc1() {
+entry:
+ %0 = load double* @g0, align 8
+ ret double %0
+}
+
+; LE-PIC: test_sdc1:
+; LE-PIC: swc1 $f12, 0(${{[0-9]+}})
+; LE-PIC: swc1 $f13, 4(${{[0-9]+}})
+; LE-STATIC: test_sdc1:
+; LE-STATIC: swc1 $f12, %lo(g0)(${{[0-9]+}})
+; LE-STATIC: swc1 $f13, %lo(g0+4)(${{[0-9]+}})
+; BE-PIC: test_sdc1:
+; BE-PIC: swc1 $f13, 0(${{[0-9]+}})
+; BE-PIC: swc1 $f12, 4(${{[0-9]+}})
+; CHECK-LDC1-SDC1: test_sdc1:
+; CHECK-LDC1-SDC1: sdc1 $f{{[0-9]+}}
+
+define void @test_sdc1(double %a) {
+entry:
+ store double %a, double* @g0, align 8
+ ret void
+}
diff --git a/test/CodeGen/Mips/stackcoloring.ll b/test/CodeGen/Mips/stackcoloring.ll
new file mode 100644
index 0000000000..76cc08679d
--- /dev/null
+++ b/test/CodeGen/Mips/stackcoloring.ll
@@ -0,0 +1,39 @@
+; RUN: llc -march=mipsel < %s | FileCheck %s
+
+@g1 = external global i32*
+
+; CHECK: foo1:
+; CHECK: lw ${{[0-9]+}}, %got(g1)
+; CHECK: # %for.body
+; CHECK: # %for.end
+
+define i32 @foo1() {
+entry:
+ %b = alloca [16 x i32], align 4
+ %0 = bitcast [16 x i32]* %b to i8*
+ call void @llvm.lifetime.start(i64 64, i8* %0)
+ %arraydecay = getelementptr inbounds [16 x i32]* %b, i32 0, i32 0
+ br label %for.body
+
+for.body: ; preds = %for.body, %entry
+ %i.05 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
+ %v.04 = phi i32 [ 0, %entry ], [ %add, %for.body ]
+ %1 = load i32** @g1, align 4
+ %arrayidx = getelementptr inbounds i32* %1, i32 %i.05
+ %2 = load i32* %arrayidx, align 4
+ %call = call i32 @foo2(i32 %2, i32* %arraydecay)
+ %add = add nsw i32 %call, %v.04
+ %inc = add nsw i32 %i.05, 1
+ %exitcond = icmp eq i32 %inc, 10000
+ br i1 %exitcond, label %for.end, label %for.body
+
+for.end: ; preds = %for.body
+ call void @llvm.lifetime.end(i64 64, i8* %0)
+ ret i32 %add
+}
+
+declare void @llvm.lifetime.start(i64, i8* nocapture)
+
+declare i32 @foo2(i32, i32*)
+
+declare void @llvm.lifetime.end(i64, i8* nocapture)
diff --git a/test/CodeGen/PowerPC/addrfuncstr.ll b/test/CodeGen/PowerPC/addrfuncstr.ll
new file mode 100644
index 0000000000..60c02d498f
--- /dev/null
+++ b/test/CodeGen/PowerPC/addrfuncstr.ll
@@ -0,0 +1,27 @@
+; RUN: llc -O0 < %s | FileCheck %s
+
+; Verify that a constant with an initializer that may turn into a dynamic
+; relocation is not placed in .rodata, but rather in .data.rel.ro.
+
+target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
+target triple = "powerpc64-unknown-linux-gnu"
+
+%struct.x = type { i64 (i8*, i64, i64, %struct._IO_FILE*)* }
+%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
+%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
+
+@_ZL1y = internal constant %struct.x { i64 (i8*, i64, i64, %struct._IO_FILE*)* @fread }, align 8
+
+; Function Attrs: nounwind
+define %struct.x* @_Z3foov() #0 {
+entry:
+ ret %struct.x* @_ZL1y
+}
+
+declare i64 @fread(i8*, i64, i64, %struct._IO_FILE*) #1
+
+; CHECK: .section .data.rel.ro
+; CHECK: .quad fread
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
diff --git a/test/CodeGen/PowerPC/crsave.ll b/test/CodeGen/PowerPC/crsave.ll
index d698ab031d..f1cbc5afa8 100644
--- a/test/CodeGen/PowerPC/crsave.ll
+++ b/test/CodeGen/PowerPC/crsave.ll
@@ -13,9 +13,11 @@ entry:
ret i32 %1
}
+; PPC32: stw 31, -4(1)
+; PPC32: stwu 1, -32(1)
; PPC32: mfcr 12
-; PPC32-NEXT: stw 12, {{[0-9]+}}(31)
-; PPC32: lwz 12, {{[0-9]+}}(31)
+; PPC32-NEXT: stw 12, 24(31)
+; PPC32: lwz 12, 24(31)
; PPC32-NEXT: mtcrf 32, 12
; PPC64: mfcr 12
@@ -35,9 +37,11 @@ entry:
ret i32 %1
}
+; PPC32: stw 31, -4(1)
+; PPC32: stwu 1, -32(1)
; PPC32: mfcr 12
-; PPC32-NEXT: stw 12, {{[0-9]+}}(31)
-; PPC32: lwz 12, {{[0-9]+}}(31)
+; PPC32-NEXT: stw 12, 24(31)
+; PPC32: lwz 12, 24(31)
; PPC32-NEXT: mtcrf 32, 12
; PPC32-NEXT: mtcrf 16, 12
; PPC32-NEXT: mtcrf 8, 12
diff --git a/test/CodeGen/R600/llvm.AMDGPU.imax.ll b/test/CodeGen/R600/llvm.AMDGPU.imax.ll
new file mode 100644
index 0000000000..3e854c840f
--- /dev/null
+++ b/test/CodeGen/R600/llvm.AMDGPU.imax.ll
@@ -0,0 +1,21 @@
+;RUN: llc < %s -march=r600 -mcpu=verde | FileCheck %s
+
+;CHECK: V_MAX_I32_e32
+
+define void @main(i32 %p0, i32 %p1) #0 {
+main_body:
+ %0 = call i32 @llvm.AMDGPU.imax(i32 %p0, i32 %p1)
+ %1 = bitcast i32 %0 to float
+ call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 0, float %1, float %1, float %1, float %1)
+ ret void
+}
+
+; Function Attrs: readnone
+declare i32 @llvm.AMDGPU.imax(i32, i32) #1
+
+declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
+
+attributes #0 = { "ShaderType"="0" }
+attributes #1 = { readnone }
+
+!0 = metadata !{metadata !"const", null, i32 1}
diff --git a/test/CodeGen/R600/llvm.AMDGPU.imin.ll b/test/CodeGen/R600/llvm.AMDGPU.imin.ll
new file mode 100644
index 0000000000..e227bf8d55
--- /dev/null
+++ b/test/CodeGen/R600/llvm.AMDGPU.imin.ll
@@ -0,0 +1,21 @@
+;RUN: llc < %s -march=r600 -mcpu=verde | FileCheck %s
+
+;CHECK: V_MIN_I32_e32
+
+define void @main(i32 %p0, i32 %p1) #0 {
+main_body:
+ %0 = call i32 @llvm.AMDGPU.imin(i32 %p0, i32 %p1)
+ %1 = bitcast i32 %0 to float
+ call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 0, float %1, float %1, float %1, float %1)
+ ret void
+}
+
+; Function Attrs: readnone
+declare i32 @llvm.AMDGPU.imin(i32, i32) #1
+
+declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
+
+attributes #0 = { "ShaderType"="0" }
+attributes #1 = { readnone }
+
+!0 = metadata !{metadata !"const", null, i32 1}
diff --git a/test/CodeGen/R600/llvm.AMDGPU.trunc.ll b/test/CodeGen/R600/llvm.AMDGPU.trunc.ll
index ff22a69196..cdc03f8a41 100644
--- a/test/CodeGen/R600/llvm.AMDGPU.trunc.ll
+++ b/test/CodeGen/R600/llvm.AMDGPU.trunc.ll
@@ -1,16 +1,16 @@
-;RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s
+; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck --check-prefix=R600-CHECK %s
+; RUN: llc < %s -march=r600 -mcpu=verde | FileCheck --check-prefix=SI-CHECK %s
-;CHECK: TRUNC * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
+; R600-CHECK: @amdgpu_trunc
+; R600-CHECK: TRUNC * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
+; SI-CHECK: @amdgpu_trunc
+; SI-CHECK: V_TRUNC_F32
-define void @test() {
- %r0 = call float @llvm.R600.load.input(i32 0)
- %r1 = call float @llvm.AMDGPU.trunc( float %r0)
- call void @llvm.AMDGPU.store.output(float %r1, i32 0)
- ret void
+define void @amdgpu_trunc(float addrspace(1)* %out, float %x) {
+entry:
+ %0 = call float @llvm.AMDGPU.trunc(float %x)
+ store float %0, float addrspace(1)* %out
+ ret void
}
-declare float @llvm.R600.load.input(i32) readnone
-
-declare void @llvm.AMDGPU.store.output(float, i32)
-
declare float @llvm.AMDGPU.trunc(float ) readnone
diff --git a/test/CodeGen/R600/llvm.AMDGPU.umax.ll b/test/CodeGen/R600/llvm.AMDGPU.umax.ll
new file mode 100644
index 0000000000..7699c04c36
--- /dev/null
+++ b/test/CodeGen/R600/llvm.AMDGPU.umax.ll
@@ -0,0 +1,21 @@
+;RUN: llc < %s -march=r600 -mcpu=verde | FileCheck %s
+
+;CHECK: V_MAX_U32_e32
+
+define void @main(i32 %p0, i32 %p1) #0 {
+main_body:
+ %0 = call i32 @llvm.AMDGPU.umax(i32 %p0, i32 %p1)
+ %1 = bitcast i32 %0 to float
+ call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 0, float %1, float %1, float %1, float %1)
+ ret void
+}
+
+; Function Attrs: readnone
+declare i32 @llvm.AMDGPU.umax(i32, i32) #1
+
+declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
+
+attributes #0 = { "ShaderType"="0" }
+attributes #1 = { readnone }
+
+!0 = metadata !{metadata !"const", null, i32 1}
diff --git a/test/CodeGen/R600/llvm.AMDGPU.umin.ll b/test/CodeGen/R600/llvm.AMDGPU.umin.ll
new file mode 100644
index 0000000000..a911ad9bb3
--- /dev/null
+++ b/test/CodeGen/R600/llvm.AMDGPU.umin.ll
@@ -0,0 +1,21 @@
+;RUN: llc < %s -march=r600 -mcpu=verde | FileCheck %s
+
+;CHECK: V_MIN_U32_e32
+
+define void @main(i32 %p0, i32 %p1) #0 {
+main_body:
+ %0 = call i32 @llvm.AMDGPU.umin(i32 %p0, i32 %p1)
+ %1 = bitcast i32 %0 to float
+ call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 0, float %1, float %1, float %1, float %1)
+ ret void
+}
+
+; Function Attrs: readnone
+declare i32 @llvm.AMDGPU.umin(i32, i32) #1
+
+declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
+
+attributes #0 = { "ShaderType"="0" }
+attributes #1 = { readnone }
+
+!0 = metadata !{metadata !"const", null, i32 1}
diff --git a/test/CodeGen/R600/uitofp.ll b/test/CodeGen/R600/uitofp.ll
new file mode 100644
index 0000000000..6cf9e6a225
--- /dev/null
+++ b/test/CodeGen/R600/uitofp.ll
@@ -0,0 +1,16 @@
+;RUN: llc < %s -march=r600 -mcpu=verde | FileCheck %s
+
+;CHECK: V_CVT_F32_U32_e32
+
+define void @main(i32 %p) #0 {
+main_body:
+ %0 = uitofp i32 %p to float
+ call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 0, float %0, float %0, float %0, float %0)
+ ret void
+}
+
+declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
+
+attributes #0 = { "ShaderType"="0" }
+
+!0 = metadata !{metadata !"const", null, i32 1}
diff --git a/test/CodeGen/SPARC/64cond.ll b/test/CodeGen/SPARC/64cond.ll
index 6e66a262a4..cf1a039af5 100644
--- a/test/CodeGen/SPARC/64cond.ll
+++ b/test/CodeGen/SPARC/64cond.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -march=sparcv9 | FileCheck %s
-; Testing 64-bit conditionals.
+; RUN: llc < %s -mtriple=sparc64-pc-openbsd | FileCheck %s
+; Testing 64-bit conditionals. The sparc64 triple is an alias for sparcv9.
; CHECK: cmpri
; CHECK: subcc %i1, 1
diff --git a/test/CodeGen/SystemZ/int-sub-07.ll b/test/CodeGen/SystemZ/int-sub-07.ll
new file mode 100644
index 0000000000..9bf5ed9055
--- /dev/null
+++ b/test/CodeGen/SystemZ/int-sub-07.ll
@@ -0,0 +1,131 @@
+; Test 32-bit subtraction in which the second operand is a sign-extended
+; i16 memory value.
+;
+; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
+
+; Check the low end of the SH range.
+define i32 @f1(i32 %lhs, i16 *%src) {
+; CHECK: f1:
+; CHECK: sh %r2, 0(%r3)
+; CHECK: br %r14
+ %half = load i16 *%src
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check the high end of the aligned SH range.
+define i32 @f2(i32 %lhs, i16 *%src) {
+; CHECK: f2:
+; CHECK: sh %r2, 4094(%r3)
+; CHECK: br %r14
+ %ptr = getelementptr i16 *%src, i64 2047
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check the next halfword up, which should use SHY instead of SH.
+define i32 @f3(i32 %lhs, i16 *%src) {
+; CHECK: f3:
+; CHECK: shy %r2, 4096(%r3)
+; CHECK: br %r14
+ %ptr = getelementptr i16 *%src, i64 2048
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check the high end of the aligned SHY range.
+define i32 @f4(i32 %lhs, i16 *%src) {
+; CHECK: f4:
+; CHECK: shy %r2, 524286(%r3)
+; CHECK: br %r14
+ %ptr = getelementptr i16 *%src, i64 262143
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check the next halfword up, which needs separate address logic.
+; Other sequences besides this one would be OK.
+define i32 @f5(i32 %lhs, i16 *%src) {
+; CHECK: f5:
+; CHECK: agfi %r3, 524288
+; CHECK: sh %r2, 0(%r3)
+; CHECK: br %r14
+ %ptr = getelementptr i16 *%src, i64 262144
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check the high end of the negative aligned SHY range.
+define i32 @f6(i32 %lhs, i16 *%src) {
+; CHECK: f6:
+; CHECK: shy %r2, -2(%r3)
+; CHECK: br %r14
+ %ptr = getelementptr i16 *%src, i64 -1
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check the low end of the SHY range.
+define i32 @f7(i32 %lhs, i16 *%src) {
+; CHECK: f7:
+; CHECK: shy %r2, -524288(%r3)
+; CHECK: br %r14
+ %ptr = getelementptr i16 *%src, i64 -262144
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check the next halfword down, which needs separate address logic.
+; Other sequences besides this one would be OK.
+define i32 @f8(i32 %lhs, i16 *%src) {
+; CHECK: f8:
+; CHECK: agfi %r3, -524290
+; CHECK: sh %r2, 0(%r3)
+; CHECK: br %r14
+ %ptr = getelementptr i16 *%src, i64 -262145
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check that SH allows an index.
+define i32 @f9(i32 %lhs, i64 %src, i64 %index) {
+; CHECK: f9:
+; CHECK: sh %r2, 4094({{%r4,%r3|%r3,%r4}})
+; CHECK: br %r14
+ %sub1 = add i64 %src, %index
+ %sub2 = add i64 %sub1, 4094
+ %ptr = inttoptr i64 %sub2 to i16 *
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
+
+; Check that SHY allows an index.
+define i32 @f10(i32 %lhs, i64 %src, i64 %index) {
+; CHECK: f10:
+; CHECK: shy %r2, 4096({{%r4,%r3|%r3,%r4}})
+; CHECK: br %r14
+ %sub1 = add i64 %src, %index
+ %sub2 = add i64 %sub1, 4096
+ %ptr = inttoptr i64 %sub2 to i16 *
+ %half = load i16 *%ptr
+ %rhs = sext i16 %half to i32
+ %res = sub i32 %lhs, %rhs
+ ret i32 %res
+}
diff --git a/test/CodeGen/Thumb2/large-call.ll b/test/CodeGen/Thumb2/large-call.ll
index 61c477aa91..1b4d4625dd 100644
--- a/test/CodeGen/Thumb2/large-call.ll
+++ b/test/CodeGen/Thumb2/large-call.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -O0 -mcpu=cortex-a8 | FileCheck %s
+; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mcpu=cortex-a8 | FileCheck %s
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
target triple = "thumbv7-apple-ios0.0.0"
diff --git a/test/CodeGen/X86/x86-64-psub.ll b/test/CodeGen/X86/x86-64-psub.ll
new file mode 100644
index 0000000000..7869a80b2a
--- /dev/null
+++ b/test/CodeGen/X86/x86-64-psub.ll
@@ -0,0 +1,213 @@
+; RUN: llc -mtriple=x86_64-pc-linux -mcpu=corei7 < %s | FileCheck %s
+
+; MMX packed sub opcodes were wrongly marked as commutative.
+; This test checks that the operands of packed sub instructions are
+; never interchanged by the "Two-Address instruction pass".
+
+declare { i64, double } @getFirstParam()
+declare { i64, double } @getSecondParam()
+
+define i64 @test_psubb() {
+entry:
+ %call = tail call { i64, double } @getFirstParam()
+ %0 = extractvalue { i64, double } %call, 0
+ %call2 = tail call { i64, double } @getSecondParam()
+ %1 = extractvalue { i64, double } %call2, 0
+ %__m1.0.insert.i = insertelement <1 x i64> undef, i64 %0, i32 0
+ %__m2.0.insert.i = insertelement <1 x i64> undef, i64 %1, i32 0
+ %2 = bitcast <1 x i64> %__m1.0.insert.i to <8 x i8>
+ %3 = bitcast <8 x i8> %2 to x86_mmx
+ %4 = bitcast <1 x i64> %__m2.0.insert.i to <8 x i8>
+ %5 = bitcast <8 x i8> %4 to x86_mmx
+ %6 = tail call x86_mmx @llvm.x86.mmx.psub.b(x86_mmx %3, x86_mmx %5) nounwind
+ %7 = bitcast x86_mmx %6 to <8 x i8>
+ %8 = bitcast <8 x i8> %7 to <1 x i64>
+ %retval.0.extract.i15 = extractelement <1 x i64> %8, i32 0
+ ret i64 %retval.0.extract.i15
+}
+
+; CHECK: test_psubb:
+; CHECK: callq getFirstParam
+; CHECK: callq getSecondParam
+; CHECK: movd %rax, [[PARAM2:%[a-z0-9]+]]
+; CHECK: movq (%rsp), [[PARAM1:%[a-z0-9]+]]
+; CHECK: psubb [[PARAM2]], [[PARAM1]]
+; CHECK: ret
+
+define i64 @test_psubw() {
+entry:
+ %call = tail call { i64, double } @getFirstParam()
+ %0 = extractvalue { i64, double } %call, 0
+ %call2 = tail call { i64, double } @getSecondParam()
+ %1 = extractvalue { i64, double } %call2, 0
+ %__m1.0.insert.i = insertelement <1 x i64> undef, i64 %0, i32 0
+ %__m2.0.insert.i = insertelement <1 x i64> undef, i64 %1, i32 0
+ %2 = bitcast <1 x i64> %__m1.0.insert.i to <4 x i16>
+ %3 = bitcast <4 x i16> %2 to x86_mmx
+ %4 = bitcast <1 x i64> %__m2.0.insert.i to <4 x i16>
+ %5 = bitcast <4 x i16> %4 to x86_mmx
+ %6 = tail call x86_mmx @llvm.x86.mmx.psub.w(x86_mmx %3, x86_mmx %5) nounwind
+ %7 = bitcast x86_mmx %6 to <4 x i16>
+ %8 = bitcast <4 x i16> %7 to <1 x i64>
+ %retval.0.extract.i15 = extractelement <1 x i64> %8, i32 0
+ ret i64 %retval.0.extract.i15
+}
+
+; CHECK: test_psubw:
+; CHECK: callq getFirstParam
+; CHECK: callq getSecondParam
+; CHECK: movd %rax, [[PARAM2:%[a-z0-9]+]]
+; CHECK: movq (%rsp), [[PARAM1:%[a-z0-9]+]]
+; CHECK: psubw [[PARAM2]], [[PARAM1]]
+; CHECK: ret
+
+
+define i64 @test_psubd() {
+entry:
+ %call = tail call { i64, double } @getFirstParam()
+ %0 = extractvalue { i64, double } %call, 0
+ %call2 = tail call { i64, double } @getSecondParam()
+ %1 = extractvalue { i64, double } %call2, 0
+ %__m1.0.insert.i = insertelement <1 x i64> undef, i64 %0, i32 0
+ %__m2.0.insert.i = insertelement <1 x i64> undef, i64 %1, i32 0
+ %2 = bitcast <1 x i64> %__m1.0.insert.i to <2 x i32>
+ %3 = bitcast <2 x i32> %2 to x86_mmx
+ %4 = bitcast <1 x i64> %__m2.0.insert.i to <2 x i32>
+ %5 = bitcast <2 x i32> %4 to x86_mmx
+ %6 = tail call x86_mmx @llvm.x86.mmx.psub.d(x86_mmx %3, x86_mmx %5) nounwind
+ %7 = bitcast x86_mmx %6 to <2 x i32>
+ %8 = bitcast <2 x i32> %7 to <1 x i64>
+ %retval.0.extract.i15 = extractelement <1 x i64> %8, i32 0
+ ret i64 %retval.0.extract.i15
+}
+
+; CHECK: test_psubd:
+; CHECK: callq getFirstParam
+; CHECK: callq getSecondParam
+; CHECK: movd %rax, [[PARAM2:%[a-z0-9]+]]
+; CHECK: movq (%rsp), [[PARAM1:%[a-z0-9]+]]
+; CHECK: psubd [[PARAM2]], [[PARAM1]]
+; CHECK: ret
+
+define i64 @test_psubsb() {
+entry:
+ %call = tail call { i64, double } @getFirstParam()
+ %0 = extractvalue { i64, double } %call, 0
+ %call2 = tail call { i64, double } @getSecondParam()
+ %1 = extractvalue { i64, double } %call2, 0
+ %__m1.0.insert.i = insertelement <1 x i64> undef, i64 %0, i32 0
+ %__m2.0.insert.i = insertelement <1 x i64> undef, i64 %1, i32 0
+ %2 = bitcast <1 x i64> %__m1.0.insert.i to <8 x i8>
+ %3 = bitcast <8 x i8> %2 to x86_mmx
+ %4 = bitcast <1 x i64> %__m2.0.insert.i to <8 x i8>
+ %5 = bitcast <8 x i8> %4 to x86_mmx
+ %6 = tail call x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx %3, x86_mmx %5) nounwind
+ %7 = bitcast x86_mmx %6 to <8 x i8>
+ %8 = bitcast <8 x i8> %7 to <1 x i64>
+ %retval.0.extract.i15 = extractelement <1 x i64> %8, i32 0
+ ret i64 %retval.0.extract.i15
+}
+
+; CHECK: test_psubsb:
+; CHECK: callq getFirstParam
+; CHECK: callq getSecondParam
+; CHECK: movd %rax, [[PARAM2:%[a-z0-9]+]]
+; CHECK: movq (%rsp), [[PARAM1:%[a-z0-9]+]]
+; CHECK: psubsb [[PARAM2]], [[PARAM1]]
+; CHECK: ret
+
+define i64 @test_psubswv() {
+entry:
+ %call = tail call { i64, double } @getFirstParam()
+ %0 = extractvalue { i64, double } %call, 0
+ %call2 = tail call { i64, double } @getSecondParam()
+ %1 = extractvalue { i64, double } %call2, 0
+ %__m1.0.insert.i = insertelement <1 x i64> undef, i64 %0, i32 0
+ %__m2.0.insert.i = insertelement <1 x i64> undef, i64 %1, i32 0
+ %2 = bitcast <1 x i64> %__m1.0.insert.i to <4 x i16>
+ %3 = bitcast <4 x i16> %2 to x86_mmx
+ %4 = bitcast <1 x i64> %__m2.0.insert.i to <4 x i16>
+ %5 = bitcast <4 x i16> %4 to x86_mmx
+ %6 = tail call x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx %3, x86_mmx %5) nounwind
+ %7 = bitcast x86_mmx %6 to <4 x i16>
+ %8 = bitcast <4 x i16> %7 to <1 x i64>
+ %retval.0.extract.i15 = extractelement <1 x i64> %8, i32 0
+ ret i64 %retval.0.extract.i15
+}
+
+; CHECK: test_psubswv:
+; CHECK: callq getFirstParam
+; CHECK: callq getSecondParam
+; CHECK: movd %rax, [[PARAM2:%[a-z0-9]+]]
+; CHECK: movq (%rsp), [[PARAM1:%[a-z0-9]+]]
+; CHECK: psubsw [[PARAM2]], [[PARAM1]]
+; CHECK: ret
+
+define i64 @test_psubusbv() {
+entry:
+ %call = tail call { i64, double } @getFirstParam()
+ %0 = extractvalue { i64, double } %call, 0
+ %call2 = tail call { i64, double } @getSecondParam()
+ %1 = extractvalue { i64, double } %call2, 0
+ %__m1.0.insert.i = insertelement <1 x i64> undef, i64 %0, i32 0
+ %__m2.0.insert.i = insertelement <1 x i64> undef, i64 %1, i32 0
+ %2 = bitcast <1 x i64> %__m1.0.insert.i to <8 x i8>
+ %3 = bitcast <8 x i8> %2 to x86_mmx
+ %4 = bitcast <1 x i64> %__m2.0.insert.i to <8 x i8>
+ %5 = bitcast <8 x i8> %4 to x86_mmx
+ %6 = tail call x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx %3, x86_mmx %5) nounwind
+ %7 = bitcast x86_mmx %6 to <8 x i8>
+ %8 = bitcast <8 x i8> %7 to <1 x i64>
+ %retval.0.extract.i15 = extractelement <1 x i64> %8, i32 0
+ ret i64 %retval.0.extract.i15
+}
+
+; CHECK: test_psubusbv:
+; CHECK: callq getFirstParam
+; CHECK: callq getSecondParam
+; CHECK: movd %rax, [[PARAM2:%[a-z0-9]+]]
+; CHECK: movq (%rsp), [[PARAM1:%[a-z0-9]+]]
+; CHECK: psubusb [[PARAM2]], [[PARAM1]]
+; CHECK: ret
+
+define i64 @test_psubuswv() {
+entry:
+ %call = tail call { i64, double } @getFirstParam()
+ %0 = extractvalue { i64, double } %call, 0
+ %call2 = tail call { i64, double } @getSecondParam()
+ %1 = extractvalue { i64, double } %call2, 0
+ %__m1.0.insert.i = insertelement <1 x i64> undef, i64 %0, i32 0
+ %__m2.0.insert.i = insertelement <1 x i64> undef, i64 %1, i32 0
+ %2 = bitcast <1 x i64> %__m1.0.insert.i to <4 x i16>
+ %3 = bitcast <4 x i16> %2 to x86_mmx
+ %4 = bitcast <1 x i64> %__m2.0.insert.i to <4 x i16>
+ %5 = bitcast <4 x i16> %4 to x86_mmx
+ %6 = tail call x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx %3, x86_mmx %5) nounwind
+ %7 = bitcast x86_mmx %6 to <4 x i16>
+ %8 = bitcast <4 x i16> %7 to <1 x i64>
+ %retval.0.extract.i15 = extractelement <1 x i64> %8, i32 0
+ ret i64 %retval.0.extract.i15
+}
+
+; CHECK: test_psubuswv:
+; CHECK: callq getFirstParam
+; CHECK: callq getSecondParam
+; CHECK: movd %rax, [[PARAM2:%[a-z0-9]+]]
+; CHECK: movq (%rsp), [[PARAM1:%[a-z0-9]+]]
+; CHECK: psubusw [[PARAM2]], [[PARAM1]]
+; CHECK: ret
+
+
+declare x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx, x86_mmx) nounwind readnone
+
+declare x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx, x86_mmx) nounwind readnone
+
+declare x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx, x86_mmx) nounwind readnone
+
+declare x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx, x86_mmx) nounwind readnone
+
+declare x86_mmx @llvm.x86.mmx.psub.d(x86_mmx, x86_mmx) nounwind readnone
+
+declare x86_mmx @llvm.x86.mmx.psub.w(x86_mmx, x86_mmx) nounwind readnone
+
+declare x86_mmx @llvm.x86.mmx.psub.b(x86_mmx, x86_mmx) nounwind readnone
diff --git a/test/ExecutionEngine/MCJIT/eh.ll b/test/ExecutionEngine/MCJIT/eh.ll
index cd67dd70c5..c2135736ad 100644
--- a/test/ExecutionEngine/MCJIT/eh.ll
+++ b/test/ExecutionEngine/MCJIT/eh.ll
@@ -1,5 +1,5 @@
; RUN: %lli_mcjit %s
-; XFAIL: arm, cygwin, win32
+; XFAIL: arm, cygwin, win32, mingw
declare i8* @__cxa_allocate_exception(i64)
declare void @__cxa_throw(i8*, i8*, i8*)
declare i32 @__gxx_personality_v0(...)
diff --git a/test/FileCheck/check-dag-xfails.txt b/test/FileCheck/check-dag-xfails.txt
new file mode 100644
index 0000000000..3f4f98e348
--- /dev/null
+++ b/test/FileCheck/check-dag-xfails.txt
@@ -0,0 +1,85 @@
+; RUN: not FileCheck -check-prefix=X1 -input-file %s %s
+; RUN: not FileCheck -check-prefix=X2 -input-file %s %s
+; RUN: not FileCheck -check-prefix=X3 -input-file %s %s
+; RUN: not FileCheck -check-prefix=X4 -input-file %s %s
+; RUN: not FileCheck -check-prefix=X5 -input-file %s %s
+; RUN: not FileCheck -check-prefix=X6 -input-file %s %s
+
+__x1
+add r10, r1, r2
+add r11, r3, r4
+mul r5, r10, r12
+__x1
+
+; X1: __x1
+; X1-DAG: add [[REG1:r[0-9]+]], r1, r2
+; X1-DAG: add [[REG2:r[0-9]+]], r3, r4
+; X1: mul r5, [[REG1]], [[REG2]]
+; X1: __x1
+
+__x2
+mul r11, r3, r4
+mul r10, r1, r2
+add r5, r11, r11
+__x2
+
+; X2: __x2
+; X2-DAG: mul [[REG1:r[0-9]+]], r1, r2
+; X2-DAG: mul [[REG2:r[0-9]+]], r3, r4
+; X2: add r5, [[REG1]], [[REG2]]
+; X2: __x2
+
+__x3
+add r11, r3, r4
+add r12, r1, r2
+mul r5, r10, r11
+__x3
+
+; X3: __x3
+; X3-DAG: add [[REG1:r[0-9]+]], r1, r2
+; X3-DAG: add [[REG2:r[0-9]+]], r3, r4
+; X3-DAG: mul r5, [[REG1]], [[REG2]]
+; X3: __x3
+
+__x4
+add r11, r3, r4
+add r12, r1, r2
+not
+mul r5, r12, r11
+__x4
+
+; X4: __x4
+; X4-DAG: add [[REG1:r[0-9]+]], r1, r2
+; X4-DAG: add [[REG2:r[0-9]+]], r3, r4
+; X4-NOT: not
+; X4-DAG: mul r5, [[REG1]], [[REG2]]
+; X4: __x4
+
+__x5
+mul r5, r12, r11
+add r11, r3, r4
+add r12, r1, r2
+not
+__x5
+
+; X5: __x5
+; X5-DAG: add [[REG1:r[0-9]+]], r1, r2
+; X5-DAG: add [[REG2:r[0-9]+]], r3, r4
+; X5-NOT: not
+; X5-DAG: mul r5, [[REG1]], [[REG2]]
+; X5: __x5
+
+__x6
+add r11, r3, r4
+mul r6, r12, r11
+add r12, r1, r2
+mul r5, r12, r11
+__x6
+
+; X6: __x6
+; X6-DAG: add [[REG1:r[0-9]+]], r1, r2
+; X6-DAG: add [[REG2:r[0-9]+]], r3, r4
+; X6-NOT: not
+; X6-DAG: mul r5, [[REG1]], [[REG2]]
+; X6-DAG: mul r6, [[REG1]], [[REG2]]
+; X6: __x6
diff --git a/test/FileCheck/check-dag.txt b/test/FileCheck/check-dag.txt
new file mode 100644
index 0000000000..6325e06e5a
--- /dev/null
+++ b/test/FileCheck/check-dag.txt
@@ -0,0 +1,25 @@
+; RUN: FileCheck -input-file %s %s
+
+add r10, r1, r2
+add r11, r3, r4
+mul r5, r10, r11
+
+mul r11, r3, r4
+mul r10, r1, r2
+add r5, r10, r11
+
+add r11, r3, r4
+add r10, r1, r2
+mul r5, r10, r11
+
+; CHECK-DAG: add [[REG1:r[0-9]+]], r1, r2
+; CHECK-DAG: add [[REG2:r[0-9]+]], r3, r4
+; CHECK: mul r5, [[REG1]], [[REG2]]
+
+; CHECK-DAG: mul [[REG1:r[0-9]+]], r1, r2
+; CHECK-DAG: mul [[REG2:r[0-9]+]], r3, r4
+; CHECK: add r5, [[REG1]], [[REG2]]
+
+; CHECK-DAG: add [[REG1:r[0-9]+]], r1, r2
+; CHECK-DAG: add [[REG2:r[0-9]+]], r3, r4
+; CHECK-DAG: mul r5, [[REG1]], [[REG2]]
diff --git a/test/MC/ARM/basic-arm-instructions.s b/test/MC/ARM/basic-arm-instructions.s
index 71b5b5da09..5227bdd239 100644
--- a/test/MC/ARM/basic-arm-instructions.s
+++ b/test/MC/ARM/basic-arm-instructions.s
@@ -1062,10 +1062,18 @@ Lforward:
@ MRC/MRC2
@------------------------------------------------------------------------------
mrc p14, #0, r1, c1, c2, #4
+ mrc p15, #7, apsr_nzcv, c15, c6, #6
+ mrc p15, #7, pc, c15, c6, #6
mrc2 p14, #0, r1, c1, c2, #4
-
-@ CHECK: mrc p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xee]
-@ CHECK: mrc2 p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xfe]
+ mrc2 p10, #7, apsr_nzcv, c15, c0, #1
+ mrc2 p10, #7, pc, c15, c0, #1
+
+@ CHECK: mrc p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xee]
+@ CHECK: mrc p15, #7, apsr_nzcv, c15, c6, #6 @ encoding: [0xd6,0xff,0xff,0xee]
+@ CHECK: mrc p15, #7, pc, c15, c6, #6 @ encoding: [0xd6,0xff,0xff,0xee]
+@ CHECK: mrc2 p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xfe]
+@ CHECK: mrc2 p10, #7, apsr_nzcv, c15, c0, #1 @ encoding: [0x30,0xfa,0xff,0xfe]
+@ CHECK: mrc2 p10, #7, pc, c15, c0, #1 @ encoding: [0x30,0xfa,0xff,0xfe]
@------------------------------------------------------------------------------
@ MRRC/MRRC2
diff --git a/test/MC/ARM/data-in-code.ll b/test/MC/ARM/data-in-code.ll
index e3325b6bf6..9fccf2e9f8 100644
--- a/test/MC/ARM/data-in-code.ll
+++ b/test/MC/ARM/data-in-code.ll
@@ -1,7 +1,9 @@
-;; RUN: llc -O0 -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \
+;; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort \
+;; RUN: -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \
;; RUN: llvm-readobj -t | FileCheck -check-prefix=ARM %s
-;; RUN: llc -O0 -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \
+;; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort \
+;; RUN: -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \
;; RUN: llvm-readobj -t | FileCheck -check-prefix=TMB %s
;; Ensure that if a jump table is generated that it has Mapping Symbols
@@ -119,7 +121,7 @@ exit:
;; ARM: Symbol {
;; ARM: Name: $a
-;; ARM-NEXT: Value: 0xAC
+;; ARM-NEXT: Value: 0x{{[0-9A-F]+}}
;; ARM-NEXT: Size: 0
;; ARM-NEXT: Binding: Local
;; ARM-NEXT: Type: None
@@ -135,7 +137,7 @@ exit:
;; ARM: Symbol {
;; ARM: Name: $d
-;; ARM-NEXT: Value: 0x30
+;; ARM-NEXT: Value: 0x{{[0-9A-F]+}}
;; ARM-NEXT: Size: 0
;; ARM-NEXT: Binding: Local
;; ARM-NEXT: Type: None
@@ -146,7 +148,7 @@ exit:
;; TMB: Symbol {
;; TMB: Name: $d.2
-;; TMB-NEXT: Value: 0x16
+;; TMB-NEXT: Value: 0x{{[0-9A-F]+}}
;; TMB-NEXT: Size: 0
;; TMB-NEXT: Binding: Local
;; TMB-NEXT: Type: None
@@ -164,7 +166,7 @@ exit:
;; TMB: Symbol {
;; TMB: Name: $t
-;; TMB-NEXT: Value: 0x36
+;; TMB-NEXT: Value: 0x{{[0-9A-F]+}}
;; TMB-NEXT: Size: 0
;; TMB-NEXT: Binding: Local
;; TMB-NEXT: Type: None
diff --git a/test/MC/Disassembler/ARM/basic-arm-instructions.txt b/test/MC/Disassembler/ARM/basic-arm-instructions.txt
index 9f63e1e914..c92322e8d7 100644
--- a/test/MC/Disassembler/ARM/basic-arm-instructions.txt
+++ b/test/MC/Disassembler/ARM/basic-arm-instructions.txt
@@ -757,10 +757,14 @@
# MRC/MRC2
#------------------------------------------------------------------------------
# CHECK: mrc p14, #0, r1, c1, c2, #4
+# CHECK: mrc p15, #7, apsr_nzcv, c15, c6, #6
# CHECK: mrc2 p14, #0, r1, c1, c2, #4
+# CHECK: mrc2 p9, #7, apsr_nzcv, c15, c0, #1
0x92 0x1e 0x11 0xee
+0xd6 0xff 0xff 0xee
0x92 0x1e 0x11 0xfe
+0x30 0xf9 0xff 0xfe
#------------------------------------------------------------------------------
# MRRC/MRRC2
diff --git a/test/MC/Disassembler/SystemZ/insns-pcrel.txt b/test/MC/Disassembler/SystemZ/insns-pcrel.txt
new file mode 100644
index 0000000000..1f2d8d0094
--- /dev/null
+++ b/test/MC/Disassembler/SystemZ/insns-pcrel.txt
@@ -0,0 +1,933 @@
+# Test instructions that have PC-relative operands. There is no attempt
+# to keep the instructions in alphabetical order, since adding new instructions
+# in the middle would mean updating all later offsets.
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu | FileCheck %s
+
+# 0x00000000:
+# CHECK: brasl %r0, 0x0
+0xc0 0x05 0x00 0x00 0x00 0x00
+
+# 0x00000006:
+# CHECK: brasl %r14, 0x6
+0xc0 0xe5 0x00 0x00 0x00 0x00
+
+# 0x0000000c:
+# CHECK: brasl %r15, 0xc
+0xc0 0xf5 0x00 0x00 0x00 0x00
+
+# 0x00000012:
+# CHECK: brasl %r0, 0x10
+0xc0 0x05 0xff 0xff 0xff 0xff
+
+# 0x00000018:
+# CHECK: brasl %r14, 0xffffffff00000018
+0xc0 0xe5 0x80 0x00 0x00 0x00
+
+# 0x0000001e:
+# CHECK: brasl %r15, 0x10000001c
+0xc0 0xf5 0x7f 0xff 0xff 0xff
+
+# 0x00000024:
+# CHECK: bras %r0, 0x24
+0xa7 0x05 0x00 0x00
+
+# 0x00000028:
+# CHECK: bras %r14, 0x28
+0xa7 0xe5 0x00 0x00
+
+# 0x0000002c:
+# CHECK: bras %r15, 0x2c
+0xa7 0xf5 0x00 0x00
+
+# 0x00000030:
+# CHECK: bras %r0, 0x2e
+0xa7 0x05 0xff 0xff
+
+# 0x00000034:
+# CHECK: bras %r14, 0xffffffffffff0034
+0xa7 0xe5 0x80 0x00
+
+# 0x00000038:
+# CHECK: bras %r15, 0x10036
+0xa7 0xf5 0x7f 0xff
+
+# 0x0000003c:
+# CHECK: brcl 0, 0x3c
+0xc0 0x04 0x00 0x00 0x00 0x00
+
+# 0x00000042:
+# CHECK: jgo 0x42
+0xc0 0x14 0x00 0x00 0x00 0x00
+
+# 0x00000048:
+# CHECK: jgh 0x48
+0xc0 0x24 0x00 0x00 0x00 0x00
+
+# 0x0000004e:
+# CHECK: jgnle 0x4e
+0xc0 0x34 0x00 0x00 0x00 0x00
+
+# 0x00000054:
+# CHECK: jgl 0x54
+0xc0 0x44 0x00 0x00 0x00 0x00
+
+# 0x0000005a:
+# CHECK: jgnhe 0x5a
+0xc0 0x54 0x00 0x00 0x00 0x00
+
+# 0x00000060:
+# CHECK: jglh 0x60
+0xc0 0x64 0x00 0x00 0x00 0x00
+
+# 0x00000066:
+# CHECK: jgne 0x66
+0xc0 0x74 0x00 0x00 0x00 0x00
+
+# 0x0000006c:
+# CHECK: jge 0x6c
+0xc0 0x84 0x00 0x00 0x00 0x00
+
+# 0x00000072:
+# CHECK: jgnlh 0x72
+0xc0 0x94 0x00 0x00 0x00 0x00
+
+# 0x00000078:
+# CHECK: jghe 0x78
+0xc0 0xa4 0x00 0x00 0x00 0x00
+
+# 0x0000007e:
+# CHECK: jgnl 0x7e
+0xc0 0xb4 0x00 0x00 0x00 0x00
+
+# 0x00000084:
+# CHECK: jgle 0x84
+0xc0 0xc4 0x00 0x00 0x00 0x00
+
+# 0x0000008a:
+# CHECK: jgnh 0x8a
+0xc0 0xd4 0x00 0x00 0x00 0x00
+
+# 0x00000090:
+# CHECK: jgno 0x90
+0xc0 0xe4 0x00 0x00 0x00 0x00
+
+# 0x00000096:
+# CHECK: jg 0x96
+0xc0 0xf4 0x00 0x00 0x00 0x00
+
+# 0x0000009c:
+# CHECK: brcl 0, 0x9a
+0xc0 0x04 0xff 0xff 0xff 0xff
+
+# 0x000000a2:
+# CHECK: brcl 0, 0xffffffff000000a2
+0xc0 0x04 0x80 0x00 0x00 0x00
+
+# 0x000000a8:
+# CHECK: brcl 0, 0x1000000a6
+0xc0 0x04 0x7f 0xff 0xff 0xff
+
+# 0x000000ae:
+# CHECK: jg 0xac
+0xc0 0xf4 0xff 0xff 0xff 0xff
+
+# 0x000000b4:
+# CHECK: jg 0xffffffff000000b4
+0xc0 0xf4 0x80 0x00 0x00 0x00
+
+# 0x000000ba:
+# CHECK: jg 0x1000000b8
+0xc0 0xf4 0x7f 0xff 0xff 0xff
+
+# 0x000000c0:
+# CHECK: brc 0, 0xc0
+0xa7 0x04 0x00 0x00
+
+# 0x000000c4:
+# CHECK: jo 0xc4
+0xa7 0x14 0x00 0x00
+
+# 0x000000c8:
+# CHECK: jh 0xc8
+0xa7 0x24 0x00 0x00
+
+# 0x000000cc:
+# CHECK: jnle 0xcc
+0xa7 0x34 0x00 0x00
+
+# 0x000000d0:
+# CHECK: jl 0xd0
+0xa7 0x44 0x00 0x00
+
+# 0x000000d4:
+# CHECK: jnhe 0xd4
+0xa7 0x54 0x00 0x00
+
+# 0x000000d8:
+# CHECK: jlh 0xd8
+0xa7 0x64 0x00 0x00
+
+# 0x000000dc:
+# CHECK: jne 0xdc
+0xa7 0x74 0x00 0x00
+
+# 0x000000e0:
+# CHECK: je 0xe0
+0xa7 0x84 0x00 0x00
+
+# 0x000000e4:
+# CHECK: jnlh 0xe4
+0xa7 0x94 0x00 0x00
+
+# 0x000000e8:
+# CHECK: jhe 0xe8
+0xa7 0xa4 0x00 0x00
+
+# 0x000000ec:
+# CHECK: jnl 0xec
+0xa7 0xb4 0x00 0x00
+
+# 0x000000f0:
+# CHECK: jle 0xf0
+0xa7 0xc4 0x00 0x00
+
+# 0x000000f4:
+# CHECK: jnh 0xf4
+0xa7 0xd4 0x00 0x00
+
+# 0x000000f8:
+# CHECK: jno 0xf8
+0xa7 0xe4 0x00 0x00
+
+# 0x000000fc:
+# CHECK: j 0xfc
+0xa7 0xf4 0x00 0x00
+
+# 0x00000100:
+# CHECK: brc 0, 0xfe
+0xa7 0x04 0xff 0xff
+
+# 0x00000104:
+# CHECK: brc 0, 0xffffffffffff0104
+0xa7 0x04 0x80 0x00
+
+# 0x00000108:
+# CHECK: brc 0, 0x10106
+0xa7 0x04 0x7f 0xff
+
+# 0x0000010c:
+# CHECK: j 0x10a
+0xa7 0xf4 0xff 0xff
+
+# 0x00000110:
+# CHECK: j 0xffffffffffff0110
+0xa7 0xf4 0x80 0x00
+
+# 0x00000114:
+# CHECK: j 0x10112
+0xa7 0xf4 0x7f 0xff
+
+# 0x00000118:
+# CHECK: cgfrl %r0, 0x118
+0xc6 0x0c 0x00 0x00 0x00 0x00
+
+# 0x0000011e:
+# CHECK: cgfrl %r15, 0x11e
+0xc6 0xfc 0x00 0x00 0x00 0x00
+
+# 0x00000124:
+# CHECK: cgfrl %r0, 0x122
+0xc6 0x0c 0xff 0xff 0xff 0xff
+
+# 0x0000012a:
+# CHECK: cgfrl %r15, 0x128
+0xc6 0xfc 0xff 0xff 0xff 0xff
+
+# 0x00000130:
+# CHECK: cgfrl %r0, 0xffffffff00000130
+0xc6 0x0c 0x80 0x00 0x00 0x00
+
+# 0x00000136:
+# CHECK: cgfrl %r15, 0xffffffff00000136
+0xc6 0xfc 0x80 0x00 0x00 0x00
+
+# 0x0000013c:
+# CHECK: cgfrl %r0, 0x10000013a
+0xc6 0x0c 0x7f 0xff 0xff 0xff
+
+# 0x00000142:
+# CHECK: cgfrl %r15, 0x100000140
+0xc6 0xfc 0x7f 0xff 0xff 0xff
+
+# 0x00000148:
+# CHECK: cghrl %r0, 0x148
+0xc6 0x04 0x00 0x00 0x00 0x00
+
+# 0x0000014e:
+# CHECK: cghrl %r15, 0x14e
+0xc6 0xf4 0x00 0x00 0x00 0x00
+
+# 0x00000154:
+# CHECK: cghrl %r0, 0x152
+0xc6 0x04 0xff 0xff 0xff 0xff
+
+# 0x0000015a:
+# CHECK: cghrl %r15, 0x158
+0xc6 0xf4 0xff 0xff 0xff 0xff
+
+# 0x00000160:
+# CHECK: cghrl %r0, 0xffffffff00000160
+0xc6 0x04 0x80 0x00 0x00 0x00
+
+# 0x00000166:
+# CHECK: cghrl %r15, 0xffffffff00000166
+0xc6 0xf4 0x80 0x00 0x00 0x00
+
+# 0x0000016c:
+# CHECK: cghrl %r0, 0x10000016a
+0xc6 0x04 0x7f 0xff 0xff 0xff
+
+# 0x00000172:
+# CHECK: cghrl %r15, 0x100000170
+0xc6 0xf4 0x7f 0xff 0xff 0xff
+
+# 0x00000178:
+# CHECK: cgrl %r0, 0x178
+0xc6 0x08 0x00 0x00 0x00 0x00
+
+# 0x0000017e:
+# CHECK: cgrl %r15, 0x17e
+0xc6 0xf8 0x00 0x00 0x00 0x00
+
+# 0x00000184:
+# CHECK: cgrl %r0, 0x182
+0xc6 0x08 0xff 0xff 0xff 0xff
+
+# 0x0000018a:
+# CHECK: cgrl %r15, 0x188
+0xc6 0xf8 0xff 0xff 0xff 0xff
+
+# 0x00000190:
+# CHECK: cgrl %r0, 0xffffffff00000190
+0xc6 0x08 0x80 0x00 0x00 0x00
+
+# 0x00000196:
+# CHECK: cgrl %r15, 0xffffffff00000196
+0xc6 0xf8 0x80 0x00 0x00 0x00
+
+# 0x0000019c:
+# CHECK: cgrl %r0, 0x10000019a
+0xc6 0x08 0x7f 0xff 0xff 0xff
+
+# 0x000001a2:
+# CHECK: cgrl %r15, 0x1000001a0
+0xc6 0xf8 0x7f 0xff 0xff 0xff
+
+# 0x000001a8:
+# CHECK: chrl %r0, 0x1a8
+0xc6 0x05 0x00 0x00 0x00 0x00
+
+# 0x000001ae:
+# CHECK: chrl %r15, 0x1ae
+0xc6 0xf5 0x00 0x00 0x00 0x00
+
+# 0x000001b4:
+# CHECK: chrl %r0, 0x1b2
+0xc6 0x05 0xff 0xff 0xff 0xff
+
+# 0x000001ba:
+# CHECK: chrl %r15, 0x1b8
+0xc6 0xf5 0xff 0xff 0xff 0xff
+
+# 0x000001c0:
+# CHECK: chrl %r0, 0xffffffff000001c0
+0xc6 0x05 0x80 0x00 0x00 0x00
+
+# 0x000001c6:
+# CHECK: chrl %r15, 0xffffffff000001c6
+0xc6 0xf5 0x80 0x00 0x00 0x00
+
+# 0x000001cc:
+# CHECK: chrl %r0, 0x1000001ca
+0xc6 0x05 0x7f 0xff 0xff 0xff
+
+# 0x000001d2:
+# CHECK: chrl %r15, 0x1000001d0
+0xc6 0xf5 0x7f 0xff 0xff 0xff
+
+# 0x000001d8:
+# CHECK: clgfrl %r0, 0x1d8
+0xc6 0x0e 0x00 0x00 0x00 0x00
+
+# 0x000001de:
+# CHECK: clgfrl %r15, 0x1de
+0xc6 0xfe 0x00 0x00 0x00 0x00
+
+# 0x000001e4:
+# CHECK: clgfrl %r0, 0x1e2
+0xc6 0x0e 0xff 0xff 0xff 0xff
+
+# 0x000001ea:
+# CHECK: clgfrl %r15, 0x1e8
+0xc6 0xfe 0xff 0xff 0xff 0xff
+
+# 0x000001f0:
+# CHECK: clgfrl %r0, 0xffffffff000001f0
+0xc6 0x0e 0x80 0x00 0x00 0x00
+
+# 0x000001f6:
+# CHECK: clgfrl %r15, 0xffffffff000001f6
+0xc6 0xfe 0x80 0x00 0x00 0x00
+
+# 0x000001fc:
+# CHECK: clgfrl %r0, 0x1000001fa
+0xc6 0x0e 0x7f 0xff 0xff 0xff
+
+# 0x00000202:
+# CHECK: clgfrl %r15, 0x100000200
+0xc6 0xfe 0x7f 0xff 0xff 0xff
+
+# 0x00000208:
+# CHECK: clghrl %r0, 0x208
+0xc6 0x06 0x00 0x00 0x00 0x00
+
+# 0x0000020e:
+# CHECK: clghrl %r15, 0x20e
+0xc6 0xf6 0x00 0x00 0x00 0x00
+
+# 0x00000214:
+# CHECK: clghrl %r0, 0x212
+0xc6 0x06 0xff 0xff 0xff 0xff
+
+# 0x0000021a:
+# CHECK: clghrl %r15, 0x218
+0xc6 0xf6 0xff 0xff 0xff 0xff
+
+# 0x00000220:
+# CHECK: clghrl %r0, 0xffffffff00000220
+0xc6 0x06 0x80 0x00 0x00 0x00
+
+# 0x00000226:
+# CHECK: clghrl %r15, 0xffffffff00000226
+0xc6 0xf6 0x80 0x00 0x00 0x00
+
+# 0x0000022c:
+# CHECK: clghrl %r0, 0x10000022a
+0xc6 0x06 0x7f 0xff 0xff 0xff
+
+# 0x00000232:
+# CHECK: clghrl %r15, 0x100000230
+0xc6 0xf6 0x7f 0xff 0xff 0xff
+
+# 0x00000238:
+# CHECK: clgrl %r0, 0x238
+0xc6 0x0a 0x00 0x00 0x00 0x00
+
+# 0x0000023e:
+# CHECK: clgrl %r15, 0x23e
+0xc6 0xfa 0x00 0x00 0x00 0x00
+
+# 0x00000244:
+# CHECK: clgrl %r0, 0x242
+0xc6 0x0a 0xff 0xff 0xff 0xff
+
+# 0x0000024a:
+# CHECK: clgrl %r15, 0x248
+0xc6 0xfa 0xff 0xff 0xff 0xff
+
+# 0x00000250:
+# CHECK: clgrl %r0, 0xffffffff00000250
+0xc6 0x0a 0x80 0x00 0x00 0x00
+
+# 0x00000256:
+# CHECK: clgrl %r15, 0xffffffff00000256
+0xc6 0xfa 0x80 0x00 0x00 0x00
+
+# 0x0000025c:
+# CHECK: clgrl %r0, 0x10000025a
+0xc6 0x0a 0x7f 0xff 0xff 0xff
+
+# 0x00000262:
+# CHECK: clgrl %r15, 0x100000260
+0xc6 0xfa 0x7f 0xff 0xff 0xff
+
+# 0x00000268:
+# CHECK: clhrl %r0, 0x268
+0xc6 0x07 0x00 0x00 0x00 0x00
+
+# 0x0000026e:
+# CHECK: clhrl %r15, 0x26e
+0xc6 0xf7 0x00 0x00 0x00 0x00
+
+# 0x00000274:
+# CHECK: clhrl %r0, 0x272
+0xc6 0x07 0xff 0xff 0xff 0xff
+
+# 0x0000027a:
+# CHECK: clhrl %r15, 0x278
+0xc6 0xf7 0xff 0xff 0xff 0xff
+
+# 0x00000280:
+# CHECK: clhrl %r0, 0xffffffff00000280
+0xc6 0x07 0x80 0x00 0x00 0x00
+
+# 0x00000286:
+# CHECK: clhrl %r15, 0xffffffff00000286
+0xc6 0xf7 0x80 0x00 0x00 0x00
+
+# 0x0000028c:
+# CHECK: clhrl %r0, 0x10000028a
+0xc6 0x07 0x7f 0xff 0xff 0xff
+
+# 0x00000292:
+# CHECK: clhrl %r15, 0x100000290
+0xc6 0xf7 0x7f 0xff 0xff 0xff
+
+# 0x00000298:
+# CHECK: clrl %r0, 0x298
+0xc6 0x0f 0x00 0x00 0x00 0x00
+
+# 0x0000029e:
+# CHECK: clrl %r15, 0x29e
+0xc6 0xff 0x00 0x00 0x00 0x00
+
+# 0x000002a4:
+# CHECK: clrl %r0, 0x2a2
+0xc6 0x0f 0xff 0xff 0xff 0xff
+
+# 0x000002aa:
+# CHECK: clrl %r15, 0x2a8
+0xc6 0xff 0xff 0xff 0xff 0xff
+
+# 0x000002b0:
+# CHECK: clrl %r0, 0xffffffff000002b0
+0xc6 0x0f 0x80 0x00 0x00 0x00
+
+# 0x000002b6:
+# CHECK: clrl %r15, 0xffffffff000002b6
+0xc6 0xff 0x80 0x00 0x00 0x00
+
+# 0x000002bc:
+# CHECK: clrl %r0, 0x1000002ba
+0xc6 0x0f 0x7f 0xff 0xff 0xff
+
+# 0x000002c2:
+# CHECK: clrl %r15, 0x1000002c0
+0xc6 0xff 0x7f 0xff 0xff 0xff
+
+# 0x000002c8:
+# CHECK: crl %r0, 0x2c8
+0xc6 0x0d 0x00 0x00 0x00 0x00
+
+# 0x000002ce:
+# CHECK: crl %r15, 0x2ce
+0xc6 0xfd 0x00 0x00 0x00 0x00
+
+# 0x000002d4:
+# CHECK: crl %r0, 0x2d2
+0xc6 0x0d 0xff 0xff 0xff 0xff
+
+# 0x000002da:
+# CHECK: crl %r15, 0x2d8
+0xc6 0xfd 0xff 0xff 0xff 0xff
+
+# 0x000002e0:
+# CHECK: crl %r0, 0xffffffff000002e0
+0xc6 0x0d 0x80 0x00 0x00 0x00
+
+# 0x000002e6:
+# CHECK: crl %r15, 0xffffffff000002e6
+0xc6 0xfd 0x80 0x00 0x00 0x00
+
+# 0x000002ec:
+# CHECK: crl %r0, 0x1000002ea
+0xc6 0x0d 0x7f 0xff 0xff 0xff
+
+# 0x000002f2:
+# CHECK: crl %r15, 0x1000002f0
+0xc6 0xfd 0x7f 0xff 0xff 0xff
+
+# 0x000002f8:
+# CHECK: larl %r0, 0x2f8
+0xc0 0x00 0x00 0x00 0x00 0x00
+
+# 0x000002fe:
+# CHECK: larl %r15, 0x2fe
+0xc0 0xf0 0x00 0x00 0x00 0x00
+
+# 0x00000304:
+# CHECK: larl %r0, 0x302
+0xc0 0x00 0xff 0xff 0xff 0xff
+
+# 0x0000030a:
+# CHECK: larl %r15, 0x308
+0xc0 0xf0 0xff 0xff 0xff 0xff
+
+# 0x00000310:
+# CHECK: larl %r0, 0xffffffff00000310
+0xc0 0x00 0x80 0x00 0x00 0x00
+
+# 0x00000316:
+# CHECK: larl %r15, 0xffffffff00000316
+0xc0 0xf0 0x80 0x00 0x00 0x00
+
+# 0x0000031c:
+# CHECK: larl %r0, 0x10000031a
+0xc0 0x00 0x7f 0xff 0xff 0xff
+
+# 0x00000322:
+# CHECK: larl %r15, 0x100000320
+0xc0 0xf0 0x7f 0xff 0xff 0xff
+
+# 0x00000328:
+# CHECK: lgfrl %r0, 0x328
+0xc4 0x0c 0x00 0x00 0x00 0x00
+
+# 0x0000032e:
+# CHECK: lgfrl %r15, 0x32e
+0xc4 0xfc 0x00 0x00 0x00 0x00
+
+# 0x00000334:
+# CHECK: lgfrl %r0, 0x332
+0xc4 0x0c 0xff 0xff 0xff 0xff
+
+# 0x0000033a:
+# CHECK: lgfrl %r15, 0x338
+0xc4 0xfc 0xff 0xff 0xff 0xff
+
+# 0x00000340:
+# CHECK: lgfrl %r0, 0xffffffff00000340
+0xc4 0x0c 0x80 0x00 0x00 0x00
+
+# 0x00000346:
+# CHECK: lgfrl %r15, 0xffffffff00000346
+0xc4 0xfc 0x80 0x00 0x00 0x00
+
+# 0x0000034c:
+# CHECK: lgfrl %r0, 0x10000034a
+0xc4 0x0c 0x7f 0xff 0xff 0xff
+
+# 0x00000352:
+# CHECK: lgfrl %r15, 0x100000350
+0xc4 0xfc 0x7f 0xff 0xff 0xff
+
+# 0x00000358:
+# CHECK: lghrl %r0, 0x358
+0xc4 0x04 0x00 0x00 0x00 0x00
+
+# 0x0000035e:
+# CHECK: lghrl %r15, 0x35e
+0xc4 0xf4 0x00 0x00 0x00 0x00
+
+# 0x00000364:
+# CHECK: lghrl %r0, 0x362
+0xc4 0x04 0xff 0xff 0xff 0xff
+
+# 0x0000036a:
+# CHECK: lghrl %r15, 0x368
+0xc4 0xf4 0xff 0xff 0xff 0xff
+
+# 0x00000370:
+# CHECK: lghrl %r0, 0xffffffff00000370
+0xc4 0x04 0x80 0x00 0x00 0x00
+
+# 0x00000376:
+# CHECK: lghrl %r15, 0xffffffff00000376
+0xc4 0xf4 0x80 0x00 0x00 0x00
+
+# 0x0000037c:
+# CHECK: lghrl %r0, 0x10000037a
+0xc4 0x04 0x7f 0xff 0xff 0xff
+
+# 0x00000382:
+# CHECK: lghrl %r15, 0x100000380
+0xc4 0xf4 0x7f 0xff 0xff 0xff
+
+# 0x00000388:
+# CHECK: lgrl %r0, 0x388
+0xc4 0x08 0x00 0x00 0x00 0x00
+
+# 0x0000038e:
+# CHECK: lgrl %r15, 0x38e
+0xc4 0xf8 0x00 0x00 0x00 0x00
+
+# 0x00000394:
+# CHECK: lgrl %r0, 0x392
+0xc4 0x08 0xff 0xff 0xff 0xff
+
+# 0x0000039a:
+# CHECK: lgrl %r15, 0x398
+0xc4 0xf8 0xff 0xff 0xff 0xff
+
+# 0x000003a0:
+# CHECK: lgrl %r0, 0xffffffff000003a0
+0xc4 0x08 0x80 0x00 0x00 0x00
+
+# 0x000003a6:
+# CHECK: lgrl %r15, 0xffffffff000003a6
+0xc4 0xf8 0x80 0x00 0x00 0x00
+
+# 0x000003ac:
+# CHECK: lgrl %r0, 0x1000003aa
+0xc4 0x08 0x7f 0xff 0xff 0xff
+
+# 0x000003b2:
+# CHECK: lgrl %r15, 0x1000003b0
+0xc4 0xf8 0x7f 0xff 0xff 0xff
+
+# 0x000003b8:
+# CHECK: lhrl %r0, 0x3b8
+0xc4 0x05 0x00 0x00 0x00 0x00
+
+# 0x000003be:
+# CHECK: lhrl %r15, 0x3be
+0xc4 0xf5 0x00 0x00 0x00 0x00
+
+# 0x000003c4:
+# CHECK: lhrl %r0, 0x3c2
+0xc4 0x05 0xff 0xff 0xff 0xff
+
+# 0x000003ca:
+# CHECK: lhrl %r15, 0x3c8
+0xc4 0xf5 0xff 0xff 0xff 0xff
+
+# 0x000003d0:
+# CHECK: lhrl %r0, 0xffffffff000003d0
+0xc4 0x05 0x80 0x00 0x00 0x00
+
+# 0x000003d6:
+# CHECK: lhrl %r15, 0xffffffff000003d6
+0xc4 0xf5 0x80 0x00 0x00 0x00
+
+# 0x000003dc:
+# CHECK: lhrl %r0, 0x1000003da
+0xc4 0x05 0x7f 0xff 0xff 0xff
+
+# 0x000003e2:
+# CHECK: lhrl %r15, 0x1000003e0
+0xc4 0xf5 0x7f 0xff 0xff 0xff
+
+# 0x000003e8:
+# CHECK: llgfrl %r0, 0x3e8
+0xc4 0x0e 0x00 0x00 0x00 0x00
+
+# 0x000003ee:
+# CHECK: llgfrl %r15, 0x3ee
+0xc4 0xfe 0x00 0x00 0x00 0x00
+
+# 0x000003f4:
+# CHECK: llgfrl %r0, 0x3f2
+0xc4 0x0e 0xff 0xff 0xff 0xff
+
+# 0x000003fa:
+# CHECK: llgfrl %r15, 0x3f8
+0xc4 0xfe 0xff 0xff 0xff 0xff
+
+# 0x00000400:
+# CHECK: llgfrl %r0, 0xffffffff00000400
+0xc4 0x0e 0x80 0x00 0x00 0x00
+
+# 0x00000406:
+# CHECK: llgfrl %r15, 0xffffffff00000406
+0xc4 0xfe 0x80 0x00 0x00 0x00
+
+# 0x0000040c:
+# CHECK: llgfrl %r0, 0x10000040a
+0xc4 0x0e 0x7f 0xff 0xff 0xff
+
+# 0x00000412:
+# CHECK: llgfrl %r15, 0x100000410
+0xc4 0xfe 0x7f 0xff 0xff 0xff
+
+# 0x00000418:
+# CHECK: llghrl %r0, 0x418
+0xc4 0x06 0x00 0x00 0x00 0x00
+
+# 0x0000041e:
+# CHECK: llghrl %r15, 0x41e
+0xc4 0xf6 0x00 0x00 0x00 0x00
+
+# 0x00000424:
+# CHECK: llghrl %r0, 0x422
+0xc4 0x06 0xff 0xff 0xff 0xff
+
+# 0x0000042a:
+# CHECK: llghrl %r15, 0x428
+0xc4 0xf6 0xff 0xff 0xff 0xff
+
+# 0x00000430:
+# CHECK: llghrl %r0, 0xffffffff00000430
+0xc4 0x06 0x80 0x00 0x00 0x00
+
+# 0x00000436:
+# CHECK: llghrl %r15, 0xffffffff00000436
+0xc4 0xf6 0x80 0x00 0x00 0x00
+
+# 0x0000043c:
+# CHECK: llghrl %r0, 0x10000043a
+0xc4 0x06 0x7f 0xff 0xff 0xff
+
+# 0x00000442:
+# CHECK: llghrl %r15, 0x100000440
+0xc4 0xf6 0x7f 0xff 0xff 0xff
+
+# 0x00000448:
+# CHECK: llhrl %r0, 0x448
+0xc4 0x02 0x00 0x00 0x00 0x00
+
+# 0x0000044e:
+# CHECK: llhrl %r15, 0x44e
+0xc4 0xf2 0x00 0x00 0x00 0x00
+
+# 0x00000454:
+# CHECK: llhrl %r0, 0x452
+0xc4 0x02 0xff 0xff 0xff 0xff
+
+# 0x0000045a:
+# CHECK: llhrl %r15, 0x458
+0xc4 0xf2 0xff 0xff 0xff 0xff
+
+# 0x00000460:
+# CHECK: llhrl %r0, 0xffffffff00000460
+0xc4 0x02 0x80 0x00 0x00 0x00
+
+# 0x00000466:
+# CHECK: llhrl %r15, 0xffffffff00000466
+0xc4 0xf2 0x80 0x00 0x00 0x00
+
+# 0x0000046c:
+# CHECK: llhrl %r0, 0x10000046a
+0xc4 0x02 0x7f 0xff 0xff 0xff
+
+# 0x00000472:
+# CHECK: llhrl %r15, 0x100000470
+0xc4 0xf2 0x7f 0xff 0xff 0xff
+
+# 0x00000478:
+# CHECK: lrl %r0, 0x478
+0xc4 0x0d 0x00 0x00 0x00 0x00
+
+# 0x0000047e:
+# CHECK: lrl %r15, 0x47e
+0xc4 0xfd 0x00 0x00 0x00 0x00
+
+# 0x00000484:
+# CHECK: lrl %r0, 0x482
+0xc4 0x0d 0xff 0xff 0xff 0xff
+
+# 0x0000048a:
+# CHECK: lrl %r15, 0x488
+0xc4 0xfd 0xff 0xff 0xff 0xff
+
+# 0x00000490:
+# CHECK: lrl %r0, 0xffffffff00000490
+0xc4 0x0d 0x80 0x00 0x00 0x00
+
+# 0x00000496:
+# CHECK: lrl %r15, 0xffffffff00000496
+0xc4 0xfd 0x80 0x00 0x00 0x00
+
+# 0x0000049c:
+# CHECK: lrl %r0, 0x10000049a
+0xc4 0x0d 0x7f 0xff 0xff 0xff
+
+# 0x000004a2:
+# CHECK: lrl %r15, 0x1000004a0
+0xc4 0xfd 0x7f 0xff 0xff 0xff
+
+# 0x000004a8:
+# CHECK: stgrl %r0, 0x4a8
+0xc4 0x0b 0x00 0x00 0x00 0x00
+
+# 0x000004ae:
+# CHECK: stgrl %r15, 0x4ae
+0xc4 0xfb 0x00 0x00 0x00 0x00
+
+# 0x000004b4:
+# CHECK: stgrl %r0, 0x4b2
+0xc4 0x0b 0xff 0xff 0xff 0xff
+
+# 0x000004ba:
+# CHECK: stgrl %r15, 0x4b8
+0xc4 0xfb 0xff 0xff 0xff 0xff
+
+# 0x000004c0:
+# CHECK: stgrl %r0, 0xffffffff000004c0
+0xc4 0x0b 0x80 0x00 0x00 0x00
+
+# 0x000004c6:
+# CHECK: stgrl %r15, 0xffffffff000004c6
+0xc4 0xfb 0x80 0x00 0x00 0x00
+
+# 0x000004cc:
+# CHECK: stgrl %r0, 0x1000004ca
+0xc4 0x0b 0x7f 0xff 0xff 0xff
+
+# 0x000004d2:
+# CHECK: stgrl %r15, 0x1000004d0
+0xc4 0xfb 0x7f 0xff 0xff 0xff
+
+# 0x000004d8:
+# CHECK: sthrl %r0, 0x4d8
+0xc4 0x07 0x00 0x00 0x00 0x00
+
+# 0x000004de:
+# CHECK: sthrl %r15, 0x4de
+0xc4 0xf7 0x00 0x00 0x00 0x00
+
+# 0x000004e4:
+# CHECK: sthrl %r0, 0x4e2
+0xc4 0x07 0xff 0xff 0xff 0xff
+
+# 0x000004ea:
+# CHECK: sthrl %r15, 0x4e8
+0xc4 0xf7 0xff 0xff 0xff 0xff
+
+# 0x000004f0:
+# CHECK: sthrl %r0, 0xffffffff000004f0
+0xc4 0x07 0x80 0x00 0x00 0x00
+
+# 0x000004f6:
+# CHECK: sthrl %r15, 0xffffffff000004f6
+0xc4 0xf7 0x80 0x00 0x00 0x00
+
+# 0x000004fc:
+# CHECK: sthrl %r0, 0x1000004fa
+0xc4 0x07 0x7f 0xff 0xff 0xff
+
+# 0x00000502:
+# CHECK: sthrl %r15, 0x100000500
+0xc4 0xf7 0x7f 0xff 0xff 0xff
+
+# 0x00000508:
+# CHECK: strl %r0, 0x508
+0xc4 0x0f 0x00 0x00 0x00 0x00
+
+# 0x0000050e:
+# CHECK: strl %r15, 0x50e
+0xc4 0xff 0x00 0x00 0x00 0x00
+
+# 0x00000514:
+# CHECK: strl %r0, 0x512
+0xc4 0x0f 0xff 0xff 0xff 0xff
+
+# 0x0000051a:
+# CHECK: strl %r15, 0x518
+0xc4 0xff 0xff 0xff 0xff 0xff
+
+# 0x00000520:
+# CHECK: strl %r0, 0xffffffff00000520
+0xc4 0x0f 0x80 0x00 0x00 0x00
+
+# 0x00000526:
+# CHECK: strl %r15, 0xffffffff00000526
+0xc4 0xff 0x80 0x00 0x00 0x00
+
+# 0x0000052c:
+# CHECK: strl %r0, 0x10000052a
+0xc4 0x0f 0x7f 0xff 0xff 0xff
+
+# 0x00000532:
+# CHECK: strl %r15, 0x100000530
+0xc4 0xff 0x7f 0xff 0xff 0xff
+
diff --git a/test/MC/Disassembler/SystemZ/insns.txt b/test/MC/Disassembler/SystemZ/insns.txt
new file mode 100644
index 0000000000..56236f7037
--- /dev/null
+++ b/test/MC/Disassembler/SystemZ/insns.txt
@@ -0,0 +1,6071 @@
+# Test instructions that don't have PC-relative operands.
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu | FileCheck %s
+
+# CHECK: adbr %f0, %f0
+0xb3 0x1a 0x00 0x00
+
+# CHECK: adbr %f0, %f15
+0xb3 0x1a 0x00 0x0f
+
+# CHECK: adbr %f7, %f8
+0xb3 0x1a 0x00 0x78
+
+# CHECK: adbr %f15, %f0
+0xb3 0x1a 0x00 0xf0
+
+# CHECK: adb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x1a
+
+# CHECK: adb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x1a
+
+# CHECK: adb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x1a
+
+# CHECK: adb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x1a
+
+# CHECK: adb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x1a
+
+# CHECK: adb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x1a
+
+# CHECK: adb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x1a
+
+# CHECK: aebr %f0, %f0
+0xb3 0x0a 0x00 0x00
+
+# CHECK: aebr %f0, %f15
+0xb3 0x0a 0x00 0x0f
+
+# CHECK: aebr %f7, %f8
+0xb3 0x0a 0x00 0x78
+
+# CHECK: aebr %f15, %f0
+0xb3 0x0a 0x00 0xf0
+
+# CHECK: aeb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x0a
+
+# CHECK: aeb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x0a
+
+# CHECK: aeb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x0a
+
+# CHECK: aeb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x0a
+
+# CHECK: aeb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x0a
+
+# CHECK: aeb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x0a
+
+# CHECK: aeb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x0a
+
+# CHECK: afi %r0, -2147483648
+0xc2 0x09 0x80 0x00 0x00 0x00
+
+# CHECK: afi %r0, -1
+0xc2 0x09 0xff 0xff 0xff 0xff
+
+# CHECK: afi %r0, 0
+0xc2 0x09 0x00 0x00 0x00 0x00
+
+# CHECK: afi %r0, 1
+0xc2 0x09 0x00 0x00 0x00 0x01
+
+# CHECK: afi %r0, 2147483647
+0xc2 0x09 0x7f 0xff 0xff 0xff
+
+# CHECK: afi %r15, 0
+0xc2 0xf9 0x00 0x00 0x00 0x00
+
+# CHECK: agfi %r0, -2147483648
+0xc2 0x08 0x80 0x00 0x00 0x00
+
+# CHECK: agfi %r0, -1
+0xc2 0x08 0xff 0xff 0xff 0xff
+
+# CHECK: agfi %r0, 0
+0xc2 0x08 0x00 0x00 0x00 0x00
+
+# CHECK: agfi %r0, 1
+0xc2 0x08 0x00 0x00 0x00 0x01
+
+# CHECK: agfi %r0, 2147483647
+0xc2 0x08 0x7f 0xff 0xff 0xff
+
+# CHECK: agfi %r15, 0
+0xc2 0xf8 0x00 0x00 0x00 0x00
+
+# CHECK: agfr %r0, %r0
+0xb9 0x18 0x00 0x00
+
+# CHECK: agfr %r0, %r15
+0xb9 0x18 0x00 0x0f
+
+# CHECK: agfr %r15, %r0
+0xb9 0x18 0x00 0xf0
+
+# CHECK: agfr %r7, %r8
+0xb9 0x18 0x00 0x78
+
+# CHECK: agf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x18
+
+# CHECK: agf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x18
+
+# CHECK: agf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x18
+
+# CHECK: agf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x18
+
+# CHECK: agf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x18
+
+# CHECK: agf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x18
+
+# CHECK: agf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x18
+
+# CHECK: agf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x18
+
+# CHECK: agf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x18
+
+# CHECK: agf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x18
+
+# CHECK: aghi %r0, -32768
+0xa7 0x0b 0x80 0x00
+
+# CHECK: aghi %r0, -1
+0xa7 0x0b 0xff 0xff
+
+# CHECK: aghi %r0, 0
+0xa7 0x0b 0x00 0x00
+
+# CHECK: aghi %r0, 1
+0xa7 0x0b 0x00 0x01
+
+# CHECK: aghi %r0, 32767
+0xa7 0x0b 0x7f 0xff
+
+# CHECK: aghi %r15, 0
+0xa7 0xfb 0x00 0x00
+
+# CHECK: agr %r0, %r0
+0xb9 0x08 0x00 0x00
+
+# CHECK: agr %r0, %r15
+0xb9 0x08 0x00 0x0f
+
+# CHECK: agr %r15, %r0
+0xb9 0x08 0x00 0xf0
+
+# CHECK: agr %r7, %r8
+0xb9 0x08 0x00 0x78
+
+# CHECK: agsi -524288, 0
+0xeb 0x00 0x00 0x00 0x80 0x7a
+
+# CHECK: agsi -1, 0
+0xeb 0x00 0x0f 0xff 0xff 0x7a
+
+# CHECK: agsi 0, 0
+0xeb 0x00 0x00 0x00 0x00 0x7a
+
+# CHECK: agsi 1, 0
+0xeb 0x00 0x00 0x01 0x00 0x7a
+
+# CHECK: agsi 524287, 0
+0xeb 0x00 0x0f 0xff 0x7f 0x7a
+
+# CHECK: agsi 0, -128
+0xeb 0x80 0x00 0x00 0x00 0x7a
+
+# CHECK: agsi 0, -1
+0xeb 0xff 0x00 0x00 0x00 0x7a
+
+# CHECK: agsi 0, 1
+0xeb 0x01 0x00 0x00 0x00 0x7a
+
+# CHECK: agsi 0, 127
+0xeb 0x7f 0x00 0x00 0x00 0x7a
+
+# CHECK: agsi 0(%r1), 42
+0xeb 0x2a 0x10 0x00 0x00 0x7a
+
+# CHECK: agsi 0(%r15), 42
+0xeb 0x2a 0xf0 0x00 0x00 0x7a
+
+# CHECK: agsi 524287(%r1), 42
+0xeb 0x2a 0x1f 0xff 0x7f 0x7a
+
+# CHECK: agsi 524287(%r15), 42
+0xeb 0x2a 0xff 0xff 0x7f 0x7a
+
+# CHECK: ag %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x08
+
+# CHECK: ag %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x08
+
+# CHECK: ag %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x08
+
+# CHECK: ag %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x08
+
+# CHECK: ag %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x08
+
+# CHECK: ag %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x08
+
+# CHECK: ag %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x08
+
+# CHECK: ag %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x08
+
+# CHECK: ag %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x08
+
+# CHECK: ag %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x08
+
+# CHECK: ahi %r0, -32768
+0xa7 0x0a 0x80 0x00
+
+# CHECK: ahi %r0, -1
+0xa7 0x0a 0xff 0xff
+
+# CHECK: ahi %r0, 0
+0xa7 0x0a 0x00 0x00
+
+# CHECK: ahi %r0, 1
+0xa7 0x0a 0x00 0x01
+
+# CHECK: ahi %r0, 32767
+0xa7 0x0a 0x7f 0xff
+
+# CHECK: ahi %r15, 0
+0xa7 0xfa 0x00 0x00
+
+# CHECK: ah %r0, 0
+0x4a 0x00 0x00 0x00
+
+# CHECK: ah %r0, 4095
+0x4a 0x00 0x0f 0xff
+
+# CHECK: ah %r0, 0(%r1)
+0x4a 0x00 0x10 0x00
+
+# CHECK: ah %r0, 0(%r15)
+0x4a 0x00 0xf0 0x00
+
+# CHECK: ah %r0, 4095(%r1,%r15)
+0x4a 0x01 0xff 0xff
+
+# CHECK: ah %r0, 4095(%r15,%r1)
+0x4a 0x0f 0x1f 0xff
+
+# CHECK: ah %r15, 0
+0x4a 0xf0 0x00 0x00
+
+# CHECK: ahy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x7a
+
+# CHECK: ahy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x7a
+
+# CHECK: ahy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x7a
+
+# CHECK: ahy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x7a
+
+# CHECK: ahy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x7a
+
+# CHECK: ahy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x7a
+
+# CHECK: ahy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x7a
+
+# CHECK: ahy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x7a
+
+# CHECK: ahy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x7a
+
+# CHECK: ahy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x7a
+
+# CHECK: alcgr %r0, %r0
+0xb9 0x88 0x00 0x00
+
+# CHECK: alcgr %r0, %r15
+0xb9 0x88 0x00 0x0f
+
+# CHECK: alcgr %r15, %r0
+0xb9 0x88 0x00 0xf0
+
+# CHECK: alcgr %r7, %r8
+0xb9 0x88 0x00 0x78
+
+# CHECK: alcg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x88
+
+# CHECK: alcg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x88
+
+# CHECK: alcg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x88
+
+# CHECK: alcg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x88
+
+# CHECK: alcg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x88
+
+# CHECK: alcg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x88
+
+# CHECK: alcg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x88
+
+# CHECK: alcg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x88
+
+# CHECK: alcg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x88
+
+# CHECK: alcg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x88
+
+# CHECK: alcr %r0, %r0
+0xb9 0x98 0x00 0x00
+
+# CHECK: alcr %r0, %r15
+0xb9 0x98 0x00 0x0f
+
+# CHECK: alcr %r15, %r0
+0xb9 0x98 0x00 0xf0
+
+# CHECK: alcr %r7, %r8
+0xb9 0x98 0x00 0x78
+
+# CHECK: alc %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x98
+
+# CHECK: alc %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x98
+
+# CHECK: alc %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x98
+
+# CHECK: alc %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x98
+
+# CHECK: alc %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x98
+
+# CHECK: alc %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x98
+
+# CHECK: alc %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x98
+
+# CHECK: alc %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x98
+
+# CHECK: alc %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x98
+
+# CHECK: alc %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x98
+
+# CHECK: alfi %r0, 0
+0xc2 0x0b 0x00 0x00 0x00 0x00
+
+# CHECK: alfi %r0, 4294967295
+0xc2 0x0b 0xff 0xff 0xff 0xff
+
+# CHECK: alfi %r15, 0
+0xc2 0xfb 0x00 0x00 0x00 0x00
+
+# CHECK: algfi %r0, 0
+0xc2 0x0a 0x00 0x00 0x00 0x00
+
+# CHECK: algfi %r0, 4294967295
+0xc2 0x0a 0xff 0xff 0xff 0xff
+
+# CHECK: algfi %r15, 0
+0xc2 0xfa 0x00 0x00 0x00 0x00
+
+# CHECK: algfr %r0, %r0
+0xb9 0x1a 0x00 0x00
+
+# CHECK: algfr %r0, %r15
+0xb9 0x1a 0x00 0x0f
+
+# CHECK: algfr %r15, %r0
+0xb9 0x1a 0x00 0xf0
+
+# CHECK: algfr %r7, %r8
+0xb9 0x1a 0x00 0x78
+
+# CHECK: algf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x1a
+
+# CHECK: algf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x1a
+
+# CHECK: algf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x1a
+
+# CHECK: algf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x1a
+
+# CHECK: algf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x1a
+
+# CHECK: algf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x1a
+
+# CHECK: algf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x1a
+
+# CHECK: algf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x1a
+
+# CHECK: algf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x1a
+
+# CHECK: algf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x1a
+
+# CHECK: algr %r0, %r0
+0xb9 0x0a 0x00 0x00
+
+# CHECK: algr %r0, %r15
+0xb9 0x0a 0x00 0x0f
+
+# CHECK: algr %r15, %r0
+0xb9 0x0a 0x00 0xf0
+
+# CHECK: algr %r7, %r8
+0xb9 0x0a 0x00 0x78
+
+# CHECK: alg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x0a
+
+# CHECK: alg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x0a
+
+# CHECK: alg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x0a
+
+# CHECK: alg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x0a
+
+# CHECK: alg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x0a
+
+# CHECK: alg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x0a
+
+# CHECK: alg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x0a
+
+# CHECK: alg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x0a
+
+# CHECK: alg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x0a
+
+# CHECK: alg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x0a
+
+# CHECK: alr %r0, %r0
+0x1e 0x00
+
+# CHECK: alr %r0, %r15
+0x1e 0x0f
+
+# CHECK: alr %r15, %r0
+0x1e 0xf0
+
+# CHECK: alr %r7, %r8
+0x1e 0x78
+
+# CHECK: al %r0, 0
+0x5e 0x00 0x00 0x00
+
+# CHECK: al %r0, 4095
+0x5e 0x00 0x0f 0xff
+
+# CHECK: al %r0, 0(%r1)
+0x5e 0x00 0x10 0x00
+
+# CHECK: al %r0, 0(%r15)
+0x5e 0x00 0xf0 0x00
+
+# CHECK: al %r0, 4095(%r1,%r15)
+0x5e 0x01 0xff 0xff
+
+# CHECK: al %r0, 4095(%r15,%r1)
+0x5e 0x0f 0x1f 0xff
+
+# CHECK: al %r15, 0
+0x5e 0xf0 0x00 0x00
+
+# CHECK: aly %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x5e
+
+# CHECK: aly %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x5e
+
+# CHECK: aly %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x5e
+
+# CHECK: aly %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x5e
+
+# CHECK: aly %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x5e
+
+# CHECK: aly %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x5e
+
+# CHECK: aly %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x5e
+
+# CHECK: aly %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x5e
+
+# CHECK: aly %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x5e
+
+# CHECK: aly %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x5e
+
+# CHECK: ar %r0, %r0
+0x1a 0x00
+
+# CHECK: ar %r0, %r15
+0x1a 0x0f
+
+# CHECK: ar %r15, %r0
+0x1a 0xf0
+
+# CHECK: ar %r7, %r8
+0x1a 0x78
+
+# CHECK: asi -524288, 0
+0xeb 0x00 0x00 0x00 0x80 0x6a
+
+# CHECK: asi -1, 0
+0xeb 0x00 0x0f 0xff 0xff 0x6a
+
+# CHECK: asi 0, 0
+0xeb 0x00 0x00 0x00 0x00 0x6a
+
+# CHECK: asi 1, 0
+0xeb 0x00 0x00 0x01 0x00 0x6a
+
+# CHECK: asi 524287, 0
+0xeb 0x00 0x0f 0xff 0x7f 0x6a
+
+# CHECK: asi 0, -128
+0xeb 0x80 0x00 0x00 0x00 0x6a
+
+# CHECK: asi 0, -1
+0xeb 0xff 0x00 0x00 0x00 0x6a
+
+# CHECK: asi 0, 1
+0xeb 0x01 0x00 0x00 0x00 0x6a
+
+# CHECK: asi 0, 127
+0xeb 0x7f 0x00 0x00 0x00 0x6a
+
+# CHECK: asi 0(%r1), 42
+0xeb 0x2a 0x10 0x00 0x00 0x6a
+
+# CHECK: asi 0(%r15), 42
+0xeb 0x2a 0xf0 0x00 0x00 0x6a
+
+# CHECK: asi 524287(%r1), 42
+0xeb 0x2a 0x1f 0xff 0x7f 0x6a
+
+# CHECK: asi 524287(%r15), 42
+0xeb 0x2a 0xff 0xff 0x7f 0x6a
+
+# CHECK: a %r0, 0
+0x5a 0x00 0x00 0x00
+
+# CHECK: a %r0, 4095
+0x5a 0x00 0x0f 0xff
+
+# CHECK: a %r0, 0(%r1)
+0x5a 0x00 0x10 0x00
+
+# CHECK: a %r0, 0(%r15)
+0x5a 0x00 0xf0 0x00
+
+# CHECK: a %r0, 4095(%r1,%r15)
+0x5a 0x01 0xff 0xff
+
+# CHECK: a %r0, 4095(%r15,%r1)
+0x5a 0x0f 0x1f 0xff
+
+# CHECK: a %r15, 0
+0x5a 0xf0 0x00 0x00
+
+# CHECK: axbr %f0, %f0
+0xb3 0x4a 0x00 0x00
+
+# CHECK: axbr %f0, %f13
+0xb3 0x4a 0x00 0x0d
+
+# CHECK: axbr %f8, %f8
+0xb3 0x4a 0x00 0x88
+
+# CHECK: axbr %f13, %f0
+0xb3 0x4a 0x00 0xd0
+
+# CHECK: ay %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x5a
+
+# CHECK: ay %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x5a
+
+# CHECK: ay %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x5a
+
+# CHECK: ay %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x5a
+
+# CHECK: ay %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x5a
+
+# CHECK: ay %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x5a
+
+# CHECK: ay %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x5a
+
+# CHECK: ay %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x5a
+
+# CHECK: ay %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x5a
+
+# CHECK: ay %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x5a
+
+# CHECK: basr %r0, %r1
+0x0d 0x01
+
+# CHECK: basr %r0, %r15
+0x0d 0x0f
+
+# CHECK: basr %r14, %r9
+0x0d 0xe9
+
+# CHECK: basr %r15, %r1
+0x0d 0xf1
+
+# CHECK: br %r1
+0x07 0xf1
+
+# CHECK: br %r14
+0x07 0xfe
+
+# CHECK: br %r15
+0x07 0xff
+
+# CHECK: cdbr %f0, %f0
+0xb3 0x19 0x00 0x00
+
+# CHECK: cdbr %f0, %f15
+0xb3 0x19 0x00 0x0f
+
+# CHECK: cdbr %f7, %f8
+0xb3 0x19 0x00 0x78
+
+# CHECK: cdbr %f15, %f0
+0xb3 0x19 0x00 0xf0
+
+# CHECK: cdb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x19
+
+# CHECK: cdb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x19
+
+# CHECK: cdb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x19
+
+# CHECK: cdb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x19
+
+# CHECK: cdb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x19
+
+# CHECK: cdb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x19
+
+# CHECK: cdb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x19
+
+# CHECK: cdfbr %f0, %r0
+0xb3 0x95 0x00 0x00
+
+# CHECK: cdfbr %f0, %r15
+0xb3 0x95 0x00 0x0f
+
+# CHECK: cdfbr %f15, %r0
+0xb3 0x95 0x00 0xf0
+
+# CHECK: cdfbr %f7, %r8
+0xb3 0x95 0x00 0x78
+
+# CHECK: cdfbr %f15, %r15
+0xb3 0x95 0x00 0xff
+
+# CHECK: cdgbr %f0, %r0
+0xb3 0xa5 0x00 0x00
+
+# CHECK: cdgbr %f0, %r15
+0xb3 0xa5 0x00 0x0f
+
+# CHECK: cdgbr %f15, %r0
+0xb3 0xa5 0x00 0xf0
+
+# CHECK: cdgbr %f7, %r8
+0xb3 0xa5 0x00 0x78
+
+# CHECK: cdgbr %f15, %r15
+0xb3 0xa5 0x00 0xff
+
+# CHECK: cebr %f0, %f0
+0xb3 0x09 0x00 0x00
+
+# CHECK: cebr %f0, %f15
+0xb3 0x09 0x00 0x0f
+
+# CHECK: cebr %f7, %f8
+0xb3 0x09 0x00 0x78
+
+# CHECK: cebr %f15, %f0
+0xb3 0x09 0x00 0xf0
+
+# CHECK: ceb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x09
+
+# CHECK: ceb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x09
+
+# CHECK: ceb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x09
+
+# CHECK: ceb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x09
+
+# CHECK: ceb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x09
+
+# CHECK: ceb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x09
+
+# CHECK: ceb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x09
+
+# CHECK: cefbr %f0, %r0
+0xb3 0x94 0x00 0x00
+
+# CHECK: cefbr %f0, %r15
+0xb3 0x94 0x00 0x0f
+
+# CHECK: cefbr %f15, %r0
+0xb3 0x94 0x00 0xf0
+
+# CHECK: cefbr %f7, %r8
+0xb3 0x94 0x00 0x78
+
+# CHECK: cefbr %f15, %r15
+0xb3 0x94 0x00 0xff
+
+# CHECK: cegbr %f0, %r0
+0xb3 0xa4 0x00 0x00
+
+# CHECK: cegbr %f0, %r15
+0xb3 0xa4 0x00 0x0f
+
+# CHECK: cegbr %f15, %r0
+0xb3 0xa4 0x00 0xf0
+
+# CHECK: cegbr %f7, %r8
+0xb3 0xa4 0x00 0x78
+
+# CHECK: cegbr %f15, %r15
+0xb3 0xa4 0x00 0xff
+
+# CHECK: cfdbr %r0, 0, %f0
+0xb3 0x99 0x00 0x00
+
+# CHECK: cfdbr %r0, 0, %f15
+0xb3 0x99 0x00 0x0f
+
+# CHECK: cfdbr %r0, 15, %f0
+0xb3 0x99 0xf0 0x00
+
+# CHECK: cfdbr %r4, 5, %f6
+0xb3 0x99 0x50 0x46
+
+# CHECK: cfdbr %r15, 0, %f0
+0xb3 0x99 0x00 0xf0
+
+# CHECK: cfebr %r0, 0, %f0
+0xb3 0x98 0x00 0x00
+
+# CHECK: cfebr %r0, 0, %f15
+0xb3 0x98 0x00 0x0f
+
+# CHECK: cfebr %r0, 15, %f0
+0xb3 0x98 0xf0 0x00
+
+# CHECK: cfebr %r4, 5, %f6
+0xb3 0x98 0x50 0x46
+
+# CHECK: cfebr %r15, 0, %f0
+0xb3 0x98 0x00 0xf0
+
+# CHECK: cfi %r0, -2147483648
+0xc2 0x0d 0x80 0x00 0x00 0x00
+
+# CHECK: cfi %r0, -1
+0xc2 0x0d 0xff 0xff 0xff 0xff
+
+# CHECK: cfi %r0, 0
+0xc2 0x0d 0x00 0x00 0x00 0x00
+
+# CHECK: cfi %r0, 1
+0xc2 0x0d 0x00 0x00 0x00 0x01
+
+# CHECK: cfi %r0, 2147483647
+0xc2 0x0d 0x7f 0xff 0xff 0xff
+
+# CHECK: cfi %r15, 0
+0xc2 0xfd 0x00 0x00 0x00 0x00
+
+# CHECK: cfxbr %r0, 0, %f0
+0xb3 0x9a 0x00 0x00
+
+# CHECK: cfxbr %r0, 0, %f13
+0xb3 0x9a 0x00 0x0d
+
+# CHECK: cfxbr %r0, 15, %f0
+0xb3 0x9a 0xf0 0x00
+
+# CHECK: cfxbr %r4, 5, %f8
+0xb3 0x9a 0x50 0x48
+
+# CHECK: cfxbr %r15, 0, %f0
+0xb3 0x9a 0x00 0xf0
+
+# CHECK: cgdbr %r0, 0, %f0
+0xb3 0xa9 0x00 0x00
+
+# CHECK: cgdbr %r0, 0, %f15
+0xb3 0xa9 0x00 0x0f
+
+# CHECK: cgdbr %r0, 15, %f0
+0xb3 0xa9 0xf0 0x00
+
+# CHECK: cgdbr %r4, 5, %f6
+0xb3 0xa9 0x50 0x46
+
+# CHECK: cgdbr %r15, 0, %f0
+0xb3 0xa9 0x00 0xf0
+
+# CHECK: cgebr %r0, 0, %f0
+0xb3 0xa8 0x00 0x00
+
+# CHECK: cgebr %r0, 0, %f15
+0xb3 0xa8 0x00 0x0f
+
+# CHECK: cgebr %r0, 15, %f0
+0xb3 0xa8 0xf0 0x00
+
+# CHECK: cgebr %r4, 5, %f6
+0xb3 0xa8 0x50 0x46
+
+# CHECK: cgebr %r15, 0, %f0
+0xb3 0xa8 0x00 0xf0
+
+# CHECK: cgfi %r0, -2147483648
+0xc2 0x0c 0x80 0x00 0x00 0x00
+
+# CHECK: cgfi %r0, -1
+0xc2 0x0c 0xff 0xff 0xff 0xff
+
+# CHECK: cgfi %r0, 0
+0xc2 0x0c 0x00 0x00 0x00 0x00
+
+# CHECK: cgfi %r0, 1
+0xc2 0x0c 0x00 0x00 0x00 0x01
+
+# CHECK: cgfi %r0, 2147483647
+0xc2 0x0c 0x7f 0xff 0xff 0xff
+
+# CHECK: cgfi %r15, 0
+0xc2 0xfc 0x00 0x00 0x00 0x00
+
+# CHECK: cgfr %r0, %r0
+0xb9 0x30 0x00 0x00
+
+# CHECK: cgfr %r0, %r15
+0xb9 0x30 0x00 0x0f
+
+# CHECK: cgfr %r15, %r0
+0xb9 0x30 0x00 0xf0
+
+# CHECK: cgfr %r7, %r8
+0xb9 0x30 0x00 0x78
+
+# CHECK: cgf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x30
+
+# CHECK: cgf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x30
+
+# CHECK: cgf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x30
+
+# CHECK: cgf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x30
+
+# CHECK: cgf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x30
+
+# CHECK: cgf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x30
+
+# CHECK: cgf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x30
+
+# CHECK: cgf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x30
+
+# CHECK: cgf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x30
+
+# CHECK: cgf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x30
+
+# CHECK: cghi %r0, -32768
+0xa7 0x0f 0x80 0x00
+
+# CHECK: cghi %r0, -1
+0xa7 0x0f 0xff 0xff
+
+# CHECK: cghi %r0, 0
+0xa7 0x0f 0x00 0x00
+
+# CHECK: cghi %r0, 1
+0xa7 0x0f 0x00 0x01
+
+# CHECK: cghi %r0, 32767
+0xa7 0x0f 0x7f 0xff
+
+# CHECK: cghi %r15, 0
+0xa7 0xff 0x00 0x00
+
+# CHECK: cghsi 0, 0
+0xe5 0x58 0x00 0x00 0x00 0x00
+
+# CHECK: cghsi 4095, 0
+0xe5 0x58 0x0f 0xff 0x00 0x00
+
+# CHECK: cghsi 0, -32768
+0xe5 0x58 0x00 0x00 0x80 0x00
+
+# CHECK: cghsi 0, -1
+0xe5 0x58 0x00 0x00 0xff 0xff
+
+# CHECK: cghsi 0, 0
+0xe5 0x58 0x00 0x00 0x00 0x00
+
+# CHECK: cghsi 0, 1
+0xe5 0x58 0x00 0x00 0x00 0x01
+
+# CHECK: cghsi 0, 32767
+0xe5 0x58 0x00 0x00 0x7f 0xff
+
+# CHECK: cghsi 0(%r1), 42
+0xe5 0x58 0x10 0x00 0x00 0x2a
+
+# CHECK: cghsi 0(%r15), 42
+0xe5 0x58 0xf0 0x00 0x00 0x2a
+
+# CHECK: cghsi 4095(%r1), 42
+0xe5 0x58 0x1f 0xff 0x00 0x2a
+
+# CHECK: cghsi 4095(%r15), 42
+0xe5 0x58 0xff 0xff 0x00 0x2a
+
+# CHECK: cgh %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x34
+
+# CHECK: cgh %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x34
+
+# CHECK: cgh %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x34
+
+# CHECK: cgh %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x34
+
+# CHECK: cgh %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x34
+
+# CHECK: cgh %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x34
+
+# CHECK: cgh %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x34
+
+# CHECK: cgh %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x34
+
+# CHECK: cgh %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x34
+
+# CHECK: cgh %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x34
+
+# CHECK: cgr %r0, %r0
+0xb9 0x20 0x00 0x00
+
+# CHECK: cgr %r0, %r15
+0xb9 0x20 0x00 0x0f
+
+# CHECK: cgr %r15, %r0
+0xb9 0x20 0x00 0xf0
+
+# CHECK: cgr %r7, %r8
+0xb9 0x20 0x00 0x78
+
+# CHECK: cg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x20
+
+# CHECK: cg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x20
+
+# CHECK: cg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x20
+
+# CHECK: cg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x20
+
+# CHECK: cg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x20
+
+# CHECK: cg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x20
+
+# CHECK: cg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x20
+
+# CHECK: cg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x20
+
+# CHECK: cg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x20
+
+# CHECK: cg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x20
+
+# CHECK: cgxbr %r0, 0, %f0
+0xb3 0xaa 0x00 0x00
+
+# CHECK: cgxbr %r0, 0, %f13
+0xb3 0xaa 0x00 0x0d
+
+# CHECK: cgxbr %r0, 15, %f0
+0xb3 0xaa 0xf0 0x00
+
+# CHECK: cgxbr %r4, 5, %f8
+0xb3 0xaa 0x50 0x48
+
+# CHECK: cgxbr %r15, 0, %f0
+0xb3 0xaa 0x00 0xf0
+
+# CHECK: chhsi 0, 0
+0xe5 0x54 0x00 0x00 0x00 0x00
+
+# CHECK: chhsi 4095, 0
+0xe5 0x54 0x0f 0xff 0x00 0x00
+
+# CHECK: chhsi 0, -32768
+0xe5 0x54 0x00 0x00 0x80 0x00
+
+# CHECK: chhsi 0, -1
+0xe5 0x54 0x00 0x00 0xff 0xff
+
+# CHECK: chhsi 0, 0
+0xe5 0x54 0x00 0x00 0x00 0x00
+
+# CHECK: chhsi 0, 1
+0xe5 0x54 0x00 0x00 0x00 0x01
+
+# CHECK: chhsi 0, 32767
+0xe5 0x54 0x00 0x00 0x7f 0xff
+
+# CHECK: chhsi 0(%r1), 42
+0xe5 0x54 0x10 0x00 0x00 0x2a
+
+# CHECK: chhsi 0(%r15), 42
+0xe5 0x54 0xf0 0x00 0x00 0x2a
+
+# CHECK: chhsi 4095(%r1), 42
+0xe5 0x54 0x1f 0xff 0x00 0x2a
+
+# CHECK: chhsi 4095(%r15), 42
+0xe5 0x54 0xff 0xff 0x00 0x2a
+
+# CHECK: chi %r0, -32768
+0xa7 0x0e 0x80 0x00
+
+# CHECK: chi %r0, -1
+0xa7 0x0e 0xff 0xff
+
+# CHECK: chi %r0, 0
+0xa7 0x0e 0x00 0x00
+
+# CHECK: chi %r0, 1
+0xa7 0x0e 0x00 0x01
+
+# CHECK: chi %r0, 32767
+0xa7 0x0e 0x7f 0xff
+
+# CHECK: chi %r15, 0
+0xa7 0xfe 0x00 0x00
+
+# CHECK: chsi 0, 0
+0xe5 0x5c 0x00 0x00 0x00 0x00
+
+# CHECK: chsi 4095, 0
+0xe5 0x5c 0x0f 0xff 0x00 0x00
+
+# CHECK: chsi 0, -32768
+0xe5 0x5c 0x00 0x00 0x80 0x00
+
+# CHECK: chsi 0, -1
+0xe5 0x5c 0x00 0x00 0xff 0xff
+
+# CHECK: chsi 0, 0
+0xe5 0x5c 0x00 0x00 0x00 0x00
+
+# CHECK: chsi 0, 1
+0xe5 0x5c 0x00 0x00 0x00 0x01
+
+# CHECK: chsi 0, 32767
+0xe5 0x5c 0x00 0x00 0x7f 0xff
+
+# CHECK: chsi 0(%r1), 42
+0xe5 0x5c 0x10 0x00 0x00 0x2a
+
+# CHECK: chsi 0(%r15), 42
+0xe5 0x5c 0xf0 0x00 0x00 0x2a
+
+# CHECK: chsi 4095(%r1), 42
+0xe5 0x5c 0x1f 0xff 0x00 0x2a
+
+# CHECK: chsi 4095(%r15), 42
+0xe5 0x5c 0xff 0xff 0x00 0x2a
+
+# CHECK: ch %r0, 0
+0x49 0x00 0x00 0x00
+
+# CHECK: ch %r0, 4095
+0x49 0x00 0x0f 0xff
+
+# CHECK: ch %r0, 0(%r1)
+0x49 0x00 0x10 0x00
+
+# CHECK: ch %r0, 0(%r15)
+0x49 0x00 0xf0 0x00
+
+# CHECK: ch %r0, 4095(%r1,%r15)
+0x49 0x01 0xff 0xff
+
+# CHECK: ch %r0, 4095(%r15,%r1)
+0x49 0x0f 0x1f 0xff
+
+# CHECK: ch %r15, 0
+0x49 0xf0 0x00 0x00
+
+# CHECK: chy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x79
+
+# CHECK: chy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x79
+
+# CHECK: chy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x79
+
+# CHECK: chy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x79
+
+# CHECK: chy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x79
+
+# CHECK: chy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x79
+
+# CHECK: chy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x79
+
+# CHECK: chy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x79
+
+# CHECK: chy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x79
+
+# CHECK: chy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x79
+
+# CHECK: clfhsi 0, 0
+0xe5 0x5d 0x00 0x00 0x00 0x00
+
+# CHECK: clfhsi 4095, 0
+0xe5 0x5d 0x0f 0xff 0x00 0x00
+
+# CHECK: clfhsi 0, 65535
+0xe5 0x5d 0x00 0x00 0xff 0xff
+
+# CHECK: clfhsi 0(%r1), 42
+0xe5 0x5d 0x10 0x00 0x00 0x2a
+
+# CHECK: clfhsi 0(%r15), 42
+0xe5 0x5d 0xf0 0x00 0x00 0x2a
+
+# CHECK: clfhsi 4095(%r1), 42
+0xe5 0x5d 0x1f 0xff 0x00 0x2a
+
+# CHECK: clfhsi 4095(%r15), 42
+0xe5 0x5d 0xff 0xff 0x00 0x2a
+
+# CHECK: clfi %r0, 0
+0xc2 0x0f 0x00 0x00 0x00 0x00
+
+# CHECK: clfi %r0, 4294967295
+0xc2 0x0f 0xff 0xff 0xff 0xff
+
+# CHECK: clfi %r15, 0
+0xc2 0xff 0x00 0x00 0x00 0x00
+
+# CHECK: clgfi %r0, 0
+0xc2 0x0e 0x00 0x00 0x00 0x00
+
+# CHECK: clgfi %r0, 4294967295
+0xc2 0x0e 0xff 0xff 0xff 0xff
+
+# CHECK: clgfi %r15, 0
+0xc2 0xfe 0x00 0x00 0x00 0x00
+
+# CHECK: clgfr %r0, %r0
+0xb9 0x31 0x00 0x00
+
+# CHECK: clgfr %r0, %r15
+0xb9 0x31 0x00 0x0f
+
+# CHECK: clgfr %r15, %r0
+0xb9 0x31 0x00 0xf0
+
+# CHECK: clgfr %r7, %r8
+0xb9 0x31 0x00 0x78
+
+# CHECK: clgf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x31
+
+# CHECK: clgf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x31
+
+# CHECK: clgf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x31
+
+# CHECK: clgf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x31
+
+# CHECK: clgf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x31
+
+# CHECK: clgf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x31
+
+# CHECK: clgf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x31
+
+# CHECK: clgf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x31
+
+# CHECK: clgf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x31
+
+# CHECK: clgf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x31
+
+# CHECK: clghsi 0, 0
+0xe5 0x59 0x00 0x00 0x00 0x00
+
+# CHECK: clghsi 4095, 0
+0xe5 0x59 0x0f 0xff 0x00 0x00
+
+# CHECK: clghsi 0, 65535
+0xe5 0x59 0x00 0x00 0xff 0xff
+
+# CHECK: clghsi 0(%r1), 42
+0xe5 0x59 0x10 0x00 0x00 0x2a
+
+# CHECK: clghsi 0(%r15), 42
+0xe5 0x59 0xf0 0x00 0x00 0x2a
+
+# CHECK: clghsi 4095(%r1), 42
+0xe5 0x59 0x1f 0xff 0x00 0x2a
+
+# CHECK: clghsi 4095(%r15), 42
+0xe5 0x59 0xff 0xff 0x00 0x2a
+
+# CHECK: clgr %r0, %r0
+0xb9 0x21 0x00 0x00
+
+# CHECK: clgr %r0, %r15
+0xb9 0x21 0x00 0x0f
+
+# CHECK: clgr %r15, %r0
+0xb9 0x21 0x00 0xf0
+
+# CHECK: clgr %r7, %r8
+0xb9 0x21 0x00 0x78
+
+# CHECK: clg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x21
+
+# CHECK: clg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x21
+
+# CHECK: clg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x21
+
+# CHECK: clg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x21
+
+# CHECK: clg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x21
+
+# CHECK: clg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x21
+
+# CHECK: clg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x21
+
+# CHECK: clg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x21
+
+# CHECK: clg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x21
+
+# CHECK: clg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x21
+
+# CHECK: clhhsi 0, 0
+0xe5 0x55 0x00 0x00 0x00 0x00
+
+# CHECK: clhhsi 4095, 0
+0xe5 0x55 0x0f 0xff 0x00 0x00
+
+# CHECK: clhhsi 0, 65535
+0xe5 0x55 0x00 0x00 0xff 0xff
+
+# CHECK: clhhsi 0(%r1), 42
+0xe5 0x55 0x10 0x00 0x00 0x2a
+
+# CHECK: clhhsi 0(%r15), 42
+0xe5 0x55 0xf0 0x00 0x00 0x2a
+
+# CHECK: clhhsi 4095(%r1), 42
+0xe5 0x55 0x1f 0xff 0x00 0x2a
+
+# CHECK: clhhsi 4095(%r15), 42
+0xe5 0x55 0xff 0xff 0x00 0x2a
+
+# CHECK: cli 0, 0
+0x95 0x00 0x00 0x00
+
+# CHECK: cli 4095, 0
+0x95 0x00 0x0f 0xff
+
+# CHECK: cli 0, 255
+0x95 0xff 0x00 0x00
+
+# CHECK: cli 0(%r1), 42
+0x95 0x2a 0x10 0x00
+
+# CHECK: cli 0(%r15), 42
+0x95 0x2a 0xf0 0x00
+
+# CHECK: cli 4095(%r1), 42
+0x95 0x2a 0x1f 0xff
+
+# CHECK: cli 4095(%r15), 42
+0x95 0x2a 0xff 0xff
+
+# CHECK: cliy -524288, 0
+0xeb 0x00 0x00 0x00 0x80 0x55
+
+# CHECK: cliy -1, 0
+0xeb 0x00 0x0f 0xff 0xff 0x55
+
+# CHECK: cliy 0, 0
+0xeb 0x00 0x00 0x00 0x00 0x55
+
+# CHECK: cliy 1, 0
+0xeb 0x00 0x00 0x01 0x00 0x55
+
+# CHECK: cliy 524287, 0
+0xeb 0x00 0x0f 0xff 0x7f 0x55
+
+# CHECK: cliy 0, 255
+0xeb 0xff 0x00 0x00 0x00 0x55
+
+# CHECK: cliy 0(%r1), 42
+0xeb 0x2a 0x10 0x00 0x00 0x55
+
+# CHECK: cliy 0(%r15), 42
+0xeb 0x2a 0xf0 0x00 0x00 0x55
+
+# CHECK: cliy 524287(%r1), 42
+0xeb 0x2a 0x1f 0xff 0x7f 0x55
+
+# CHECK: cliy 524287(%r15), 42
+0xeb 0x2a 0xff 0xff 0x7f 0x55
+
+# CHECK: clr %r0, %r0
+0x15 0x00
+
+# CHECK: clr %r0, %r15
+0x15 0x0f
+
+# CHECK: clr %r15, %r0
+0x15 0xf0
+
+# CHECK: clr %r7, %r8
+0x15 0x78
+
+# CHECK: cl %r0, 0
+0x55 0x00 0x00 0x00
+
+# CHECK: cl %r0, 4095
+0x55 0x00 0x0f 0xff
+
+# CHECK: cl %r0, 0(%r1)
+0x55 0x00 0x10 0x00
+
+# CHECK: cl %r0, 0(%r15)
+0x55 0x00 0xf0 0x00
+
+# CHECK: cl %r0, 4095(%r1,%r15)
+0x55 0x01 0xff 0xff
+
+# CHECK: cl %r0, 4095(%r15,%r1)
+0x55 0x0f 0x1f 0xff
+
+# CHECK: cl %r15, 0
+0x55 0xf0 0x00 0x00
+
+# CHECK: cly %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x55
+
+# CHECK: cly %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x55
+
+# CHECK: cly %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x55
+
+# CHECK: cly %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x55
+
+# CHECK: cly %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x55
+
+# CHECK: cly %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x55
+
+# CHECK: cly %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x55
+
+# CHECK: cly %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x55
+
+# CHECK: cly %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x55
+
+# CHECK: cly %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x55
+
+# CHECK: cpsdr %f0, %f0, %f0
+0xb3 0x72 0x00 0x00
+
+# CHECK: cpsdr %f0, %f0, %f15
+0xb3 0x72 0x00 0x0f
+
+# CHECK: cpsdr %f0, %f15, %f0
+0xb3 0x72 0xf0 0x00
+
+# CHECK: cpsdr %f15, %f0, %f0
+0xb3 0x72 0x00 0xf0
+
+# CHECK: cpsdr %f1, %f2, %f3
+0xb3 0x72 0x20 0x13
+
+# CHECK: cpsdr %f15, %f15, %f15
+0xb3 0x72 0xf0 0xff
+
+# CHECK: cr %r0, %r0
+0x19 0x00
+
+# CHECK: cr %r0, %r15
+0x19 0x0f
+
+# CHECK: cr %r15, %r0
+0x19 0xf0
+
+# CHECK: cr %r7, %r8
+0x19 0x78
+
+# CHECK: csg %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x30
+
+# CHECK: csg %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x30
+
+# CHECK: csg %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x30
+
+# CHECK: csg %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x30
+
+# CHECK: csg %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x30
+
+# CHECK: csg %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x30
+
+# CHECK: csg %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x30
+
+# CHECK: csg %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x30
+
+# CHECK: csg %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x30
+
+# CHECK: csg %r0, %r15, 0
+0xeb 0x0f 0x00 0x00 0x00 0x30
+
+# CHECK: csg %r15, %r0, 0
+0xeb 0xf0 0x00 0x00 0x00 0x30
+
+# CHECK: cs %r0, %r0, 0
+0xba 0x00 0x00 0x00
+
+# CHECK: cs %r0, %r0, 4095
+0xba 0x00 0x0f 0xff
+
+# CHECK: cs %r0, %r0, 0(%r1)
+0xba 0x00 0x10 0x00
+
+# CHECK: cs %r0, %r0, 0(%r15)
+0xba 0x00 0xf0 0x00
+
+# CHECK: cs %r0, %r0, 4095(%r1)
+0xba 0x00 0x1f 0xff
+
+# CHECK: cs %r0, %r0, 4095(%r15)
+0xba 0x00 0xff 0xff
+
+# CHECK: cs %r0, %r15, 0
+0xba 0x0f 0x00 0x00
+
+# CHECK: cs %r15, %r0, 0
+0xba 0xf0 0x00 0x00
+
+# CHECK: csy %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x14
+
+# CHECK: csy %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x14
+
+# CHECK: csy %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x14
+
+# CHECK: csy %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x14
+
+# CHECK: csy %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x14
+
+# CHECK: csy %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x14
+
+# CHECK: csy %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x14
+
+# CHECK: csy %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x14
+
+# CHECK: csy %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x14
+
+# CHECK: csy %r0, %r15, 0
+0xeb 0x0f 0x00 0x00 0x00 0x14
+
+# CHECK: csy %r15, %r0, 0
+0xeb 0xf0 0x00 0x00 0x00 0x14
+
+# CHECK: c %r0, 0
+0x59 0x00 0x00 0x00
+
+# CHECK: c %r0, 4095
+0x59 0x00 0x0f 0xff
+
+# CHECK: c %r0, 0(%r1)
+0x59 0x00 0x10 0x00
+
+# CHECK: c %r0, 0(%r15)
+0x59 0x00 0xf0 0x00
+
+# CHECK: c %r0, 4095(%r1,%r15)
+0x59 0x01 0xff 0xff
+
+# CHECK: c %r0, 4095(%r15,%r1)
+0x59 0x0f 0x1f 0xff
+
+# CHECK: c %r15, 0
+0x59 0xf0 0x00 0x00
+
+# CHECK: cxbr %f0, %f0
+0xb3 0x49 0x00 0x00
+
+# CHECK: cxbr %f0, %f13
+0xb3 0x49 0x00 0x0d
+
+# CHECK: cxbr %f8, %f8
+0xb3 0x49 0x00 0x88
+
+# CHECK: cxbr %f13, %f0
+0xb3 0x49 0x00 0xd0
+
+# CHECK: cxfbr %f0, %r0
+0xb3 0x96 0x00 0x00
+
+# CHECK: cxfbr %f0, %r15
+0xb3 0x96 0x00 0x0f
+
+# CHECK: cxfbr %f13, %r0
+0xb3 0x96 0x00 0xd0
+
+# CHECK: cxfbr %f8, %r7
+0xb3 0x96 0x00 0x87
+
+# CHECK: cxfbr %f13, %r15
+0xb3 0x96 0x00 0xdf
+
+# CHECK: cxgbr %f0, %r0
+0xb3 0xa6 0x00 0x00
+
+# CHECK: cxgbr %f0, %r15
+0xb3 0xa6 0x00 0x0f
+
+# CHECK: cxgbr %f13, %r0
+0xb3 0xa6 0x00 0xd0
+
+# CHECK: cxgbr %f8, %r7
+0xb3 0xa6 0x00 0x87
+
+# CHECK: cxgbr %f13, %r15
+0xb3 0xa6 0x00 0xdf
+
+# CHECK: cy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x59
+
+# CHECK: cy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x59
+
+# CHECK: cy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x59
+
+# CHECK: cy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x59
+
+# CHECK: cy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x59
+
+# CHECK: cy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x59
+
+# CHECK: cy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x59
+
+# CHECK: cy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x59
+
+# CHECK: cy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x59
+
+# CHECK: cy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x59
+
+# CHECK: ddbr %f0, %f0
+0xb3 0x1d 0x00 0x00
+
+# CHECK: ddbr %f0, %f15
+0xb3 0x1d 0x00 0x0f
+
+# CHECK: ddbr %f7, %f8
+0xb3 0x1d 0x00 0x78
+
+# CHECK: ddbr %f15, %f0
+0xb3 0x1d 0x00 0xf0
+
+# CHECK: ddb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x1d
+
+# CHECK: ddb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x1d
+
+# CHECK: ddb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x1d
+
+# CHECK: ddb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x1d
+
+# CHECK: ddb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x1d
+
+# CHECK: ddb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x1d
+
+# CHECK: ddb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x1d
+
+# CHECK: debr %f0, %f0
+0xb3 0x0d 0x00 0x00
+
+# CHECK: debr %f0, %f15
+0xb3 0x0d 0x00 0x0f
+
+# CHECK: debr %f7, %f8
+0xb3 0x0d 0x00 0x78
+
+# CHECK: debr %f15, %f0
+0xb3 0x0d 0x00 0xf0
+
+# CHECK: deb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x0d
+
+# CHECK: deb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x0d
+
+# CHECK: deb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x0d
+
+# CHECK: deb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x0d
+
+# CHECK: deb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x0d
+
+# CHECK: deb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x0d
+
+# CHECK: deb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x0d
+
+# CHECK: dlgr %r0, %r0
+0xb9 0x87 0x00 0x00
+
+# CHECK: dlgr %r0, %r15
+0xb9 0x87 0x00 0x0f
+
+# CHECK: dlgr %r14, %r0
+0xb9 0x87 0x00 0xe0
+
+# CHECK: dlgr %r6, %r9
+0xb9 0x87 0x00 0x69
+
+# CHECK: dlg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x87
+
+# CHECK: dlg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x87
+
+# CHECK: dlg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x87
+
+# CHECK: dlg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x87
+
+# CHECK: dlg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x87
+
+# CHECK: dlg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x87
+
+# CHECK: dlg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x87
+
+# CHECK: dlg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x87
+
+# CHECK: dlg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x87
+
+# CHECK: dlg %r14, 0
+0xe3 0xe0 0x00 0x00 0x00 0x87
+
+# CHECK: dlr %r0, %r0
+0xb9 0x97 0x00 0x00
+
+# CHECK: dlr %r0, %r15
+0xb9 0x97 0x00 0x0f
+
+# CHECK: dlr %r14, %r0
+0xb9 0x97 0x00 0xe0
+
+# CHECK: dlr %r6, %r9
+0xb9 0x97 0x00 0x69
+
+# CHECK: dl %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x97
+
+# CHECK: dl %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x97
+
+# CHECK: dl %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x97
+
+# CHECK: dl %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x97
+
+# CHECK: dl %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x97
+
+# CHECK: dl %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x97
+
+# CHECK: dl %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x97
+
+# CHECK: dl %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x97
+
+# CHECK: dl %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x97
+
+# CHECK: dl %r14, 0
+0xe3 0xe0 0x00 0x00 0x00 0x97
+
+# CHECK: dsgfr %r0, %r0
+0xb9 0x1d 0x00 0x00
+
+# CHECK: dsgfr %r0, %r15
+0xb9 0x1d 0x00 0x0f
+
+# CHECK: dsgfr %r14, %r0
+0xb9 0x1d 0x00 0xe0
+
+# CHECK: dsgfr %r6, %r9
+0xb9 0x1d 0x00 0x69
+
+# CHECK: dsgf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x1d
+
+# CHECK: dsgf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x1d
+
+# CHECK: dsgf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x1d
+
+# CHECK: dsgf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x1d
+
+# CHECK: dsgf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x1d
+
+# CHECK: dsgf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x1d
+
+# CHECK: dsgf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x1d
+
+# CHECK: dsgf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x1d
+
+# CHECK: dsgf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x1d
+
+# CHECK: dsgf %r14, 0
+0xe3 0xe0 0x00 0x00 0x00 0x1d
+
+# CHECK: dsgr %r0, %r0
+0xb9 0x0d 0x00 0x00
+
+# CHECK: dsgr %r0, %r15
+0xb9 0x0d 0x00 0x0f
+
+# CHECK: dsgr %r14, %r0
+0xb9 0x0d 0x00 0xe0
+
+# CHECK: dsgr %r6, %r9
+0xb9 0x0d 0x00 0x69
+
+# CHECK: dsg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x0d
+
+# CHECK: dsg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x0d
+
+# CHECK: dsg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x0d
+
+# CHECK: dsg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x0d
+
+# CHECK: dsg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x0d
+
+# CHECK: dsg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x0d
+
+# CHECK: dsg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x0d
+
+# CHECK: dsg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x0d
+
+# CHECK: dsg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x0d
+
+# CHECK: dsg %r14, 0
+0xe3 0xe0 0x00 0x00 0x00 0x0d
+
+# CHECK: dxbr %f0, %f0
+0xb3 0x4d 0x00 0x00
+
+# CHECK: dxbr %f0, %f13
+0xb3 0x4d 0x00 0x0d
+
+# CHECK: dxbr %f8, %f8
+0xb3 0x4d 0x00 0x88
+
+# CHECK: dxbr %f13, %f0
+0xb3 0x4d 0x00 0xd0
+
+# CHECK: ear %r0, %a0
+0xb2 0x4f 0x00 0x00
+
+# CHECK: ear %r0, %a15
+0xb2 0x4f 0x00 0x0f
+
+# CHECK: ear %r15, %a0
+0xb2 0x4f 0x00 0xf0
+
+# CHECK: ear %r7, %a8
+0xb2 0x4f 0x00 0x78
+
+# CHECK: ear %r15, %a15
+0xb2 0x4f 0x00 0xff
+
+# CHECK: fidbr %f0, 0, %f0
+0xb3 0x5f 0x00 0x00
+
+# CHECK: fidbr %f0, 0, %f15
+0xb3 0x5f 0x00 0x0f
+
+# CHECK: fidbr %f0, 15, %f0
+0xb3 0x5f 0xf0 0x00
+
+# CHECK: fidbr %f4, 5, %f6
+0xb3 0x5f 0x50 0x46
+
+# CHECK: fidbr %f15, 0, %f0
+0xb3 0x5f 0x00 0xf0
+
+# CHECK: fiebr %f0, 0, %f0
+0xb3 0x57 0x00 0x00
+
+# CHECK: fiebr %f0, 0, %f15
+0xb3 0x57 0x00 0x0f
+
+# CHECK: fiebr %f0, 15, %f0
+0xb3 0x57 0xf0 0x00
+
+# CHECK: fiebr %f4, 5, %f6
+0xb3 0x57 0x50 0x46
+
+# CHECK: fiebr %f15, 0, %f0
+0xb3 0x57 0x00 0xf0
+
+# CHECK: fixbr %f0, 0, %f0
+0xb3 0x47 0x00 0x00
+
+# CHECK: fixbr %f0, 0, %f13
+0xb3 0x47 0x00 0x0d
+
+# CHECK: fixbr %f0, 15, %f0
+0xb3 0x47 0xf0 0x00
+
+# CHECK: fixbr %f4, 5, %f8
+0xb3 0x47 0x50 0x48
+
+# CHECK: fixbr %f13, 0, %f0
+0xb3 0x47 0x00 0xd0
+
+# CHECK: flogr %r0, %r0
+0xb9 0x83 0x00 0x00
+
+# CHECK: flogr %r0, %r15
+0xb9 0x83 0x00 0x0f
+
+# CHECK: flogr %r10, %r9
+0xb9 0x83 0x00 0xa9
+
+# CHECK: flogr %r14, %r0
+0xb9 0x83 0x00 0xe0
+
+# CHECK: ic %r0, 0
+0x43 0x00 0x00 0x00
+
+# CHECK: ic %r0, 4095
+0x43 0x00 0x0f 0xff
+
+# CHECK: ic %r0, 0(%r1)
+0x43 0x00 0x10 0x00
+
+# CHECK: ic %r0, 0(%r15)
+0x43 0x00 0xf0 0x00
+
+# CHECK: ic %r0, 4095(%r1,%r15)
+0x43 0x01 0xff 0xff
+
+# CHECK: ic %r0, 4095(%r15,%r1)
+0x43 0x0f 0x1f 0xff
+
+# CHECK: ic %r15, 0
+0x43 0xf0 0x00 0x00
+
+# CHECK: icy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x73
+
+# CHECK: icy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x73
+
+# CHECK: icy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x73
+
+# CHECK: icy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x73
+
+# CHECK: icy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x73
+
+# CHECK: icy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x73
+
+# CHECK: icy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x73
+
+# CHECK: icy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x73
+
+# CHECK: icy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x73
+
+# CHECK: icy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x73
+
+# CHECK: iihf %r0, 0
+0xc0 0x08 0x00 0x00 0x00 0x00
+
+# CHECK: iihf %r0, 4294967295
+0xc0 0x08 0xff 0xff 0xff 0xff
+
+# CHECK: iihf %r15, 0
+0xc0 0xf8 0x00 0x00 0x00 0x00
+
+# CHECK: iihh %r0, 0
+0xa5 0x00 0x00 0x00
+
+# CHECK: iihh %r0, 32768
+0xa5 0x00 0x80 0x00
+
+# CHECK: iihh %r0, 65535
+0xa5 0x00 0xff 0xff
+
+# CHECK: iihh %r15, 0
+0xa5 0xf0 0x00 0x00
+
+# CHECK: iihl %r0, 0
+0xa5 0x01 0x00 0x00
+
+# CHECK: iihl %r0, 32768
+0xa5 0x01 0x80 0x00
+
+# CHECK: iihl %r0, 65535
+0xa5 0x01 0xff 0xff
+
+# CHECK: iihl %r15, 0
+0xa5 0xf1 0x00 0x00
+
+# CHECK: iilf %r0, 0
+0xc0 0x09 0x00 0x00 0x00 0x00
+
+# CHECK: iilf %r0, 4294967295
+0xc0 0x09 0xff 0xff 0xff 0xff
+
+# CHECK: iilf %r15, 0
+0xc0 0xf9 0x00 0x00 0x00 0x00
+
+# CHECK: iilh %r0, 0
+0xa5 0x02 0x00 0x00
+
+# CHECK: iilh %r0, 32768
+0xa5 0x02 0x80 0x00
+
+# CHECK: iilh %r0, 65535
+0xa5 0x02 0xff 0xff
+
+# CHECK: iilh %r15, 0
+0xa5 0xf2 0x00 0x00
+
+# CHECK: iill %r0, 0
+0xa5 0x03 0x00 0x00
+
+# CHECK: iill %r0, 32768
+0xa5 0x03 0x80 0x00
+
+# CHECK: iill %r0, 65535
+0xa5 0x03 0xff 0xff
+
+# CHECK: iill %r15, 0
+0xa5 0xf3 0x00 0x00
+
+# CHECK: la %r0, 0
+0x41 0x00 0x00 0x00
+
+# CHECK: la %r0, 4095
+0x41 0x00 0x0f 0xff
+
+# CHECK: la %r0, 0(%r1)
+0x41 0x00 0x10 0x00
+
+# CHECK: la %r0, 0(%r15)
+0x41 0x00 0xf0 0x00
+
+# CHECK: la %r0, 4095(%r1,%r15)
+0x41 0x01 0xff 0xff
+
+# CHECK: la %r0, 4095(%r15,%r1)
+0x41 0x0f 0x1f 0xff
+
+# CHECK: la %r15, 0
+0x41 0xf0 0x00 0x00
+
+# CHECK: lay %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x71
+
+# CHECK: lay %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x71
+
+# CHECK: lay %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x71
+
+# CHECK: lay %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x71
+
+# CHECK: lay %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x71
+
+# CHECK: lay %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x71
+
+# CHECK: lay %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x71
+
+# CHECK: lay %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x71
+
+# CHECK: lay %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x71
+
+# CHECK: lay %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x71
+
+# CHECK: lbr %r0, %r15
+0xb9 0x26 0x00 0x0f
+
+# CHECK: lbr %r7, %r8
+0xb9 0x26 0x00 0x78
+
+# CHECK: lbr %r15, %r0
+0xb9 0x26 0x00 0xf0
+
+# CHECK: lb %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x76
+
+# CHECK: lb %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x76
+
+# CHECK: lb %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x76
+
+# CHECK: lb %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x76
+
+# CHECK: lb %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x76
+
+# CHECK: lb %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x76
+
+# CHECK: lb %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x76
+
+# CHECK: lb %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x76
+
+# CHECK: lb %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x76
+
+# CHECK: lb %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x76
+
+# CHECK: lcdbr %f0, %f9
+0xb3 0x13 0x00 0x09
+
+# CHECK: lcdbr %f0, %f15
+0xb3 0x13 0x00 0x0f
+
+# CHECK: lcdbr %f15, %f0
+0xb3 0x13 0x00 0xf0
+
+# CHECK: lcdbr %f15, %f9
+0xb3 0x13 0x00 0xf9
+
+# CHECK: lcebr %f0, %f9
+0xb3 0x03 0x00 0x09
+
+# CHECK: lcebr %f0, %f15
+0xb3 0x03 0x00 0x0f
+
+# CHECK: lcebr %f15, %f0
+0xb3 0x03 0x00 0xf0
+
+# CHECK: lcebr %f15, %f9
+0xb3 0x03 0x00 0xf9
+
+# CHECK: lcgfr %r0, %r0
+0xb9 0x13 0x00 0x00
+
+# CHECK: lcgfr %r0, %r15
+0xb9 0x13 0x00 0x0f
+
+# CHECK: lcgfr %r15, %r0
+0xb9 0x13 0x00 0xf0
+
+# CHECK: lcgfr %r7, %r8
+0xb9 0x13 0x00 0x78
+
+# CHECK: lcgr %r0, %r0
+0xb9 0x03 0x00 0x00
+
+# CHECK: lcgr %r0, %r15
+0xb9 0x03 0x00 0x0f
+
+# CHECK: lcgr %r15, %r0
+0xb9 0x03 0x00 0xf0
+
+# CHECK: lcgr %r7, %r8
+0xb9 0x03 0x00 0x78
+
+# CHECK: lcr %r0, %r0
+0x13 0x00
+
+# CHECK: lcr %r0, %r15
+0x13 0x0f
+
+# CHECK: lcr %r15, %r0
+0x13 0xf0
+
+# CHECK: lcr %r7, %r8
+0x13 0x78
+
+# CHECK: lcxbr %f0, %f8
+0xb3 0x43 0x00 0x08
+
+# CHECK: lcxbr %f0, %f13
+0xb3 0x43 0x00 0x0d
+
+# CHECK: lcxbr %f13, %f0
+0xb3 0x43 0x00 0xd0
+
+# CHECK: lcxbr %f13, %f9
+0xb3 0x43 0x00 0xd9
+
+# CHECK: ldebr %f0, %f15
+0xb3 0x04 0x00 0x0f
+
+# CHECK: ldebr %f7, %f8
+0xb3 0x04 0x00 0x78
+
+# CHECK: ldebr %f15, %f0
+0xb3 0x04 0x00 0xf0
+
+# CHECK: ldeb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x04
+
+# CHECK: ldeb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x04
+
+# CHECK: ldeb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x04
+
+# CHECK: ldeb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x04
+
+# CHECK: ldeb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x04
+
+# CHECK: ldeb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x04
+
+# CHECK: ldeb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x04
+
+# CHECK: ldgr %f0, %r0
+0xb3 0xc1 0x00 0x00
+
+# CHECK: ldgr %f0, %r15
+0xb3 0xc1 0x00 0x0f
+
+# CHECK: ldgr %f15, %r0
+0xb3 0xc1 0x00 0xf0
+
+# CHECK: ldgr %f7, %r9
+0xb3 0xc1 0x00 0x79
+
+# CHECK: ldgr %f15, %r15
+0xb3 0xc1 0x00 0xff
+
+# CHECK: ldr %f0, %f9
+0x28 0x09
+
+# CHECK: ldr %f0, %f15
+0x28 0x0f
+
+# CHECK: ldr %f15, %f0
+0x28 0xf0
+
+# CHECK: ldr %f15, %f9
+0x28 0xf9
+
+# CHECK: ld %f0, 0
+0x68 0x00 0x00 0x00
+
+# CHECK: ld %f0, 4095
+0x68 0x00 0x0f 0xff
+
+# CHECK: ld %f0, 0(%r1)
+0x68 0x00 0x10 0x00
+
+# CHECK: ld %f0, 0(%r15)
+0x68 0x00 0xf0 0x00
+
+# CHECK: ld %f0, 4095(%r1,%r15)
+0x68 0x01 0xff 0xff
+
+# CHECK: ld %f0, 4095(%r15,%r1)
+0x68 0x0f 0x1f 0xff
+
+# CHECK: ld %f15, 0
+0x68 0xf0 0x00 0x00
+
+# CHECK: ldxbr %f0, %f0
+0xb3 0x45 0x00 0x00
+
+# CHECK: ldxbr %f0, %f13
+0xb3 0x45 0x00 0x0d
+
+# CHECK: ldxbr %f8, %f12
+0xb3 0x45 0x00 0x8c
+
+# CHECK: ldxbr %f13, %f0
+0xb3 0x45 0x00 0xd0
+
+# CHECK: ldxbr %f13, %f13
+0xb3 0x45 0x00 0xdd
+
+# CHECK: ldy %f0, -524288
+0xed 0x00 0x00 0x00 0x80 0x65
+
+# CHECK: ldy %f0, -1
+0xed 0x00 0x0f 0xff 0xff 0x65
+
+# CHECK: ldy %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x65
+
+# CHECK: ldy %f0, 1
+0xed 0x00 0x00 0x01 0x00 0x65
+
+# CHECK: ldy %f0, 524287
+0xed 0x00 0x0f 0xff 0x7f 0x65
+
+# CHECK: ldy %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x65
+
+# CHECK: ldy %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x65
+
+# CHECK: ldy %f0, 524287(%r1,%r15)
+0xed 0x01 0xff 0xff 0x7f 0x65
+
+# CHECK: ldy %f0, 524287(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x7f 0x65
+
+# CHECK: ldy %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x65
+
+# CHECK: ledbr %f0, %f0
+0xb3 0x44 0x00 0x00
+
+# CHECK: ledbr %f0, %f15
+0xb3 0x44 0x00 0x0f
+
+# CHECK: ledbr %f7, %f8
+0xb3 0x44 0x00 0x78
+
+# CHECK: ledbr %f15, %f0
+0xb3 0x44 0x00 0xf0
+
+# CHECK: ledbr %f15, %f15
+0xb3 0x44 0x00 0xff
+
+# CHECK: ler %f0, %f9
+0x38 0x09
+
+# CHECK: ler %f0, %f15
+0x38 0x0f
+
+# CHECK: ler %f15, %f0
+0x38 0xf0
+
+# CHECK: ler %f15, %f9
+0x38 0xf9
+
+# CHECK: le %f0, 0
+0x78 0x00 0x00 0x00
+
+# CHECK: le %f0, 4095
+0x78 0x00 0x0f 0xff
+
+# CHECK: le %f0, 0(%r1)
+0x78 0x00 0x10 0x00
+
+# CHECK: le %f0, 0(%r15)
+0x78 0x00 0xf0 0x00
+
+# CHECK: le %f0, 4095(%r1,%r15)
+0x78 0x01 0xff 0xff
+
+# CHECK: le %f0, 4095(%r15,%r1)
+0x78 0x0f 0x1f 0xff
+
+# CHECK: le %f15, 0
+0x78 0xf0 0x00 0x00
+
+# CHECK: lexbr %f0, %f0
+0xb3 0x46 0x00 0x00
+
+# CHECK: lexbr %f0, %f13
+0xb3 0x46 0x00 0x0d
+
+# CHECK: lexbr %f8, %f12
+0xb3 0x46 0x00 0x8c
+
+# CHECK: lexbr %f13, %f0
+0xb3 0x46 0x00 0xd0
+
+# CHECK: lexbr %f13, %f13
+0xb3 0x46 0x00 0xdd
+
+# CHECK: ley %f0, -524288
+0xed 0x00 0x00 0x00 0x80 0x64
+
+# CHECK: ley %f0, -1
+0xed 0x00 0x0f 0xff 0xff 0x64
+
+# CHECK: ley %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x64
+
+# CHECK: ley %f0, 1
+0xed 0x00 0x00 0x01 0x00 0x64
+
+# CHECK: ley %f0, 524287
+0xed 0x00 0x0f 0xff 0x7f 0x64
+
+# CHECK: ley %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x64
+
+# CHECK: ley %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x64
+
+# CHECK: ley %f0, 524287(%r1,%r15)
+0xed 0x01 0xff 0xff 0x7f 0x64
+
+# CHECK: ley %f0, 524287(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x7f 0x64
+
+# CHECK: ley %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x64
+
+# CHECK: lgbr %r0, %r15
+0xb9 0x06 0x00 0x0f
+
+# CHECK: lgbr %r7, %r8
+0xb9 0x06 0x00 0x78
+
+# CHECK: lgbr %r15, %r0
+0xb9 0x06 0x00 0xf0
+
+# CHECK: lgb %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x77
+
+# CHECK: lgb %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x77
+
+# CHECK: lgb %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x77
+
+# CHECK: lgb %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x77
+
+# CHECK: lgb %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x77
+
+# CHECK: lgb %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x77
+
+# CHECK: lgb %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x77
+
+# CHECK: lgb %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x77
+
+# CHECK: lgb %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x77
+
+# CHECK: lgb %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x77
+
+# CHECK: lgdr %r0, %f0
+0xb3 0xcd 0x00 0x00
+
+# CHECK: lgdr %r0, %f15
+0xb3 0xcd 0x00 0x0f
+
+# CHECK: lgdr %r15, %f0
+0xb3 0xcd 0x00 0xf0
+
+# CHECK: lgdr %r8, %f8
+0xb3 0xcd 0x00 0x88
+
+# CHECK: lgdr %r15, %f15
+0xb3 0xcd 0x00 0xff
+
+# CHECK: lgfi %r0, -2147483648
+0xc0 0x01 0x80 0x00 0x00 0x00
+
+# CHECK: lgfi %r0, -1
+0xc0 0x01 0xff 0xff 0xff 0xff
+
+# CHECK: lgfi %r0, 0
+0xc0 0x01 0x00 0x00 0x00 0x00
+
+# CHECK: lgfi %r0, 1
+0xc0 0x01 0x00 0x00 0x00 0x01
+
+# CHECK: lgfi %r0, 2147483647
+0xc0 0x01 0x7f 0xff 0xff 0xff
+
+# CHECK: lgfi %r15, 0
+0xc0 0xf1 0x00 0x00 0x00 0x00
+
+# CHECK: lgfr %r0, %r15
+0xb9 0x14 0x00 0x0f
+
+# CHECK: lgfr %r7, %r8
+0xb9 0x14 0x00 0x78
+
+# CHECK: lgfr %r15, %r0
+0xb9 0x14 0x00 0xf0
+
+# CHECK: lgf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x14
+
+# CHECK: lgf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x14
+
+# CHECK: lgf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x14
+
+# CHECK: lgf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x14
+
+# CHECK: lgf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x14
+
+# CHECK: lgf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x14
+
+# CHECK: lgf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x14
+
+# CHECK: lgf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x14
+
+# CHECK: lgf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x14
+
+# CHECK: lgf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x14
+
+# CHECK: lghi %r0, -32768
+0xa7 0x09 0x80 0x00
+
+# CHECK: lghi %r0, -1
+0xa7 0x09 0xff 0xff
+
+# CHECK: lghi %r0, 0
+0xa7 0x09 0x00 0x00
+
+# CHECK: lghi %r0, 1
+0xa7 0x09 0x00 0x01
+
+# CHECK: lghi %r0, 32767
+0xa7 0x09 0x7f 0xff
+
+# CHECK: lghi %r15, 0
+0xa7 0xf9 0x00 0x00
+
+# CHECK: lghr %r0, %r15
+0xb9 0x07 0x00 0x0f
+
+# CHECK: lghr %r7, %r8
+0xb9 0x07 0x00 0x78
+
+# CHECK: lghr %r15, %r0
+0xb9 0x07 0x00 0xf0
+
+# CHECK: lgh %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x15
+
+# CHECK: lgh %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x15
+
+# CHECK: lgh %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x15
+
+# CHECK: lgh %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x15
+
+# CHECK: lgh %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x15
+
+# CHECK: lgh %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x15
+
+# CHECK: lgh %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x15
+
+# CHECK: lgh %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x15
+
+# CHECK: lgh %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x15
+
+# CHECK: lgh %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x15
+
+# CHECK: lgr %r0, %r9
+0xb9 0x04 0x00 0x09
+
+# CHECK: lgr %r0, %r15
+0xb9 0x04 0x00 0x0f
+
+# CHECK: lgr %r15, %r0
+0xb9 0x04 0x00 0xf0
+
+# CHECK: lgr %r15, %r9
+0xb9 0x04 0x00 0xf9
+
+# CHECK: lg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x04
+
+# CHECK: lg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x04
+
+# CHECK: lg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x04
+
+# CHECK: lg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x04
+
+# CHECK: lg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x04
+
+# CHECK: lg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x04
+
+# CHECK: lg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x04
+
+# CHECK: lg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x04
+
+# CHECK: lg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x04
+
+# CHECK: lg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x04
+
+# CHECK: lhi %r0, -32768
+0xa7 0x08 0x80 0x00
+
+# CHECK: lhi %r0, -1
+0xa7 0x08 0xff 0xff
+
+# CHECK: lhi %r0, 0
+0xa7 0x08 0x00 0x00
+
+# CHECK: lhi %r0, 1
+0xa7 0x08 0x00 0x01
+
+# CHECK: lhi %r0, 32767
+0xa7 0x08 0x7f 0xff
+
+# CHECK: lhi %r15, 0
+0xa7 0xf8 0x00 0x00
+
+# CHECK: lhr %r0, %r15
+0xb9 0x27 0x00 0x0f
+
+# CHECK: lhr %r7, %r8
+0xb9 0x27 0x00 0x78
+
+# CHECK: lhr %r15, %r0
+0xb9 0x27 0x00 0xf0
+
+# CHECK: lh %r0, 0
+0x48 0x00 0x00 0x00
+
+# CHECK: lh %r0, 4095
+0x48 0x00 0x0f 0xff
+
+# CHECK: lh %r0, 0(%r1)
+0x48 0x00 0x10 0x00
+
+# CHECK: lh %r0, 0(%r15)
+0x48 0x00 0xf0 0x00
+
+# CHECK: lh %r0, 4095(%r1,%r15)
+0x48 0x01 0xff 0xff
+
+# CHECK: lh %r0, 4095(%r15,%r1)
+0x48 0x0f 0x1f 0xff
+
+# CHECK: lh %r15, 0
+0x48 0xf0 0x00 0x00
+
+# CHECK: lhy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x78
+
+# CHECK: lhy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x78
+
+# CHECK: lhy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x78
+
+# CHECK: lhy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x78
+
+# CHECK: lhy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x78
+
+# CHECK: lhy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x78
+
+# CHECK: lhy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x78
+
+# CHECK: lhy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x78
+
+# CHECK: lhy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x78
+
+# CHECK: lhy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x78
+
+# CHECK: llcr %r0, %r15
+0xb9 0x94 0x00 0x0f
+
+# CHECK: llcr %r7, %r8
+0xb9 0x94 0x00 0x78
+
+# CHECK: llcr %r15, %r0
+0xb9 0x94 0x00 0xf0
+
+# CHECK: llc %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x94
+
+# CHECK: llc %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x94
+
+# CHECK: llc %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x94
+
+# CHECK: llc %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x94
+
+# CHECK: llc %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x94
+
+# CHECK: llc %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x94
+
+# CHECK: llc %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x94
+
+# CHECK: llc %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x94
+
+# CHECK: llc %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x94
+
+# CHECK: llc %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x94
+
+# CHECK: llgcr %r0, %r15
+0xb9 0x84 0x00 0x0f
+
+# CHECK: llgcr %r7, %r8
+0xb9 0x84 0x00 0x78
+
+# CHECK: llgcr %r15, %r0
+0xb9 0x84 0x00 0xf0
+
+# CHECK: llgc %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x90
+
+# CHECK: llgc %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x90
+
+# CHECK: llgc %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x90
+
+# CHECK: llgc %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x90
+
+# CHECK: llgc %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x90
+
+# CHECK: llgc %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x90
+
+# CHECK: llgc %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x90
+
+# CHECK: llgc %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x90
+
+# CHECK: llgc %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x90
+
+# CHECK: llgc %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x90
+
+# CHECK: llgfr %r0, %r15
+0xb9 0x16 0x00 0x0f
+
+# CHECK: llgfr %r7, %r8
+0xb9 0x16 0x00 0x78
+
+# CHECK: llgfr %r15, %r0
+0xb9 0x16 0x00 0xf0
+
+# CHECK: llgf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x16
+
+# CHECK: llgf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x16
+
+# CHECK: llgf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x16
+
+# CHECK: llgf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x16
+
+# CHECK: llgf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x16
+
+# CHECK: llgf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x16
+
+# CHECK: llgf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x16
+
+# CHECK: llgf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x16
+
+# CHECK: llgf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x16
+
+# CHECK: llgf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x16
+
+# CHECK: llghr %r0, %r15
+0xb9 0x85 0x00 0x0f
+
+# CHECK: llghr %r7, %r8
+0xb9 0x85 0x00 0x78
+
+# CHECK: llghr %r15, %r0
+0xb9 0x85 0x00 0xf0
+
+# CHECK: llgh %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x91
+
+# CHECK: llgh %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x91
+
+# CHECK: llgh %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x91
+
+# CHECK: llgh %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x91
+
+# CHECK: llgh %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x91
+
+# CHECK: llgh %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x91
+
+# CHECK: llgh %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x91
+
+# CHECK: llgh %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x91
+
+# CHECK: llgh %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x91
+
+# CHECK: llgh %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x91
+
+# CHECK: llhr %r0, %r15
+0xb9 0x95 0x00 0x0f
+
+# CHECK: llhr %r7, %r8
+0xb9 0x95 0x00 0x78
+
+# CHECK: llhr %r15, %r0
+0xb9 0x95 0x00 0xf0
+
+# CHECK: llh %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x95
+
+# CHECK: llh %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x95
+
+# CHECK: llh %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x95
+
+# CHECK: llh %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x95
+
+# CHECK: llh %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x95
+
+# CHECK: llh %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x95
+
+# CHECK: llh %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x95
+
+# CHECK: llh %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x95
+
+# CHECK: llh %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x95
+
+# CHECK: llh %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x95
+
+# CHECK: llihf %r0, 0
+0xc0 0x0e 0x00 0x00 0x00 0x00
+
+# CHECK: llihf %r0, 4294967295
+0xc0 0x0e 0xff 0xff 0xff 0xff
+
+# CHECK: llihf %r15, 0
+0xc0 0xfe 0x00 0x00 0x00 0x00
+
+# CHECK: llihh %r0, 0
+0xa5 0x0c 0x00 0x00
+
+# CHECK: llihh %r0, 32768
+0xa5 0x0c 0x80 0x00
+
+# CHECK: llihh %r0, 65535
+0xa5 0x0c 0xff 0xff
+
+# CHECK: llihh %r15, 0
+0xa5 0xfc 0x00 0x00
+
+# CHECK: llihl %r0, 0
+0xa5 0x0d 0x00 0x00
+
+# CHECK: llihl %r0, 32768
+0xa5 0x0d 0x80 0x00
+
+# CHECK: llihl %r0, 65535
+0xa5 0x0d 0xff 0xff
+
+# CHECK: llihl %r15, 0
+0xa5 0xfd 0x00 0x00
+
+# CHECK: llilf %r0, 0
+0xc0 0x0f 0x00 0x00 0x00 0x00
+
+# CHECK: llilf %r0, 4294967295
+0xc0 0x0f 0xff 0xff 0xff 0xff
+
+# CHECK: llilf %r15, 0
+0xc0 0xff 0x00 0x00 0x00 0x00
+
+# CHECK: llilh %r0, 0
+0xa5 0x0e 0x00 0x00
+
+# CHECK: llilh %r0, 32768
+0xa5 0x0e 0x80 0x00
+
+# CHECK: llilh %r0, 65535
+0xa5 0x0e 0xff 0xff
+
+# CHECK: llilh %r15, 0
+0xa5 0xfe 0x00 0x00
+
+# CHECK: llill %r0, 0
+0xa5 0x0f 0x00 0x00
+
+# CHECK: llill %r0, 32768
+0xa5 0x0f 0x80 0x00
+
+# CHECK: llill %r0, 65535
+0xa5 0x0f 0xff 0xff
+
+# CHECK: llill %r15, 0
+0xa5 0xff 0x00 0x00
+
+# CHECK: lmg %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x04
+
+# CHECK: lmg %r0, %r15, 0
+0xeb 0x0f 0x00 0x00 0x00 0x04
+
+# CHECK: lmg %r14, %r15, 0
+0xeb 0xef 0x00 0x00 0x00 0x04
+
+# CHECK: lmg %r15, %r15, 0
+0xeb 0xff 0x00 0x00 0x00 0x04
+
+# CHECK: lmg %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x04
+
+# CHECK: lmg %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x04
+
+# CHECK: lmg %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x04
+
+# CHECK: lmg %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x04
+
+# CHECK: lmg %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x04
+
+# CHECK: lmg %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x04
+
+# CHECK: lmg %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x04
+
+# CHECK: lmg %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x04
+
+# CHECK: lmg %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x04
+
+# CHECK: lndbr %f0, %f9
+0xb3 0x11 0x00 0x09
+
+# CHECK: lndbr %f0, %f15
+0xb3 0x11 0x00 0x0f
+
+# CHECK: lndbr %f15, %f0
+0xb3 0x11 0x00 0xf0
+
+# CHECK: lndbr %f15, %f9
+0xb3 0x11 0x00 0xf9
+
+# CHECK: lnebr %f0, %f9
+0xb3 0x01 0x00 0x09
+
+# CHECK: lnebr %f0, %f15
+0xb3 0x01 0x00 0x0f
+
+# CHECK: lnebr %f15, %f0
+0xb3 0x01 0x00 0xf0
+
+# CHECK: lnebr %f15, %f9
+0xb3 0x01 0x00 0xf9
+
+# CHECK: lnxbr %f0, %f8
+0xb3 0x41 0x00 0x08
+
+# CHECK: lnxbr %f0, %f13
+0xb3 0x41 0x00 0x0d
+
+# CHECK: lnxbr %f13, %f0
+0xb3 0x41 0x00 0xd0
+
+# CHECK: lnxbr %f13, %f9
+0xb3 0x41 0x00 0xd9
+
+# CHECK: lpdbr %f0, %f9
+0xb3 0x10 0x00 0x09
+
+# CHECK: lpdbr %f0, %f15
+0xb3 0x10 0x00 0x0f
+
+# CHECK: lpdbr %f15, %f0
+0xb3 0x10 0x00 0xf0
+
+# CHECK: lpdbr %f15, %f9
+0xb3 0x10 0x00 0xf9
+
+# CHECK: lpebr %f0, %f9
+0xb3 0x00 0x00 0x09
+
+# CHECK: lpebr %f0, %f15
+0xb3 0x00 0x00 0x0f
+
+# CHECK: lpebr %f15, %f0
+0xb3 0x00 0x00 0xf0
+
+# CHECK: lpebr %f15, %f9
+0xb3 0x00 0x00 0xf9
+
+# CHECK: lpxbr %f0, %f8
+0xb3 0x40 0x00 0x08
+
+# CHECK: lpxbr %f0, %f13
+0xb3 0x40 0x00 0x0d
+
+# CHECK: lpxbr %f13, %f0
+0xb3 0x40 0x00 0xd0
+
+# CHECK: lpxbr %f13, %f9
+0xb3 0x40 0x00 0xd9
+
+# CHECK: lr %r0, %r9
+0x18 0x09
+
+# CHECK: lr %r0, %r15
+0x18 0x0f
+
+# CHECK: lr %r15, %r0
+0x18 0xf0
+
+# CHECK: lr %r15, %r9
+0x18 0xf9
+
+# CHECK: lrvgr %r0, %r0
+0xb9 0x0f 0x00 0x00
+
+# CHECK: lrvgr %r0, %r15
+0xb9 0x0f 0x00 0x0f
+
+# CHECK: lrvgr %r15, %r0
+0xb9 0x0f 0x00 0xf0
+
+# CHECK: lrvgr %r7, %r8
+0xb9 0x0f 0x00 0x78
+
+# CHECK: lrvgr %r15, %r15
+0xb9 0x0f 0x00 0xff
+
+# CHECK: lrvg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x0f
+
+# CHECK: lrvg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x0f
+
+# CHECK: lrvg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x0f
+
+# CHECK: lrvg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x0f
+
+# CHECK: lrvg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x0f
+
+# CHECK: lrvg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x0f
+
+# CHECK: lrvg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x0f
+
+# CHECK: lrvg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x0f
+
+# CHECK: lrvg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x0f
+
+# CHECK: lrvg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x0f
+
+# CHECK: lrvr %r0, %r0
+0xb9 0x1f 0x00 0x00
+
+# CHECK: lrvr %r0, %r15
+0xb9 0x1f 0x00 0x0f
+
+# CHECK: lrvr %r15, %r0
+0xb9 0x1f 0x00 0xf0
+
+# CHECK: lrvr %r7, %r8
+0xb9 0x1f 0x00 0x78
+
+# CHECK: lrvr %r15, %r15
+0xb9 0x1f 0x00 0xff
+
+# CHECK: lrv %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x1e
+
+# CHECK: lrv %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x1e
+
+# CHECK: lrv %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x1e
+
+# CHECK: lrv %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x1e
+
+# CHECK: lrv %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x1e
+
+# CHECK: lrv %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x1e
+
+# CHECK: lrv %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x1e
+
+# CHECK: lrv %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x1e
+
+# CHECK: lrv %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x1e
+
+# CHECK: lrv %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x1e
+
+# CHECK: l %r0, 0
+0x58 0x00 0x00 0x00
+
+# CHECK: l %r0, 4095
+0x58 0x00 0x0f 0xff
+
+# CHECK: l %r0, 0(%r1)
+0x58 0x00 0x10 0x00
+
+# CHECK: l %r0, 0(%r15)
+0x58 0x00 0xf0 0x00
+
+# CHECK: l %r0, 4095(%r1,%r15)
+0x58 0x01 0xff 0xff
+
+# CHECK: l %r0, 4095(%r15,%r1)
+0x58 0x0f 0x1f 0xff
+
+# CHECK: l %r15, 0
+0x58 0xf0 0x00 0x00
+
+# CHECK: lxr %f0, %f8
+0xb3 0x65 0x00 0x08
+
+# CHECK: lxr %f0, %f13
+0xb3 0x65 0x00 0x0d
+
+# CHECK: lxr %f13, %f0
+0xb3 0x65 0x00 0xd0
+
+# CHECK: lxr %f13, %f9
+0xb3 0x65 0x00 0xd9
+
+# CHECK: ly %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x58
+
+# CHECK: ly %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x58
+
+# CHECK: ly %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x58
+
+# CHECK: ly %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x58
+
+# CHECK: ly %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x58
+
+# CHECK: ly %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x58
+
+# CHECK: ly %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x58
+
+# CHECK: ly %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x58
+
+# CHECK: ly %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x58
+
+# CHECK: ly %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x58
+
+# CHECK: lzdr %f0
+0xb3 0x75 0x00 0x00
+
+# CHECK: lzdr %f7
+0xb3 0x75 0x00 0x70
+
+# CHECK: lzdr %f15
+0xb3 0x75 0x00 0xf0
+
+# CHECK: lzer %f0
+0xb3 0x74 0x00 0x00
+
+# CHECK: lzer %f7
+0xb3 0x74 0x00 0x70
+
+# CHECK: lzer %f15
+0xb3 0x74 0x00 0xf0
+
+# CHECK: lzxr %f0
+0xb3 0x76 0x00 0x00
+
+# CHECK: lzxr %f8
+0xb3 0x76 0x00 0x80
+
+# CHECK: lzxr %f13
+0xb3 0x76 0x00 0xd0
+
+# CHECK: madbr %f0, %f0, %f0
+0xb3 0x1e 0x00 0x00
+
+# CHECK: madbr %f0, %f0, %f15
+0xb3 0x1e 0x00 0x0f
+
+# CHECK: madbr %f0, %f15, %f0
+0xb3 0x1e 0x00 0xf0
+
+# CHECK: madbr %f15, %f0, %f0
+0xb3 0x1e 0xf0 0x00
+
+# CHECK: madbr %f7, %f8, %f9
+0xb3 0x1e 0x70 0x89
+
+# CHECK: madbr %f15, %f15, %f15
+0xb3 0x1e 0xf0 0xff
+
+# CHECK: madb %f0, %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x1e
+
+# CHECK: madb %f0, %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x1e
+
+# CHECK: madb %f0, %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x1e
+
+# CHECK: madb %f0, %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x1e
+
+# CHECK: madb %f0, %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x1e
+
+# CHECK: madb %f0, %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x1e
+
+# CHECK: madb %f0, %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x1e
+
+# CHECK: madb %f15, %f0, 0
+0xed 0x00 0x00 0x00 0xf0 0x1e
+
+# CHECK: madb %f15, %f15, 0
+0xed 0xf0 0x00 0x00 0xf0 0x1e
+
+# CHECK: maebr %f0, %f0, %f0
+0xb3 0x0e 0x00 0x00
+
+# CHECK: maebr %f0, %f0, %f15
+0xb3 0x0e 0x00 0x0f
+
+# CHECK: maebr %f0, %f15, %f0
+0xb3 0x0e 0x00 0xf0
+
+# CHECK: maebr %f15, %f0, %f0
+0xb3 0x0e 0xf0 0x00
+
+# CHECK: maebr %f7, %f8, %f9
+0xb3 0x0e 0x70 0x89
+
+# CHECK: maebr %f15, %f15, %f15
+0xb3 0x0e 0xf0 0xff
+
+# CHECK: maeb %f0, %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x0e
+
+# CHECK: maeb %f0, %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x0e
+
+# CHECK: maeb %f0, %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x0e
+
+# CHECK: maeb %f0, %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x0e
+
+# CHECK: maeb %f0, %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x0e
+
+# CHECK: maeb %f0, %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x0e
+
+# CHECK: maeb %f0, %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x0e
+
+# CHECK: maeb %f15, %f0, 0
+0xed 0x00 0x00 0x00 0xf0 0x0e
+
+# CHECK: maeb %f15, %f15, 0
+0xed 0xf0 0x00 0x00 0xf0 0x0e
+
+# CHECK: mdbr %f0, %f0
+0xb3 0x1c 0x00 0x00
+
+# CHECK: mdbr %f0, %f15
+0xb3 0x1c 0x00 0x0f
+
+# CHECK: mdbr %f7, %f8
+0xb3 0x1c 0x00 0x78
+
+# CHECK: mdbr %f15, %f0
+0xb3 0x1c 0x00 0xf0
+
+# CHECK: mdb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x1c
+
+# CHECK: mdb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x1c
+
+# CHECK: mdb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x1c
+
+# CHECK: mdb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x1c
+
+# CHECK: mdb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x1c
+
+# CHECK: mdb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x1c
+
+# CHECK: mdb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x1c
+
+# CHECK: mdebr %f0, %f0
+0xb3 0x0c 0x00 0x00
+
+# CHECK: mdebr %f0, %f15
+0xb3 0x0c 0x00 0x0f
+
+# CHECK: mdebr %f7, %f8
+0xb3 0x0c 0x00 0x78
+
+# CHECK: mdebr %f15, %f0
+0xb3 0x0c 0x00 0xf0
+
+# CHECK: mdeb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x0c
+
+# CHECK: mdeb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x0c
+
+# CHECK: mdeb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x0c
+
+# CHECK: mdeb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x0c
+
+# CHECK: mdeb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x0c
+
+# CHECK: mdeb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x0c
+
+# CHECK: mdeb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x0c
+
+# CHECK: meebr %f0, %f0
+0xb3 0x17 0x00 0x00
+
+# CHECK: meebr %f0, %f15
+0xb3 0x17 0x00 0x0f
+
+# CHECK: meebr %f7, %f8
+0xb3 0x17 0x00 0x78
+
+# CHECK: meebr %f15, %f0
+0xb3 0x17 0x00 0xf0
+
+# CHECK: meeb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x17
+
+# CHECK: meeb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x17
+
+# CHECK: meeb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x17
+
+# CHECK: meeb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x17
+
+# CHECK: meeb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x17
+
+# CHECK: meeb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x17
+
+# CHECK: meeb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x17
+
+# CHECK: mghi %r0, -32768
+0xa7 0x0d 0x80 0x00
+
+# CHECK: mghi %r0, -1
+0xa7 0x0d 0xff 0xff
+
+# CHECK: mghi %r0, 0
+0xa7 0x0d 0x00 0x00
+
+# CHECK: mghi %r0, 1
+0xa7 0x0d 0x00 0x01
+
+# CHECK: mghi %r0, 32767
+0xa7 0x0d 0x7f 0xff
+
+# CHECK: mghi %r15, 0
+0xa7 0xfd 0x00 0x00
+
+# CHECK: mhi %r0, -32768
+0xa7 0x0c 0x80 0x00
+
+# CHECK: mhi %r0, -1
+0xa7 0x0c 0xff 0xff
+
+# CHECK: mhi %r0, 0
+0xa7 0x0c 0x00 0x00
+
+# CHECK: mhi %r0, 1
+0xa7 0x0c 0x00 0x01
+
+# CHECK: mhi %r0, 32767
+0xa7 0x0c 0x7f 0xff
+
+# CHECK: mhi %r15, 0
+0xa7 0xfc 0x00 0x00
+
+# CHECK: mh %r0, 0
+0x4c 0x00 0x00 0x00
+
+# CHECK: mh %r0, 4095
+0x4c 0x00 0x0f 0xff
+
+# CHECK: mh %r0, 0(%r1)
+0x4c 0x00 0x10 0x00
+
+# CHECK: mh %r0, 0(%r15)
+0x4c 0x00 0xf0 0x00
+
+# CHECK: mh %r0, 4095(%r1,%r15)
+0x4c 0x01 0xff 0xff
+
+# CHECK: mh %r0, 4095(%r15,%r1)
+0x4c 0x0f 0x1f 0xff
+
+# CHECK: mh %r15, 0
+0x4c 0xf0 0x00 0x00
+
+# CHECK: mhy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x7c
+
+# CHECK: mhy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x7c
+
+# CHECK: mhy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x7c
+
+# CHECK: mhy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x7c
+
+# CHECK: mhy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x7c
+
+# CHECK: mhy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x7c
+
+# CHECK: mhy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x7c
+
+# CHECK: mhy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x7c
+
+# CHECK: mhy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x7c
+
+# CHECK: mhy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x7c
+
+# CHECK: mlgr %r0, %r0
+0xb9 0x86 0x00 0x00
+
+# CHECK: mlgr %r0, %r15
+0xb9 0x86 0x00 0x0f
+
+# CHECK: mlgr %r14, %r0
+0xb9 0x86 0x00 0xe0
+
+# CHECK: mlgr %r6, %r9
+0xb9 0x86 0x00 0x69
+
+# CHECK: mlg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x86
+
+# CHECK: mlg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x86
+
+# CHECK: mlg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x86
+
+# CHECK: mlg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x86
+
+# CHECK: mlg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x86
+
+# CHECK: mlg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x86
+
+# CHECK: mlg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x86
+
+# CHECK: mlg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x86
+
+# CHECK: mlg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x86
+
+# CHECK: mlg %r14, 0
+0xe3 0xe0 0x00 0x00 0x00 0x86
+
+# CHECK: msdbr %f0, %f0, %f0
+0xb3 0x1f 0x00 0x00
+
+# CHECK: msdbr %f0, %f0, %f15
+0xb3 0x1f 0x00 0x0f
+
+# CHECK: msdbr %f0, %f15, %f0
+0xb3 0x1f 0x00 0xf0
+
+# CHECK: msdbr %f15, %f0, %f0
+0xb3 0x1f 0xf0 0x00
+
+# CHECK: msdbr %f7, %f8, %f9
+0xb3 0x1f 0x70 0x89
+
+# CHECK: msdbr %f15, %f15, %f15
+0xb3 0x1f 0xf0 0xff
+
+# CHECK: msdb %f0, %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x1f
+
+# CHECK: msdb %f0, %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x1f
+
+# CHECK: msdb %f0, %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x1f
+
+# CHECK: msdb %f0, %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x1f
+
+# CHECK: msdb %f0, %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x1f
+
+# CHECK: msdb %f0, %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x1f
+
+# CHECK: msdb %f0, %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x1f
+
+# CHECK: msdb %f15, %f0, 0
+0xed 0x00 0x00 0x00 0xf0 0x1f
+
+# CHECK: msdb %f15, %f15, 0
+0xed 0xf0 0x00 0x00 0xf0 0x1f
+
+# CHECK: msebr %f0, %f0, %f0
+0xb3 0x0f 0x00 0x00
+
+# CHECK: msebr %f0, %f0, %f15
+0xb3 0x0f 0x00 0x0f
+
+# CHECK: msebr %f0, %f15, %f0
+0xb3 0x0f 0x00 0xf0
+
+# CHECK: msebr %f15, %f0, %f0
+0xb3 0x0f 0xf0 0x00
+
+# CHECK: msebr %f7, %f8, %f9
+0xb3 0x0f 0x70 0x89
+
+# CHECK: msebr %f15, %f15, %f15
+0xb3 0x0f 0xf0 0xff
+
+# CHECK: mseb %f0, %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x0f
+
+# CHECK: mseb %f0, %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x0f
+
+# CHECK: mseb %f0, %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x0f
+
+# CHECK: mseb %f0, %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x0f
+
+# CHECK: mseb %f0, %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x0f
+
+# CHECK: mseb %f0, %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x0f
+
+# CHECK: mseb %f0, %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x0f
+
+# CHECK: mseb %f15, %f0, 0
+0xed 0x00 0x00 0x00 0xf0 0x0f
+
+# CHECK: mseb %f15, %f15, 0
+0xed 0xf0 0x00 0x00 0xf0 0x0f
+
+# CHECK: msfi %r0, -2147483648
+0xc2 0x01 0x80 0x00 0x00 0x00
+
+# CHECK: msfi %r0, -1
+0xc2 0x01 0xff 0xff 0xff 0xff
+
+# CHECK: msfi %r0, 0
+0xc2 0x01 0x00 0x00 0x00 0x00
+
+# CHECK: msfi %r0, 1
+0xc2 0x01 0x00 0x00 0x00 0x01
+
+# CHECK: msfi %r0, 2147483647
+0xc2 0x01 0x7f 0xff 0xff 0xff
+
+# CHECK: msfi %r15, 0
+0xc2 0xf1 0x00 0x00 0x00 0x00
+
+# CHECK: msgfi %r0, -2147483648
+0xc2 0x00 0x80 0x00 0x00 0x00
+
+# CHECK: msgfi %r0, -1
+0xc2 0x00 0xff 0xff 0xff 0xff
+
+# CHECK: msgfi %r0, 0
+0xc2 0x00 0x00 0x00 0x00 0x00
+
+# CHECK: msgfi %r0, 1
+0xc2 0x00 0x00 0x00 0x00 0x01
+
+# CHECK: msgfi %r0, 2147483647
+0xc2 0x00 0x7f 0xff 0xff 0xff
+
+# CHECK: msgfi %r15, 0
+0xc2 0xf0 0x00 0x00 0x00 0x00
+
+# CHECK: msgfr %r0, %r0
+0xb9 0x1c 0x00 0x00
+
+# CHECK: msgfr %r0, %r15
+0xb9 0x1c 0x00 0x0f
+
+# CHECK: msgfr %r15, %r0
+0xb9 0x1c 0x00 0xf0
+
+# CHECK: msgfr %r7, %r8
+0xb9 0x1c 0x00 0x78
+
+# CHECK: msgf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x1c
+
+# CHECK: msgf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x1c
+
+# CHECK: msgf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x1c
+
+# CHECK: msgf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x1c
+
+# CHECK: msgf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x1c
+
+# CHECK: msgf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x1c
+
+# CHECK: msgf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x1c
+
+# CHECK: msgf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x1c
+
+# CHECK: msgf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x1c
+
+# CHECK: msgf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x1c
+
+# CHECK: msgr %r0, %r0
+0xb9 0x0c 0x00 0x00
+
+# CHECK: msgr %r0, %r15
+0xb9 0x0c 0x00 0x0f
+
+# CHECK: msgr %r15, %r0
+0xb9 0x0c 0x00 0xf0
+
+# CHECK: msgr %r7, %r8
+0xb9 0x0c 0x00 0x78
+
+# CHECK: msg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x0c
+
+# CHECK: msg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x0c
+
+# CHECK: msg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x0c
+
+# CHECK: msg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x0c
+
+# CHECK: msg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x0c
+
+# CHECK: msg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x0c
+
+# CHECK: msg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x0c
+
+# CHECK: msg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x0c
+
+# CHECK: msg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x0c
+
+# CHECK: msg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x0c
+
+# CHECK: msr %r0, %r0
+0xb2 0x52 0x00 0x00
+
+# CHECK: msr %r0, %r15
+0xb2 0x52 0x00 0x0f
+
+# CHECK: msr %r15, %r0
+0xb2 0x52 0x00 0xf0
+
+# CHECK: msr %r7, %r8
+0xb2 0x52 0x00 0x78
+
+# CHECK: ms %r0, 0
+0x71 0x00 0x00 0x00
+
+# CHECK: ms %r0, 4095
+0x71 0x00 0x0f 0xff
+
+# CHECK: ms %r0, 0(%r1)
+0x71 0x00 0x10 0x00
+
+# CHECK: ms %r0, 0(%r15)
+0x71 0x00 0xf0 0x00
+
+# CHECK: ms %r0, 4095(%r1,%r15)
+0x71 0x01 0xff 0xff
+
+# CHECK: ms %r0, 4095(%r15,%r1)
+0x71 0x0f 0x1f 0xff
+
+# CHECK: ms %r15, 0
+0x71 0xf0 0x00 0x00
+
+# CHECK: msy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x51
+
+# CHECK: msy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x51
+
+# CHECK: msy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x51
+
+# CHECK: msy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x51
+
+# CHECK: msy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x51
+
+# CHECK: msy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x51
+
+# CHECK: msy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x51
+
+# CHECK: msy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x51
+
+# CHECK: msy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x51
+
+# CHECK: msy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x51
+
+# CHECK: mvghi 0, 0
+0xe5 0x48 0x00 0x00 0x00 0x00
+
+# CHECK: mvghi 4095, 0
+0xe5 0x48 0x0f 0xff 0x00 0x00
+
+# CHECK: mvghi 0, -32768
+0xe5 0x48 0x00 0x00 0x80 0x00
+
+# CHECK: mvghi 0, -1
+0xe5 0x48 0x00 0x00 0xff 0xff
+
+# CHECK: mvghi 0, 0
+0xe5 0x48 0x00 0x00 0x00 0x00
+
+# CHECK: mvghi 0, 1
+0xe5 0x48 0x00 0x00 0x00 0x01
+
+# CHECK: mvghi 0, 32767
+0xe5 0x48 0x00 0x00 0x7f 0xff
+
+# CHECK: mvghi 0(%r1), 42
+0xe5 0x48 0x10 0x00 0x00 0x2a
+
+# CHECK: mvghi 0(%r15), 42
+0xe5 0x48 0xf0 0x00 0x00 0x2a
+
+# CHECK: mvghi 4095(%r1), 42
+0xe5 0x48 0x1f 0xff 0x00 0x2a
+
+# CHECK: mvghi 4095(%r15), 42
+0xe5 0x48 0xff 0xff 0x00 0x2a
+
+# CHECK: mvhhi 0, 0
+0xe5 0x44 0x00 0x00 0x00 0x00
+
+# CHECK: mvhhi 4095, 0
+0xe5 0x44 0x0f 0xff 0x00 0x00
+
+# CHECK: mvhhi 0, -32768
+0xe5 0x44 0x00 0x00 0x80 0x00
+
+# CHECK: mvhhi 0, -1
+0xe5 0x44 0x00 0x00 0xff 0xff
+
+# CHECK: mvhhi 0, 0
+0xe5 0x44 0x00 0x00 0x00 0x00
+
+# CHECK: mvhhi 0, 1
+0xe5 0x44 0x00 0x00 0x00 0x01
+
+# CHECK: mvhhi 0, 32767
+0xe5 0x44 0x00 0x00 0x7f 0xff
+
+# CHECK: mvhhi 0(%r1), 42
+0xe5 0x44 0x10 0x00 0x00 0x2a
+
+# CHECK: mvhhi 0(%r15), 42
+0xe5 0x44 0xf0 0x00 0x00 0x2a
+
+# CHECK: mvhhi 4095(%r1), 42
+0xe5 0x44 0x1f 0xff 0x00 0x2a
+
+# CHECK: mvhhi 4095(%r15), 42
+0xe5 0x44 0xff 0xff 0x00 0x2a
+
+# CHECK: mvhi 0, 0
+0xe5 0x4c 0x00 0x00 0x00 0x00
+
+# CHECK: mvhi 4095, 0
+0xe5 0x4c 0x0f 0xff 0x00 0x00
+
+# CHECK: mvhi 0, -32768
+0xe5 0x4c 0x00 0x00 0x80 0x00
+
+# CHECK: mvhi 0, -1
+0xe5 0x4c 0x00 0x00 0xff 0xff
+
+# CHECK: mvhi 0, 0
+0xe5 0x4c 0x00 0x00 0x00 0x00
+
+# CHECK: mvhi 0, 1
+0xe5 0x4c 0x00 0x00 0x00 0x01
+
+# CHECK: mvhi 0, 32767
+0xe5 0x4c 0x00 0x00 0x7f 0xff
+
+# CHECK: mvhi 0(%r1), 42
+0xe5 0x4c 0x10 0x00 0x00 0x2a
+
+# CHECK: mvhi 0(%r15), 42
+0xe5 0x4c 0xf0 0x00 0x00 0x2a
+
+# CHECK: mvhi 4095(%r1), 42
+0xe5 0x4c 0x1f 0xff 0x00 0x2a
+
+# CHECK: mvhi 4095(%r15), 42
+0xe5 0x4c 0xff 0xff 0x00 0x2a
+
+# CHECK: mvi 0, 0
+0x92 0x00 0x00 0x00
+
+# CHECK: mvi 4095, 0
+0x92 0x00 0x0f 0xff
+
+# CHECK: mvi 0, 255
+0x92 0xff 0x00 0x00
+
+# CHECK: mvi 0(%r1), 42
+0x92 0x2a 0x10 0x00
+
+# CHECK: mvi 0(%r15), 42
+0x92 0x2a 0xf0 0x00
+
+# CHECK: mvi 4095(%r1), 42
+0x92 0x2a 0x1f 0xff
+
+# CHECK: mvi 4095(%r15), 42
+0x92 0x2a 0xff 0xff
+
+# CHECK: mviy -524288, 0
+0xeb 0x00 0x00 0x00 0x80 0x52
+
+# CHECK: mviy -1, 0
+0xeb 0x00 0x0f 0xff 0xff 0x52
+
+# CHECK: mviy 0, 0
+0xeb 0x00 0x00 0x00 0x00 0x52
+
+# CHECK: mviy 1, 0
+0xeb 0x00 0x00 0x01 0x00 0x52
+
+# CHECK: mviy 524287, 0
+0xeb 0x00 0x0f 0xff 0x7f 0x52
+
+# CHECK: mviy 0, 255
+0xeb 0xff 0x00 0x00 0x00 0x52
+
+# CHECK: mviy 0(%r1), 42
+0xeb 0x2a 0x10 0x00 0x00 0x52
+
+# CHECK: mviy 0(%r15), 42
+0xeb 0x2a 0xf0 0x00 0x00 0x52
+
+# CHECK: mviy 524287(%r1), 42
+0xeb 0x2a 0x1f 0xff 0x7f 0x52
+
+# CHECK: mviy 524287(%r15), 42
+0xeb 0x2a 0xff 0xff 0x7f 0x52
+
+# CHECK: mxbr %f0, %f0
+0xb3 0x4c 0x00 0x00
+
+# CHECK: mxbr %f0, %f13
+0xb3 0x4c 0x00 0x0d
+
+# CHECK: mxbr %f8, %f5
+0xb3 0x4c 0x00 0x85
+
+# CHECK: mxbr %f13, %f13
+0xb3 0x4c 0x00 0xdd
+
+# CHECK: mxdbr %f0, %f0
+0xb3 0x07 0x00 0x00
+
+# CHECK: mxdbr %f0, %f15
+0xb3 0x07 0x00 0x0f
+
+# CHECK: mxdbr %f8, %f8
+0xb3 0x07 0x00 0x88
+
+# CHECK: mxdbr %f13, %f0
+0xb3 0x07 0x00 0xd0
+
+# CHECK: mxdb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x07
+
+# CHECK: mxdb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x07
+
+# CHECK: mxdb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x07
+
+# CHECK: mxdb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x07
+
+# CHECK: mxdb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x07
+
+# CHECK: mxdb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x07
+
+# CHECK: mxdb %f13, 0
+0xed 0xd0 0x00 0x00 0x00 0x07
+
+# CHECK: ngr %r0, %r0
+0xb9 0x80 0x00 0x00
+
+# CHECK: ngr %r0, %r15
+0xb9 0x80 0x00 0x0f
+
+# CHECK: ngr %r15, %r0
+0xb9 0x80 0x00 0xf0
+
+# CHECK: ngr %r7, %r8
+0xb9 0x80 0x00 0x78
+
+# CHECK: ng %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x80
+
+# CHECK: ng %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x80
+
+# CHECK: ng %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x80
+
+# CHECK: ng %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x80
+
+# CHECK: ng %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x80
+
+# CHECK: ng %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x80
+
+# CHECK: ng %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x80
+
+# CHECK: ng %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x80
+
+# CHECK: ng %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x80
+
+# CHECK: ng %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x80
+
+# CHECK: nihf %r0, 0
+0xc0 0x0a 0x00 0x00 0x00 0x00
+
+# CHECK: nihf %r0, 4294967295
+0xc0 0x0a 0xff 0xff 0xff 0xff
+
+# CHECK: nihf %r15, 0
+0xc0 0xfa 0x00 0x00 0x00 0x00
+
+# CHECK: nihh %r0, 0
+0xa5 0x04 0x00 0x00
+
+# CHECK: nihh %r0, 32768
+0xa5 0x04 0x80 0x00
+
+# CHECK: nihh %r0, 65535
+0xa5 0x04 0xff 0xff
+
+# CHECK: nihh %r15, 0
+0xa5 0xf4 0x00 0x00
+
+# CHECK: nihl %r0, 0
+0xa5 0x05 0x00 0x00
+
+# CHECK: nihl %r0, 32768
+0xa5 0x05 0x80 0x00
+
+# CHECK: nihl %r0, 65535
+0xa5 0x05 0xff 0xff
+
+# CHECK: nihl %r15, 0
+0xa5 0xf5 0x00 0x00
+
+# CHECK: nilf %r0, 0
+0xc0 0x0b 0x00 0x00 0x00 0x00
+
+# CHECK: nilf %r0, 4294967295
+0xc0 0x0b 0xff 0xff 0xff 0xff
+
+# CHECK: nilf %r15, 0
+0xc0 0xfb 0x00 0x00 0x00 0x00
+
+# CHECK: nilh %r0, 0
+0xa5 0x06 0x00 0x00
+
+# CHECK: nilh %r0, 32768
+0xa5 0x06 0x80 0x00
+
+# CHECK: nilh %r0, 65535
+0xa5 0x06 0xff 0xff
+
+# CHECK: nilh %r15, 0
+0xa5 0xf6 0x00 0x00
+
+# CHECK: nill %r0, 0
+0xa5 0x07 0x00 0x00
+
+# CHECK: nill %r0, 32768
+0xa5 0x07 0x80 0x00
+
+# CHECK: nill %r0, 65535
+0xa5 0x07 0xff 0xff
+
+# CHECK: nill %r15, 0
+0xa5 0xf7 0x00 0x00
+
+# CHECK: ni 0, 0
+0x94 0x00 0x00 0x00
+
+# CHECK: ni 4095, 0
+0x94 0x00 0x0f 0xff
+
+# CHECK: ni 0, 255
+0x94 0xff 0x00 0x00
+
+# CHECK: ni 0(%r1), 42
+0x94 0x2a 0x10 0x00
+
+# CHECK: ni 0(%r15), 42
+0x94 0x2a 0xf0 0x00
+
+# CHECK: ni 4095(%r1), 42
+0x94 0x2a 0x1f 0xff
+
+# CHECK: ni 4095(%r15), 42
+0x94 0x2a 0xff 0xff
+
+# CHECK: niy -524288, 0
+0xeb 0x00 0x00 0x00 0x80 0x54
+
+# CHECK: niy -1, 0
+0xeb 0x00 0x0f 0xff 0xff 0x54
+
+# CHECK: niy 0, 0
+0xeb 0x00 0x00 0x00 0x00 0x54
+
+# CHECK: niy 1, 0
+0xeb 0x00 0x00 0x01 0x00 0x54
+
+# CHECK: niy 524287, 0
+0xeb 0x00 0x0f 0xff 0x7f 0x54
+
+# CHECK: niy 0, 255
+0xeb 0xff 0x00 0x00 0x00 0x54
+
+# CHECK: niy 0(%r1), 42
+0xeb 0x2a 0x10 0x00 0x00 0x54
+
+# CHECK: niy 0(%r15), 42
+0xeb 0x2a 0xf0 0x00 0x00 0x54
+
+# CHECK: niy 524287(%r1), 42
+0xeb 0x2a 0x1f 0xff 0x7f 0x54
+
+# CHECK: niy 524287(%r15), 42
+0xeb 0x2a 0xff 0xff 0x7f 0x54
+
+# CHECK: nr %r0, %r0
+0x14 0x00
+
+# CHECK: nr %r0, %r15
+0x14 0x0f
+
+# CHECK: nr %r15, %r0
+0x14 0xf0
+
+# CHECK: nr %r7, %r8
+0x14 0x78
+
+# CHECK: n %r0, 0
+0x54 0x00 0x00 0x00
+
+# CHECK: n %r0, 4095
+0x54 0x00 0x0f 0xff
+
+# CHECK: n %r0, 0(%r1)
+0x54 0x00 0x10 0x00
+
+# CHECK: n %r0, 0(%r15)
+0x54 0x00 0xf0 0x00
+
+# CHECK: n %r0, 4095(%r1,%r15)
+0x54 0x01 0xff 0xff
+
+# CHECK: n %r0, 4095(%r15,%r1)
+0x54 0x0f 0x1f 0xff
+
+# CHECK: n %r15, 0
+0x54 0xf0 0x00 0x00
+
+# CHECK: ny %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x54
+
+# CHECK: ny %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x54
+
+# CHECK: ny %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x54
+
+# CHECK: ny %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x54
+
+# CHECK: ny %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x54
+
+# CHECK: ny %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x54
+
+# CHECK: ny %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x54
+
+# CHECK: ny %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x54
+
+# CHECK: ny %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x54
+
+# CHECK: ny %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x54
+
+# CHECK: ogr %r0, %r0
+0xb9 0x81 0x00 0x00
+
+# CHECK: ogr %r0, %r15
+0xb9 0x81 0x00 0x0f
+
+# CHECK: ogr %r15, %r0
+0xb9 0x81 0x00 0xf0
+
+# CHECK: ogr %r7, %r8
+0xb9 0x81 0x00 0x78
+
+# CHECK: og %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x81
+
+# CHECK: og %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x81
+
+# CHECK: og %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x81
+
+# CHECK: og %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x81
+
+# CHECK: og %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x81
+
+# CHECK: og %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x81
+
+# CHECK: og %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x81
+
+# CHECK: og %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x81
+
+# CHECK: og %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x81
+
+# CHECK: og %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x81
+
+# CHECK: oihf %r0, 0
+0xc0 0x0c 0x00 0x00 0x00 0x00
+
+# CHECK: oihf %r0, 4294967295
+0xc0 0x0c 0xff 0xff 0xff 0xff
+
+# CHECK: oihf %r15, 0
+0xc0 0xfc 0x00 0x00 0x00 0x00
+
+# CHECK: oihh %r0, 0
+0xa5 0x08 0x00 0x00
+
+# CHECK: oihh %r0, 32768
+0xa5 0x08 0x80 0x00
+
+# CHECK: oihh %r0, 65535
+0xa5 0x08 0xff 0xff
+
+# CHECK: oihh %r15, 0
+0xa5 0xf8 0x00 0x00
+
+# CHECK: oihl %r0, 0
+0xa5 0x09 0x00 0x00
+
+# CHECK: oihl %r0, 32768
+0xa5 0x09 0x80 0x00
+
+# CHECK: oihl %r0, 65535
+0xa5 0x09 0xff 0xff
+
+# CHECK: oihl %r15, 0
+0xa5 0xf9 0x00 0x00
+
+# CHECK: oilf %r0, 0
+0xc0 0x0d 0x00 0x00 0x00 0x00
+
+# CHECK: oilf %r0, 4294967295
+0xc0 0x0d 0xff 0xff 0xff 0xff
+
+# CHECK: oilf %r15, 0
+0xc0 0xfd 0x00 0x00 0x00 0x00
+
+# CHECK: oilh %r0, 0
+0xa5 0x0a 0x00 0x00
+
+# CHECK: oilh %r0, 32768
+0xa5 0x0a 0x80 0x00
+
+# CHECK: oilh %r0, 65535
+0xa5 0x0a 0xff 0xff
+
+# CHECK: oilh %r15, 0
+0xa5 0xfa 0x00 0x00
+
+# CHECK: oill %r0, 0
+0xa5 0x0b 0x00 0x00
+
+# CHECK: oill %r0, 32768
+0xa5 0x0b 0x80 0x00
+
+# CHECK: oill %r0, 65535
+0xa5 0x0b 0xff 0xff
+
+# CHECK: oill %r15, 0
+0xa5 0xfb 0x00 0x00
+
+# CHECK: oi 0, 0
+0x96 0x00 0x00 0x00
+
+# CHECK: oi 4095, 0
+0x96 0x00 0x0f 0xff
+
+# CHECK: oi 0, 255
+0x96 0xff 0x00 0x00
+
+# CHECK: oi 0(%r1), 42
+0x96 0x2a 0x10 0x00
+
+# CHECK: oi 0(%r15), 42
+0x96 0x2a 0xf0 0x00
+
+# CHECK: oi 4095(%r1), 42
+0x96 0x2a 0x1f 0xff
+
+# CHECK: oi 4095(%r15), 42
+0x96 0x2a 0xff 0xff
+
+# CHECK: oiy -524288, 0
+0xeb 0x00 0x00 0x00 0x80 0x56
+
+# CHECK: oiy -1, 0
+0xeb 0x00 0x0f 0xff 0xff 0x56
+
+# CHECK: oiy 0, 0
+0xeb 0x00 0x00 0x00 0x00 0x56
+
+# CHECK: oiy 1, 0
+0xeb 0x00 0x00 0x01 0x00 0x56
+
+# CHECK: oiy 524287, 0
+0xeb 0x00 0x0f 0xff 0x7f 0x56
+
+# CHECK: oiy 0, 255
+0xeb 0xff 0x00 0x00 0x00 0x56
+
+# CHECK: oiy 0(%r1), 42
+0xeb 0x2a 0x10 0x00 0x00 0x56
+
+# CHECK: oiy 0(%r15), 42
+0xeb 0x2a 0xf0 0x00 0x00 0x56
+
+# CHECK: oiy 524287(%r1), 42
+0xeb 0x2a 0x1f 0xff 0x7f 0x56
+
+# CHECK: oiy 524287(%r15), 42
+0xeb 0x2a 0xff 0xff 0x7f 0x56
+
+# CHECK: or %r0, %r0
+0x16 0x00
+
+# CHECK: or %r0, %r15
+0x16 0x0f
+
+# CHECK: or %r15, %r0
+0x16 0xf0
+
+# CHECK: or %r7, %r8
+0x16 0x78
+
+# CHECK: o %r0, 0
+0x56 0x00 0x00 0x00
+
+# CHECK: o %r0, 4095
+0x56 0x00 0x0f 0xff
+
+# CHECK: o %r0, 0(%r1)
+0x56 0x00 0x10 0x00
+
+# CHECK: o %r0, 0(%r15)
+0x56 0x00 0xf0 0x00
+
+# CHECK: o %r0, 4095(%r1,%r15)
+0x56 0x01 0xff 0xff
+
+# CHECK: o %r0, 4095(%r15,%r1)
+0x56 0x0f 0x1f 0xff
+
+# CHECK: o %r15, 0
+0x56 0xf0 0x00 0x00
+
+# CHECK: oy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x56
+
+# CHECK: oy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x56
+
+# CHECK: oy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x56
+
+# CHECK: oy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x56
+
+# CHECK: oy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x56
+
+# CHECK: oy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x56
+
+# CHECK: oy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x56
+
+# CHECK: oy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x56
+
+# CHECK: oy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x56
+
+# CHECK: oy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x56
+
+# CHECK: risbg %r0, %r0, 0, 0, 0
+0xec 0x00 0x00 0x00 0x00 0x55
+
+# CHECK: risbg %r0, %r0, 0, 0, 63
+0xec 0x00 0x00 0x00 0x3f 0x55
+
+# CHECK: risbg %r0, %r0, 0, 63, 0
+0xec 0x00 0x00 0x3f 0x00 0x55
+
+# CHECK: risbg %r0, %r0, 63, 0, 0
+0xec 0x00 0x3f 0x00 0x00 0x55
+
+# CHECK: risbg %r0, %r15, 0, 0, 0
+0xec 0x0f 0x00 0x00 0x00 0x55
+
+# CHECK: risbg %r15, %r0, 0, 0, 0
+0xec 0xf0 0x00 0x00 0x00 0x55
+
+# CHECK: risbg %r4, %r5, 6, 7, 8
+0xec 0x45 0x06 0x07 0x08 0x55
+
+# CHECK: rllg %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x1c
+
+# CHECK: rllg %r15, %r1, 0
+0xeb 0xf1 0x00 0x00 0x00 0x1c
+
+# CHECK: rllg %r1, %r15, 0
+0xeb 0x1f 0x00 0x00 0x00 0x1c
+
+# CHECK: rllg %r15, %r15, 0
+0xeb 0xff 0x00 0x00 0x00 0x1c
+
+# CHECK: rllg %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x1c
+
+# CHECK: rllg %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x1c
+
+# CHECK: rllg %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x1c
+
+# CHECK: rllg %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x1c
+
+# CHECK: rllg %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x1c
+
+# CHECK: rllg %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x1c
+
+# CHECK: rllg %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x1c
+
+# CHECK: rllg %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x1c
+
+# CHECK: rll %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x1d
+
+# CHECK: rll %r15, %r1, 0
+0xeb 0xf1 0x00 0x00 0x00 0x1d
+
+# CHECK: rll %r1, %r15, 0
+0xeb 0x1f 0x00 0x00 0x00 0x1d
+
+# CHECK: rll %r15, %r15, 0
+0xeb 0xff 0x00 0x00 0x00 0x1d
+
+# CHECK: rll %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x1d
+
+# CHECK: rll %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x1d
+
+# CHECK: rll %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x1d
+
+# CHECK: rll %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x1d
+
+# CHECK: rll %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x1d
+
+# CHECK: rll %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x1d
+
+# CHECK: rll %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x1d
+
+# CHECK: rll %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x1d
+
+# CHECK: sdbr %f0, %f0
+0xb3 0x1b 0x00 0x00
+
+# CHECK: sdbr %f0, %f15
+0xb3 0x1b 0x00 0x0f
+
+# CHECK: sdbr %f7, %f8
+0xb3 0x1b 0x00 0x78
+
+# CHECK: sdbr %f15, %f0
+0xb3 0x1b 0x00 0xf0
+
+# CHECK: sdb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x1b
+
+# CHECK: sdb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x1b
+
+# CHECK: sdb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x1b
+
+# CHECK: sdb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x1b
+
+# CHECK: sdb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x1b
+
+# CHECK: sdb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x1b
+
+# CHECK: sdb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x1b
+
+# CHECK: sebr %f0, %f0
+0xb3 0x0b 0x00 0x00
+
+# CHECK: sebr %f0, %f15
+0xb3 0x0b 0x00 0x0f
+
+# CHECK: sebr %f7, %f8
+0xb3 0x0b 0x00 0x78
+
+# CHECK: sebr %f15, %f0
+0xb3 0x0b 0x00 0xf0
+
+# CHECK: seb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x0b
+
+# CHECK: seb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x0b
+
+# CHECK: seb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x0b
+
+# CHECK: seb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x0b
+
+# CHECK: seb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x0b
+
+# CHECK: seb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x0b
+
+# CHECK: seb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x0b
+
+# CHECK: sgfr %r0, %r0
+0xb9 0x19 0x00 0x00
+
+# CHECK: sgfr %r0, %r15
+0xb9 0x19 0x00 0x0f
+
+# CHECK: sgfr %r15, %r0
+0xb9 0x19 0x00 0xf0
+
+# CHECK: sgfr %r7, %r8
+0xb9 0x19 0x00 0x78
+
+# CHECK: sgf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x19
+
+# CHECK: sgf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x19
+
+# CHECK: sgf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x19
+
+# CHECK: sgf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x19
+
+# CHECK: sgf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x19
+
+# CHECK: sgf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x19
+
+# CHECK: sgf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x19
+
+# CHECK: sgf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x19
+
+# CHECK: sgf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x19
+
+# CHECK: sgf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x19
+
+# CHECK: sgr %r0, %r0
+0xb9 0x09 0x00 0x00
+
+# CHECK: sgr %r0, %r15
+0xb9 0x09 0x00 0x0f
+
+# CHECK: sgr %r15, %r0
+0xb9 0x09 0x00 0xf0
+
+# CHECK: sgr %r7, %r8
+0xb9 0x09 0x00 0x78
+
+# CHECK: sg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x09
+
+# CHECK: sg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x09
+
+# CHECK: sg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x09
+
+# CHECK: sg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x09
+
+# CHECK: sg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x09
+
+# CHECK: sg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x09
+
+# CHECK: sg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x09
+
+# CHECK: sg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x09
+
+# CHECK: sg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x09
+
+# CHECK: sg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x09
+
+# CHECK: sh %r0, 0
+0x4b 0x00 0x00 0x00
+
+# CHECK: sh %r0, 4095
+0x4b 0x00 0x0f 0xff
+
+# CHECK: sh %r0, 0(%r1)
+0x4b 0x00 0x10 0x00
+
+# CHECK: sh %r0, 0(%r15)
+0x4b 0x00 0xf0 0x00
+
+# CHECK: sh %r0, 4095(%r1,%r15)
+0x4b 0x01 0xff 0xff
+
+# CHECK: sh %r0, 4095(%r15,%r1)
+0x4b 0x0f 0x1f 0xff
+
+# CHECK: sh %r15, 0
+0x4b 0xf0 0x00 0x00
+
+# CHECK: shy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x7b
+
+# CHECK: shy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x7b
+
+# CHECK: shy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x7b
+
+# CHECK: shy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x7b
+
+# CHECK: shy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x7b
+
+# CHECK: shy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x7b
+
+# CHECK: shy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x7b
+
+# CHECK: shy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x7b
+
+# CHECK: shy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x7b
+
+# CHECK: shy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x7b
+
+# CHECK: slbgr %r0, %r0
+0xb9 0x89 0x00 0x00
+
+# CHECK: slbgr %r0, %r15
+0xb9 0x89 0x00 0x0f
+
+# CHECK: slbgr %r15, %r0
+0xb9 0x89 0x00 0xf0
+
+# CHECK: slbgr %r7, %r8
+0xb9 0x89 0x00 0x78
+
+# CHECK: slbg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x89
+
+# CHECK: slbg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x89
+
+# CHECK: slbg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x89
+
+# CHECK: slbg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x89
+
+# CHECK: slbg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x89
+
+# CHECK: slbg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x89
+
+# CHECK: slbg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x89
+
+# CHECK: slbg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x89
+
+# CHECK: slbg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x89
+
+# CHECK: slbg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x89
+
+# CHECK: slbr %r0, %r0
+0xb9 0x99 0x00 0x00
+
+# CHECK: slbr %r0, %r15
+0xb9 0x99 0x00 0x0f
+
+# CHECK: slbr %r15, %r0
+0xb9 0x99 0x00 0xf0
+
+# CHECK: slbr %r7, %r8
+0xb9 0x99 0x00 0x78
+
+# CHECK: slb %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x99
+
+# CHECK: slb %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x99
+
+# CHECK: slb %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x99
+
+# CHECK: slb %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x99
+
+# CHECK: slb %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x99
+
+# CHECK: slb %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x99
+
+# CHECK: slb %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x99
+
+# CHECK: slb %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x99
+
+# CHECK: slb %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x99
+
+# CHECK: slb %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x99
+
+# CHECK: slfi %r0, 0
+0xc2 0x05 0x00 0x00 0x00 0x00
+
+# CHECK: slfi %r0, 4294967295
+0xc2 0x05 0xff 0xff 0xff 0xff
+
+# CHECK: slfi %r15, 0
+0xc2 0xf5 0x00 0x00 0x00 0x00
+
+# CHECK: slgfi %r0, 0
+0xc2 0x04 0x00 0x00 0x00 0x00
+
+# CHECK: slgfi %r0, 4294967295
+0xc2 0x04 0xff 0xff 0xff 0xff
+
+# CHECK: slgfi %r15, 0
+0xc2 0xf4 0x00 0x00 0x00 0x00
+
+# CHECK: slgfr %r0, %r0
+0xb9 0x1b 0x00 0x00
+
+# CHECK: slgfr %r0, %r15
+0xb9 0x1b 0x00 0x0f
+
+# CHECK: slgfr %r15, %r0
+0xb9 0x1b 0x00 0xf0
+
+# CHECK: slgfr %r7, %r8
+0xb9 0x1b 0x00 0x78
+
+# CHECK: slgf %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x1b
+
+# CHECK: slgf %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x1b
+
+# CHECK: slgf %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x1b
+
+# CHECK: slgf %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x1b
+
+# CHECK: slgf %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x1b
+
+# CHECK: slgf %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x1b
+
+# CHECK: slgf %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x1b
+
+# CHECK: slgf %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x1b
+
+# CHECK: slgf %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x1b
+
+# CHECK: slgf %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x1b
+
+# CHECK: slgr %r0, %r0
+0xb9 0x0b 0x00 0x00
+
+# CHECK: slgr %r0, %r15
+0xb9 0x0b 0x00 0x0f
+
+# CHECK: slgr %r15, %r0
+0xb9 0x0b 0x00 0xf0
+
+# CHECK: slgr %r7, %r8
+0xb9 0x0b 0x00 0x78
+
+# CHECK: slg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x0b
+
+# CHECK: slg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x0b
+
+# CHECK: slg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x0b
+
+# CHECK: slg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x0b
+
+# CHECK: slg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x0b
+
+# CHECK: slg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x0b
+
+# CHECK: slg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x0b
+
+# CHECK: slg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x0b
+
+# CHECK: slg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x0b
+
+# CHECK: slg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x0b
+
+# CHECK: sllg %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x0d
+
+# CHECK: sllg %r15, %r1, 0
+0xeb 0xf1 0x00 0x00 0x00 0x0d
+
+# CHECK: sllg %r1, %r15, 0
+0xeb 0x1f 0x00 0x00 0x00 0x0d
+
+# CHECK: sllg %r15, %r15, 0
+0xeb 0xff 0x00 0x00 0x00 0x0d
+
+# CHECK: sllg %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x0d
+
+# CHECK: sllg %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x0d
+
+# CHECK: sllg %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x0d
+
+# CHECK: sllg %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x0d
+
+# CHECK: sllg %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x0d
+
+# CHECK: sllg %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x0d
+
+# CHECK: sllg %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x0d
+
+# CHECK: sllg %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x0d
+
+# CHECK: sll %r0, 0
+0x89 0x00 0x00 0x00
+
+# CHECK: sll %r7, 0
+0x89 0x70 0x00 0x00
+
+# CHECK: sll %r15, 0
+0x89 0xf0 0x00 0x00
+
+# CHECK: sll %r0, 4095
+0x89 0x00 0x0f 0xff
+
+# CHECK: sll %r0, 0(%r1)
+0x89 0x00 0x10 0x00
+
+# CHECK: sll %r0, 0(%r15)
+0x89 0x00 0xf0 0x00
+
+# CHECK: sll %r0, 4095(%r1)
+0x89 0x00 0x1f 0xff
+
+# CHECK: sll %r0, 4095(%r15)
+0x89 0x00 0xff 0xff
+
+# CHECK: slr %r0, %r0
+0x1f 0x00
+
+# CHECK: slr %r0, %r15
+0x1f 0x0f
+
+# CHECK: slr %r15, %r0
+0x1f 0xf0
+
+# CHECK: slr %r7, %r8
+0x1f 0x78
+
+# CHECK: sl %r0, 0
+0x5f 0x00 0x00 0x00
+
+# CHECK: sl %r0, 4095
+0x5f 0x00 0x0f 0xff
+
+# CHECK: sl %r0, 0(%r1)
+0x5f 0x00 0x10 0x00
+
+# CHECK: sl %r0, 0(%r15)
+0x5f 0x00 0xf0 0x00
+
+# CHECK: sl %r0, 4095(%r1,%r15)
+0x5f 0x01 0xff 0xff
+
+# CHECK: sl %r0, 4095(%r15,%r1)
+0x5f 0x0f 0x1f 0xff
+
+# CHECK: sl %r15, 0
+0x5f 0xf0 0x00 0x00
+
+# CHECK: sly %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x5f
+
+# CHECK: sly %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x5f
+
+# CHECK: sly %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x5f
+
+# CHECK: sly %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x5f
+
+# CHECK: sly %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x5f
+
+# CHECK: sly %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x5f
+
+# CHECK: sly %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x5f
+
+# CHECK: sly %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x5f
+
+# CHECK: sly %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x5f
+
+# CHECK: sly %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x5f
+
+# CHECK: sqdbr %f0, %f0
+0xb3 0x15 0x00 0x00
+
+# CHECK: sqdbr %f0, %f15
+0xb3 0x15 0x00 0x0f
+
+# CHECK: sqdbr %f7, %f8
+0xb3 0x15 0x00 0x78
+
+# CHECK: sqdbr %f15, %f0
+0xb3 0x15 0x00 0xf0
+
+# CHECK: sqdb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x15
+
+# CHECK: sqdb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x15
+
+# CHECK: sqdb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x15
+
+# CHECK: sqdb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x15
+
+# CHECK: sqdb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x15
+
+# CHECK: sqdb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x15
+
+# CHECK: sqdb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x15
+
+# CHECK: sqebr %f0, %f0
+0xb3 0x14 0x00 0x00
+
+# CHECK: sqebr %f0, %f15
+0xb3 0x14 0x00 0x0f
+
+# CHECK: sqebr %f7, %f8
+0xb3 0x14 0x00 0x78
+
+# CHECK: sqebr %f15, %f0
+0xb3 0x14 0x00 0xf0
+
+# CHECK: sqeb %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x14
+
+# CHECK: sqeb %f0, 4095
+0xed 0x00 0x0f 0xff 0x00 0x14
+
+# CHECK: sqeb %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x14
+
+# CHECK: sqeb %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x14
+
+# CHECK: sqeb %f0, 4095(%r1,%r15)
+0xed 0x01 0xff 0xff 0x00 0x14
+
+# CHECK: sqeb %f0, 4095(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x00 0x14
+
+# CHECK: sqeb %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x14
+
+# CHECK: sqxbr %f0, %f0
+0xb3 0x16 0x00 0x00
+
+# CHECK: sqxbr %f0, %f13
+0xb3 0x16 0x00 0x0d
+
+# CHECK: sqxbr %f8, %f8
+0xb3 0x16 0x00 0x88
+
+# CHECK: sqxbr %f13, %f0
+0xb3 0x16 0x00 0xd0
+
+# CHECK: srag %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x0a
+
+# CHECK: srag %r15, %r1, 0
+0xeb 0xf1 0x00 0x00 0x00 0x0a
+
+# CHECK: srag %r1, %r15, 0
+0xeb 0x1f 0x00 0x00 0x00 0x0a
+
+# CHECK: srag %r15, %r15, 0
+0xeb 0xff 0x00 0x00 0x00 0x0a
+
+# CHECK: srag %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x0a
+
+# CHECK: srag %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x0a
+
+# CHECK: srag %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x0a
+
+# CHECK: srag %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x0a
+
+# CHECK: srag %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x0a
+
+# CHECK: srag %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x0a
+
+# CHECK: srag %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x0a
+
+# CHECK: srag %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x0a
+
+# CHECK: sra %r0, 0
+0x8a 0x00 0x00 0x00
+
+# CHECK: sra %r7, 0
+0x8a 0x70 0x00 0x00
+
+# CHECK: sra %r15, 0
+0x8a 0xf0 0x00 0x00
+
+# CHECK: sra %r0, 4095
+0x8a 0x00 0x0f 0xff
+
+# CHECK: sra %r0, 0(%r1)
+0x8a 0x00 0x10 0x00
+
+# CHECK: sra %r0, 0(%r15)
+0x8a 0x00 0xf0 0x00
+
+# CHECK: sra %r0, 4095(%r1)
+0x8a 0x00 0x1f 0xff
+
+# CHECK: sra %r0, 4095(%r15)
+0x8a 0x00 0xff 0xff
+
+# CHECK: srlg %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x0c
+
+# CHECK: srlg %r15, %r1, 0
+0xeb 0xf1 0x00 0x00 0x00 0x0c
+
+# CHECK: srlg %r1, %r15, 0
+0xeb 0x1f 0x00 0x00 0x00 0x0c
+
+# CHECK: srlg %r15, %r15, 0
+0xeb 0xff 0x00 0x00 0x00 0x0c
+
+# CHECK: srlg %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x0c
+
+# CHECK: srlg %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x0c
+
+# CHECK: srlg %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x0c
+
+# CHECK: srlg %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x0c
+
+# CHECK: srlg %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x0c
+
+# CHECK: srlg %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x0c
+
+# CHECK: srlg %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x0c
+
+# CHECK: srlg %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x0c
+
+# CHECK: srl %r0, 0
+0x88 0x00 0x00 0x00
+
+# CHECK: srl %r7, 0
+0x88 0x70 0x00 0x00
+
+# CHECK: srl %r15, 0
+0x88 0xf0 0x00 0x00
+
+# CHECK: srl %r0, 4095
+0x88 0x00 0x0f 0xff
+
+# CHECK: srl %r0, 0(%r1)
+0x88 0x00 0x10 0x00
+
+# CHECK: srl %r0, 0(%r15)
+0x88 0x00 0xf0 0x00
+
+# CHECK: srl %r0, 4095(%r1)
+0x88 0x00 0x1f 0xff
+
+# CHECK: srl %r0, 4095(%r15)
+0x88 0x00 0xff 0xff
+
+# CHECK: sr %r0, %r0
+0x1b 0x00
+
+# CHECK: sr %r0, %r15
+0x1b 0x0f
+
+# CHECK: sr %r15, %r0
+0x1b 0xf0
+
+# CHECK: sr %r7, %r8
+0x1b 0x78
+
+# CHECK: stc %r0, 0
+0x42 0x00 0x00 0x00
+
+# CHECK: stc %r0, 4095
+0x42 0x00 0x0f 0xff
+
+# CHECK: stc %r0, 0(%r1)
+0x42 0x00 0x10 0x00
+
+# CHECK: stc %r0, 0(%r15)
+0x42 0x00 0xf0 0x00
+
+# CHECK: stc %r0, 4095(%r1,%r15)
+0x42 0x01 0xff 0xff
+
+# CHECK: stc %r0, 4095(%r15,%r1)
+0x42 0x0f 0x1f 0xff
+
+# CHECK: stc %r15, 0
+0x42 0xf0 0x00 0x00
+
+# CHECK: stcy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x72
+
+# CHECK: stcy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x72
+
+# CHECK: stcy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x72
+
+# CHECK: stcy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x72
+
+# CHECK: stcy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x72
+
+# CHECK: stcy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x72
+
+# CHECK: stcy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x72
+
+# CHECK: stcy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x72
+
+# CHECK: stcy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x72
+
+# CHECK: stcy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x72
+
+# CHECK: std %f0, 0
+0x60 0x00 0x00 0x00
+
+# CHECK: std %f0, 4095
+0x60 0x00 0x0f 0xff
+
+# CHECK: std %f0, 0(%r1)
+0x60 0x00 0x10 0x00
+
+# CHECK: std %f0, 0(%r15)
+0x60 0x00 0xf0 0x00
+
+# CHECK: std %f0, 4095(%r1,%r15)
+0x60 0x01 0xff 0xff
+
+# CHECK: std %f0, 4095(%r15,%r1)
+0x60 0x0f 0x1f 0xff
+
+# CHECK: std %f15, 0
+0x60 0xf0 0x00 0x00
+
+# CHECK: stdy %f0, -524288
+0xed 0x00 0x00 0x00 0x80 0x67
+
+# CHECK: stdy %f0, -1
+0xed 0x00 0x0f 0xff 0xff 0x67
+
+# CHECK: stdy %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x67
+
+# CHECK: stdy %f0, 1
+0xed 0x00 0x00 0x01 0x00 0x67
+
+# CHECK: stdy %f0, 524287
+0xed 0x00 0x0f 0xff 0x7f 0x67
+
+# CHECK: stdy %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x67
+
+# CHECK: stdy %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x67
+
+# CHECK: stdy %f0, 524287(%r1,%r15)
+0xed 0x01 0xff 0xff 0x7f 0x67
+
+# CHECK: stdy %f0, 524287(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x7f 0x67
+
+# CHECK: stdy %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x67
+
+# CHECK: ste %f0, 0
+0x70 0x00 0x00 0x00
+
+# CHECK: ste %f0, 4095
+0x70 0x00 0x0f 0xff
+
+# CHECK: ste %f0, 0(%r1)
+0x70 0x00 0x10 0x00
+
+# CHECK: ste %f0, 0(%r15)
+0x70 0x00 0xf0 0x00
+
+# CHECK: ste %f0, 4095(%r1,%r15)
+0x70 0x01 0xff 0xff
+
+# CHECK: ste %f0, 4095(%r15,%r1)
+0x70 0x0f 0x1f 0xff
+
+# CHECK: ste %f15, 0
+0x70 0xf0 0x00 0x00
+
+# CHECK: stey %f0, -524288
+0xed 0x00 0x00 0x00 0x80 0x66
+
+# CHECK: stey %f0, -1
+0xed 0x00 0x0f 0xff 0xff 0x66
+
+# CHECK: stey %f0, 0
+0xed 0x00 0x00 0x00 0x00 0x66
+
+# CHECK: stey %f0, 1
+0xed 0x00 0x00 0x01 0x00 0x66
+
+# CHECK: stey %f0, 524287
+0xed 0x00 0x0f 0xff 0x7f 0x66
+
+# CHECK: stey %f0, 0(%r1)
+0xed 0x00 0x10 0x00 0x00 0x66
+
+# CHECK: stey %f0, 0(%r15)
+0xed 0x00 0xf0 0x00 0x00 0x66
+
+# CHECK: stey %f0, 524287(%r1,%r15)
+0xed 0x01 0xff 0xff 0x7f 0x66
+
+# CHECK: stey %f0, 524287(%r15,%r1)
+0xed 0x0f 0x1f 0xff 0x7f 0x66
+
+# CHECK: stey %f15, 0
+0xed 0xf0 0x00 0x00 0x00 0x66
+
+# CHECK: stg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x24
+
+# CHECK: stg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x24
+
+# CHECK: stg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x24
+
+# CHECK: stg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x24
+
+# CHECK: stg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x24
+
+# CHECK: stg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x24
+
+# CHECK: stg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x24
+
+# CHECK: stg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x24
+
+# CHECK: stg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x24
+
+# CHECK: stg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x24
+
+# CHECK: sth %r0, 0
+0x40 0x00 0x00 0x00
+
+# CHECK: sth %r0, 4095
+0x40 0x00 0x0f 0xff
+
+# CHECK: sth %r0, 0(%r1)
+0x40 0x00 0x10 0x00
+
+# CHECK: sth %r0, 0(%r15)
+0x40 0x00 0xf0 0x00
+
+# CHECK: sth %r0, 4095(%r1,%r15)
+0x40 0x01 0xff 0xff
+
+# CHECK: sth %r0, 4095(%r15,%r1)
+0x40 0x0f 0x1f 0xff
+
+# CHECK: sth %r15, 0
+0x40 0xf0 0x00 0x00
+
+# CHECK: sthy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x70
+
+# CHECK: sthy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x70
+
+# CHECK: sthy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x70
+
+# CHECK: sthy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x70
+
+# CHECK: sthy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x70
+
+# CHECK: sthy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x70
+
+# CHECK: sthy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x70
+
+# CHECK: sthy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x70
+
+# CHECK: sthy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x70
+
+# CHECK: sthy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x70
+
+# CHECK: stmg %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x24
+
+# CHECK: stmg %r0, %r15, 0
+0xeb 0x0f 0x00 0x00 0x00 0x24
+
+# CHECK: stmg %r14, %r15, 0
+0xeb 0xef 0x00 0x00 0x00 0x24
+
+# CHECK: stmg %r15, %r15, 0
+0xeb 0xff 0x00 0x00 0x00 0x24
+
+# CHECK: stmg %r0, %r0, -524288
+0xeb 0x00 0x00 0x00 0x80 0x24
+
+# CHECK: stmg %r0, %r0, -1
+0xeb 0x00 0x0f 0xff 0xff 0x24
+
+# CHECK: stmg %r0, %r0, 0
+0xeb 0x00 0x00 0x00 0x00 0x24
+
+# CHECK: stmg %r0, %r0, 1
+0xeb 0x00 0x00 0x01 0x00 0x24
+
+# CHECK: stmg %r0, %r0, 524287
+0xeb 0x00 0x0f 0xff 0x7f 0x24
+
+# CHECK: stmg %r0, %r0, 0(%r1)
+0xeb 0x00 0x10 0x00 0x00 0x24
+
+# CHECK: stmg %r0, %r0, 0(%r15)
+0xeb 0x00 0xf0 0x00 0x00 0x24
+
+# CHECK: stmg %r0, %r0, 524287(%r1)
+0xeb 0x00 0x1f 0xff 0x7f 0x24
+
+# CHECK: stmg %r0, %r0, 524287(%r15)
+0xeb 0x00 0xff 0xff 0x7f 0x24
+
+# CHECK: strvg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x2f
+
+# CHECK: strvg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x2f
+
+# CHECK: strvg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x2f
+
+# CHECK: strvg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x2f
+
+# CHECK: strvg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x2f
+
+# CHECK: strvg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x2f
+
+# CHECK: strvg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x2f
+
+# CHECK: strvg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x2f
+
+# CHECK: strvg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x2f
+
+# CHECK: strvg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x2f
+
+# CHECK: strv %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x3e
+
+# CHECK: strv %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x3e
+
+# CHECK: strv %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x3e
+
+# CHECK: strv %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x3e
+
+# CHECK: strv %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x3e
+
+# CHECK: strv %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x3e
+
+# CHECK: strv %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x3e
+
+# CHECK: strv %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x3e
+
+# CHECK: strv %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x3e
+
+# CHECK: strv %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x3e
+
+# CHECK: st %r0, 0
+0x50 0x00 0x00 0x00
+
+# CHECK: st %r0, 4095
+0x50 0x00 0x0f 0xff
+
+# CHECK: st %r0, 0(%r1)
+0x50 0x00 0x10 0x00
+
+# CHECK: st %r0, 0(%r15)
+0x50 0x00 0xf0 0x00
+
+# CHECK: st %r0, 4095(%r1,%r15)
+0x50 0x01 0xff 0xff
+
+# CHECK: st %r0, 4095(%r15,%r1)
+0x50 0x0f 0x1f 0xff
+
+# CHECK: st %r15, 0
+0x50 0xf0 0x00 0x00
+
+# CHECK: s %r0, 0
+0x5b 0x00 0x00 0x00
+
+# CHECK: s %r0, 4095
+0x5b 0x00 0x0f 0xff
+
+# CHECK: s %r0, 0(%r1)
+0x5b 0x00 0x10 0x00
+
+# CHECK: s %r0, 0(%r15)
+0x5b 0x00 0xf0 0x00
+
+# CHECK: s %r0, 4095(%r1,%r15)
+0x5b 0x01 0xff 0xff
+
+# CHECK: s %r0, 4095(%r15,%r1)
+0x5b 0x0f 0x1f 0xff
+
+# CHECK: s %r15, 0
+0x5b 0xf0 0x00 0x00
+
+# CHECK: sty %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x50
+
+# CHECK: sty %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x50
+
+# CHECK: sty %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x50
+
+# CHECK: sty %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x50
+
+# CHECK: sty %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x50
+
+# CHECK: sty %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x50
+
+# CHECK: sty %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x50
+
+# CHECK: sty %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x50
+
+# CHECK: sty %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x50
+
+# CHECK: sty %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x50
+
+# CHECK: sxbr %f0, %f0
+0xb3 0x4b 0x00 0x00
+
+# CHECK: sxbr %f0, %f13
+0xb3 0x4b 0x00 0x0d
+
+# CHECK: sxbr %f8, %f8
+0xb3 0x4b 0x00 0x88
+
+# CHECK: sxbr %f13, %f0
+0xb3 0x4b 0x00 0xd0
+
+# CHECK: sy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x5b
+
+# CHECK: sy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x5b
+
+# CHECK: sy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x5b
+
+# CHECK: sy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x5b
+
+# CHECK: sy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x5b
+
+# CHECK: sy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x5b
+
+# CHECK: sy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x5b
+
+# CHECK: sy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x5b
+
+# CHECK: sy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x5b
+
+# CHECK: sy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x5b
+
+# CHECK: xgr %r0, %r0
+0xb9 0x82 0x00 0x00
+
+# CHECK: xgr %r0, %r15
+0xb9 0x82 0x00 0x0f
+
+# CHECK: xgr %r15, %r0
+0xb9 0x82 0x00 0xf0
+
+# CHECK: xgr %r7, %r8
+0xb9 0x82 0x00 0x78
+
+# CHECK: xg %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x82
+
+# CHECK: xg %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x82
+
+# CHECK: xg %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x82
+
+# CHECK: xg %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x82
+
+# CHECK: xg %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x82
+
+# CHECK: xg %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x82
+
+# CHECK: xg %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x82
+
+# CHECK: xg %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x82
+
+# CHECK: xg %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x82
+
+# CHECK: xg %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x82
+
+# CHECK: xihf %r0, 0
+0xc0 0x06 0x00 0x00 0x00 0x00
+
+# CHECK: xihf %r0, 4294967295
+0xc0 0x06 0xff 0xff 0xff 0xff
+
+# CHECK: xihf %r15, 0
+0xc0 0xf6 0x00 0x00 0x00 0x00
+
+# CHECK: xilf %r0, 0
+0xc0 0x07 0x00 0x00 0x00 0x00
+
+# CHECK: xilf %r0, 4294967295
+0xc0 0x07 0xff 0xff 0xff 0xff
+
+# CHECK: xilf %r15, 0
+0xc0 0xf7 0x00 0x00 0x00 0x00
+
+# CHECK: xi 0, 0
+0x97 0x00 0x00 0x00
+
+# CHECK: xi 4095, 0
+0x97 0x00 0x0f 0xff
+
+# CHECK: xi 0, 255
+0x97 0xff 0x00 0x00
+
+# CHECK: xi 0(%r1), 42
+0x97 0x2a 0x10 0x00
+
+# CHECK: xi 0(%r15), 42
+0x97 0x2a 0xf0 0x00
+
+# CHECK: xi 4095(%r1), 42
+0x97 0x2a 0x1f 0xff
+
+# CHECK: xi 4095(%r15), 42
+0x97 0x2a 0xff 0xff
+
+# CHECK: xiy -524288, 0
+0xeb 0x00 0x00 0x00 0x80 0x57
+
+# CHECK: xiy -1, 0
+0xeb 0x00 0x0f 0xff 0xff 0x57
+
+# CHECK: xiy 0, 0
+0xeb 0x00 0x00 0x00 0x00 0x57
+
+# CHECK: xiy 1, 0
+0xeb 0x00 0x00 0x01 0x00 0x57
+
+# CHECK: xiy 524287, 0
+0xeb 0x00 0x0f 0xff 0x7f 0x57
+
+# CHECK: xiy 0, 255
+0xeb 0xff 0x00 0x00 0x00 0x57
+
+# CHECK: xiy 0(%r1), 42
+0xeb 0x2a 0x10 0x00 0x00 0x57
+
+# CHECK: xiy 0(%r15), 42
+0xeb 0x2a 0xf0 0x00 0x00 0x57
+
+# CHECK: xiy 524287(%r1), 42
+0xeb 0x2a 0x1f 0xff 0x7f 0x57
+
+# CHECK: xiy 524287(%r15), 42
+0xeb 0x2a 0xff 0xff 0x7f 0x57
+
+# CHECK: xr %r0, %r0
+0x17 0x00
+
+# CHECK: xr %r0, %r15
+0x17 0x0f
+
+# CHECK: xr %r15, %r0
+0x17 0xf0
+
+# CHECK: xr %r7, %r8
+0x17 0x78
+
+# CHECK: x %r0, 0
+0x57 0x00 0x00 0x00
+
+# CHECK: x %r0, 4095
+0x57 0x00 0x0f 0xff
+
+# CHECK: x %r0, 0(%r1)
+0x57 0x00 0x10 0x00
+
+# CHECK: x %r0, 0(%r15)
+0x57 0x00 0xf0 0x00
+
+# CHECK: x %r0, 4095(%r1,%r15)
+0x57 0x01 0xff 0xff
+
+# CHECK: x %r0, 4095(%r15,%r1)
+0x57 0x0f 0x1f 0xff
+
+# CHECK: x %r15, 0
+0x57 0xf0 0x00 0x00
+
+# CHECK: xy %r0, -524288
+0xe3 0x00 0x00 0x00 0x80 0x57
+
+# CHECK: xy %r0, -1
+0xe3 0x00 0x0f 0xff 0xff 0x57
+
+# CHECK: xy %r0, 0
+0xe3 0x00 0x00 0x00 0x00 0x57
+
+# CHECK: xy %r0, 1
+0xe3 0x00 0x00 0x01 0x00 0x57
+
+# CHECK: xy %r0, 524287
+0xe3 0x00 0x0f 0xff 0x7f 0x57
+
+# CHECK: xy %r0, 0(%r1)
+0xe3 0x00 0x10 0x00 0x00 0x57
+
+# CHECK: xy %r0, 0(%r15)
+0xe3 0x00 0xf0 0x00 0x00 0x57
+
+# CHECK: xy %r0, 524287(%r1,%r15)
+0xe3 0x01 0xff 0xff 0x7f 0x57
+
+# CHECK: xy %r0, 524287(%r15,%r1)
+0xe3 0x0f 0x1f 0xff 0x7f 0x57
+
+# CHECK: xy %r15, 0
+0xe3 0xf0 0x00 0x00 0x00 0x57
diff --git a/test/MC/Disassembler/SystemZ/invalid-regs.txt b/test/MC/Disassembler/SystemZ/invalid-regs.txt
new file mode 100644
index 0000000000..12440677ba
--- /dev/null
+++ b/test/MC/Disassembler/SystemZ/invalid-regs.txt
@@ -0,0 +1,22 @@
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu < %s 2>&1 | FileCheck %s
+
+# This would be "axbr %f14, %f0", but %r14 is invalid.
+#
+# CHECK: warning: invalid instruction encoding
+# CHECK-NEXT: 0xb3 0x4a 0x00 0xe0
+# CHECK-NEXT: ^
+0xb3 0x4a 0x00 0xe0
+
+# This would be "axbr %f0, %f2", but %f2 is invalid.
+#
+# CHECK-NEXT: warning: invalid instruction encoding
+# CHECK-NEXT: 0xb3 0x4a 0x00 0x02
+# CHECK-NEXT: ^
+0xb3 0x4a 0x00 0x02
+
+# This would be "dlr %r1, %r8", but %r1 is invalid.
+#
+# CHECK-NEXT: warning: invalid instruction encoding
+# CHECK-NEXT: 0xb9 0x97 0x00 0x18
+# CHECK-NEXT: ^
+0xb9 0x97 0x00 0x18
diff --git a/test/MC/Disassembler/SystemZ/lit.local.cfg b/test/MC/Disassembler/SystemZ/lit.local.cfg
new file mode 100644
index 0000000000..1da00eaef3
--- /dev/null
+++ b/test/MC/Disassembler/SystemZ/lit.local.cfg
@@ -0,0 +1,6 @@
+config.suffixes = ['.txt']
+
+targets = set(config.root.targets_to_build.split())
+if not 'SystemZ' in targets:
+ config.unsupported = True
+
diff --git a/test/MC/Disassembler/SystemZ/trunc-01.txt b/test/MC/Disassembler/SystemZ/trunc-01.txt
new file mode 100644
index 0000000000..336142ddea
--- /dev/null
+++ b/test/MC/Disassembler/SystemZ/trunc-01.txt
@@ -0,0 +1,5 @@
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu 2>&1 | FileCheck %s
+# Every instruction must be at least two bytes long.
+# CHECK: warning: invalid instruction encoding
+# CHECK-NEXT: 0xc4
+0xc4
diff --git a/test/MC/Disassembler/SystemZ/trunc-02.txt b/test/MC/Disassembler/SystemZ/trunc-02.txt
new file mode 100644
index 0000000000..e1e20516e8
--- /dev/null
+++ b/test/MC/Disassembler/SystemZ/trunc-02.txt
@@ -0,0 +1,5 @@
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu 2>&1 | FileCheck %s
+# If the top bits are 0b10, the instruction must be 4 bytes long.
+# CHECK: warning: invalid instruction encoding
+# CHECK-NEXT: 0xb9 0x08 0x00
+0xb9 0x08 0x00
diff --git a/test/MC/Disassembler/SystemZ/trunc-03.txt b/test/MC/Disassembler/SystemZ/trunc-03.txt
new file mode 100644
index 0000000000..94d0c37896
--- /dev/null
+++ b/test/MC/Disassembler/SystemZ/trunc-03.txt
@@ -0,0 +1,5 @@
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu 2>&1 | FileCheck %s
+# If the top bits are 0b11, the instruction must be 6 bytes long.
+# CHECK: warning: invalid instruction encoding
+# CHECK-NEXT: 0xed 0x00 0x00 0x00 0x00
+0xed 0x00 0x00 0x00 0x00
diff --git a/test/MC/Disassembler/SystemZ/unmapped.txt b/test/MC/Disassembler/SystemZ/unmapped.txt
new file mode 100644
index 0000000000..9379ff6319
--- /dev/null
+++ b/test/MC/Disassembler/SystemZ/unmapped.txt
@@ -0,0 +1,32 @@
+# RUN: llvm-mc --disassemble %s -triple=s390x-linux-gnu 2>&1 | FileCheck %s
+
+# An unmapped 2-byte instruction
+#
+# CHECK: warning: invalid instruction encoding
+# CHECK-NEXT: 0x01
+# CHECK-NEXT: ^
+0x01
+0x10
+
+# An unmapped 4-byte instruction
+#
+# CHECK-NEXT: warning: invalid instruction encoding
+# CHECK-NEXT: 0x53
+# CHECK-NEXT: ^
+0x53
+0x00 0x00 0x00
+
+# An unmapped 6-byte instruction
+#
+# CHECK-NEXT: warning: invalid instruction encoding
+# CHECK-NEXT: 0xff
+# CHECK-NEXT: ^
+0xff
+0x00 0x00 0x00 0x00 0x00
+
+# A trailing zero (also unmapped)
+#
+# CHECK-NEXT: warning: invalid instruction encoding
+# CHECK-NEXT: 0x00
+# CHECK-NEXT: ^
+0x00
diff --git a/test/MC/Mips/mips-alu-instructions.s b/test/MC/Mips/mips-alu-instructions.s
index 586e88bc48..0df6f85442 100644
--- a/test/MC/Mips/mips-alu-instructions.s
+++ b/test/MC/Mips/mips-alu-instructions.s
@@ -70,6 +70,7 @@
# CHECK: addiu $9, $6, -15001 # encoding: [0x67,0xc5,0xc9,0x24]
# CHECK: addi $9, $6, 17767 # encoding: [0x67,0x45,0xc9,0x20]
# CHECK: addiu $9, $6, -15001 # encoding: [0x67,0xc5,0xc9,0x24]
+# CHECK: addiu $11, $11, 40 # encoding: [0x28,0x00,0x6b,0x25]
# CHECK: addu $9, $6, $7 # encoding: [0x21,0x48,0xc7,0x00]
# CHECK: madd $6, $7 # encoding: [0x00,0x00,0xc7,0x70]
# CHECK: maddu $6, $7 # encoding: [0x01,0x00,0xc7,0x70]
@@ -91,6 +92,7 @@
addu $9,$6,-15001
addi $9,$6,17767
addiu $9,$6,-15001
+ addiu $11,40
addu $9,$6,$7
madd $6,$7
maddu $6,$7
diff --git a/test/MC/PowerPC/ppc64-encoding.s b/test/MC/PowerPC/ppc64-encoding.s
index dda7960638..a955f4f807 100644
--- a/test/MC/PowerPC/ppc64-encoding.s
+++ b/test/MC/PowerPC/ppc64-encoding.s
@@ -41,7 +41,8 @@
# System call instruction
-# FIXME: sc 1
+# CHECK: sc 1 # encoding: [0x44,0x00,0x00,0x22]
+ sc 1
# Fixed-point facility
diff --git a/test/MC/PowerPC/ppc64-fixup-apply.s b/test/MC/PowerPC/ppc64-fixup-apply.s
new file mode 100644
index 0000000000..a64052bc46
--- /dev/null
+++ b/test/MC/PowerPC/ppc64-fixup-apply.s
@@ -0,0 +1,38 @@
+
+# RUN: llvm-mc -triple powerpc64-unknown-unknown -filetype=obj %s | \
+# RUN: llvm-readobj -s -sd | FileCheck %s
+
+# This checks that fixups that can be resolved within the same
+# object file are applied correctly.
+
+.data
+
+.quad v1
+.word v2
+.short v3
+.byte v4
+
+.set v1, 0x123456789abcdef0
+.set v2, 0x87654321
+.set v3, 0xbeef
+.set v4, 0x42
+
+# CHECK: Section {
+# CHECK: Name: .data
+# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Flags [
+# CHECK-NEXT: SHF_ALLOC
+# CHECK-NEXT: SHF_WRITE
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x0
+# CHECK-NEXT: Offset:
+# CHECK-NEXT: Size: 15
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 4
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: SectionData (
+# CHECK-NEXT: 0000: 12345678 9ABCDEF0 87654321 BEEF42
+# CHECK-NEXT: )
+# CHECK-NEXT: }
+
diff --git a/test/MC/PowerPC/ppc64-fixups.s b/test/MC/PowerPC/ppc64-fixups.s
index 281dce3f9e..06b2ffd303 100644
--- a/test/MC/PowerPC/ppc64-fixups.s
+++ b/test/MC/PowerPC/ppc64-fixups.s
@@ -8,113 +8,113 @@
# FIXME: .TOC.@tocbase
# CHECK: li 3, target@l # encoding: [0x38,0x60,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_ADDR16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
li 3, target@l
# CHECK: addis 3, 3, target@ha # encoding: [0x3c,0x63,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@ha, kind: fixup_ppc_ha16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_ADDR16_HA target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@ha, kind: fixup_ppc_ha16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HA target 0x0
addis 3, 3, target@ha
# CHECK: lis 3, target@ha # encoding: [0x3c,0x60,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@ha, kind: fixup_ppc_ha16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_ADDR16_HA target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@ha, kind: fixup_ppc_ha16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_HA target 0x0
lis 3, target@ha
# CHECK: addi 4, 3, target@l # encoding: [0x38,0x83,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_ADDR16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
addi 4, 3, target@l
# CHECK: lwz 1, target@l(3) # encoding: [0x80,0x23,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_ADDR16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO target 0x0
lwz 1, target@l(3)
# CHECK: ld 1, target@l(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@l, kind: fixup_ppc_lo16_ds
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_ADDR16_LO_DS target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@l, kind: fixup_ppc_lo16_ds
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_ADDR16_LO_DS target 0x0
ld 1, target@l(3)
# CHECK: ld 1, target@toc(2) # encoding: [0xe8,0x22,A,0bAAAAAA00]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@toc, kind: fixup_ppc_lo16_ds
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_DS target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@toc, kind: fixup_ppc_lo16_ds
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_DS target 0x0
ld 1, target@toc(2)
# CHECK: addis 3, 2, target@toc@ha # encoding: [0x3c,0x62,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@toc@ha, kind: fixup_ppc_ha16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_HA target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@toc@ha, kind: fixup_ppc_ha16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_HA target 0x0
addis 3, 2, target@toc@ha
# CHECK: addi 4, 3, target@toc@l # encoding: [0x38,0x83,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@toc@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO target 0x0
addi 4, 3, target@toc@l
# CHECK: lwz 1, target@toc@l(3) # encoding: [0x80,0x23,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@toc@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO target 0x0
lwz 1, target@toc@l(3)
# CHECK: ld 1, target@toc@l(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@toc@l, kind: fixup_ppc_lo16_ds
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_LO_DS target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@toc@l, kind: fixup_ppc_lo16_ds
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TOC16_LO_DS target 0x0
ld 1, target@toc@l(3)
# FIXME: @tls
# CHECK: addis 3, 2, target@tprel@ha # encoding: [0x3c,0x62,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@tprel@ha, kind: fixup_ppc_ha16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_TPREL16_HA target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel@ha, kind: fixup_ppc_ha16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HA target 0x0
addis 3, 2, target@tprel@ha
# CHECK: addi 3, 3, target@tprel@l # encoding: [0x38,0x63,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@tprel@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_TPREL16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_LO target 0x0
addi 3, 3, target@tprel@l
# CHECK: addis 3, 2, target@dtprel@ha # encoding: [0x3c,0x62,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@dtprel@ha, kind: fixup_ppc_ha16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_DTPREL16_HA target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@ha, kind: fixup_ppc_ha16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HA target 0x0
addis 3, 2, target@dtprel@ha
# CHECK: addi 3, 3, target@dtprel@l # encoding: [0x38,0x63,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@dtprel@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_DTPREL16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_LO target 0x0
addi 3, 3, target@dtprel@l
# CHECK: addis 3, 2, target@got@tprel@ha # encoding: [0x3c,0x62,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@got@tprel@ha, kind: fixup_ppc_ha16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TPREL16_HA target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tprel@ha, kind: fixup_ppc_ha16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_HA target 0x0
addis 3, 2, target@got@tprel@ha
# CHECK: ld 1, target@got@tprel@l(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@got@tprel@l, kind: fixup_ppc_lo16_ds
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TPREL16_LO_DS target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tprel@l, kind: fixup_ppc_lo16_ds
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_LO_DS target 0x0
ld 1, target@got@tprel@l(3)
# CHECK: addis 3, 2, target@got@tlsgd@ha # encoding: [0x3c,0x62,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@got@tlsgd@ha, kind: fixup_ppc_ha16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSGD16_HA target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsgd@ha, kind: fixup_ppc_ha16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_HA target 0x0
addis 3, 2, target@got@tlsgd@ha
# CHECK: addi 3, 3, target@got@tlsgd@l # encoding: [0x38,0x63,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@got@tlsgd@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSGD16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsgd@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_LO target 0x0
addi 3, 3, target@got@tlsgd@l
# CHECK: addis 3, 2, target@got@tlsld@ha # encoding: [0x3c,0x62,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@got@tlsld@ha, kind: fixup_ppc_ha16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSLD16_HA target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsld@ha, kind: fixup_ppc_ha16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_HA target 0x0
addis 3, 2, target@got@tlsld@ha
# CHECK: addi 3, 3, target@got@tlsld@l # encoding: [0x38,0x63,A,A]
-# CHECK-NEXT: # fixup A - offset: 0, value: target@got@tlsld@l, kind: fixup_ppc_lo16
-# CHECK-REL: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSLD16_LO target 0x0
+# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsld@l, kind: fixup_ppc_lo16
+# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_LO target 0x0
addi 3, 3, target@got@tlsld@l
diff --git a/test/MC/SystemZ/insn-a-01.s b/test/MC/SystemZ/insn-a-01.s
deleted file mode 100644
index 7bb94b31eb..0000000000
--- a/test/MC/SystemZ/insn-a-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: a %r0, 0 # encoding: [0x5a,0x00,0x00,0x00]
-#CHECK: a %r0, 4095 # encoding: [0x5a,0x00,0x0f,0xff]
-#CHECK: a %r0, 0(%r1) # encoding: [0x5a,0x00,0x10,0x00]
-#CHECK: a %r0, 0(%r15) # encoding: [0x5a,0x00,0xf0,0x00]
-#CHECK: a %r0, 4095(%r1,%r15) # encoding: [0x5a,0x01,0xff,0xff]
-#CHECK: a %r0, 4095(%r15,%r1) # encoding: [0x5a,0x0f,0x1f,0xff]
-#CHECK: a %r15, 0 # encoding: [0x5a,0xf0,0x00,0x00]
-
- a %r0, 0
- a %r0, 4095
- a %r0, 0(%r1)
- a %r0, 0(%r15)
- a %r0, 4095(%r1,%r15)
- a %r0, 4095(%r15,%r1)
- a %r15, 0
diff --git a/test/MC/SystemZ/insn-a-02.s b/test/MC/SystemZ/insn-a-02.s
deleted file mode 100644
index 9cc967e0ce..0000000000
--- a/test/MC/SystemZ/insn-a-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: a %r0, -1
-#CHECK: error: invalid operand
-#CHECK: a %r0, 4096
-
- a %r0, -1
- a %r0, 4096
diff --git a/test/MC/SystemZ/insn-adb-01.s b/test/MC/SystemZ/insn-adb-01.s
deleted file mode 100644
index b54be60c6b..0000000000
--- a/test/MC/SystemZ/insn-adb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: adb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1a]
-#CHECK: adb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1a]
-#CHECK: adb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1a]
-#CHECK: adb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1a]
-#CHECK: adb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1a]
-#CHECK: adb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1a]
-#CHECK: adb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1a]
-
- adb %f0, 0
- adb %f0, 4095
- adb %f0, 0(%r1)
- adb %f0, 0(%r15)
- adb %f0, 4095(%r1,%r15)
- adb %f0, 4095(%r15,%r1)
- adb %f15, 0
diff --git a/test/MC/SystemZ/insn-adb-02.s b/test/MC/SystemZ/insn-adb-02.s
deleted file mode 100644
index ff97a51aff..0000000000
--- a/test/MC/SystemZ/insn-adb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: adb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: adb %f0, 4096
-
- adb %f0, -1
- adb %f0, 4096
diff --git a/test/MC/SystemZ/insn-adbr-01.s b/test/MC/SystemZ/insn-adbr-01.s
deleted file mode 100644
index 05724d2a6a..0000000000
--- a/test/MC/SystemZ/insn-adbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: adbr %f0, %f0 # encoding: [0xb3,0x1a,0x00,0x00]
-#CHECK: adbr %f0, %f15 # encoding: [0xb3,0x1a,0x00,0x0f]
-#CHECK: adbr %f7, %f8 # encoding: [0xb3,0x1a,0x00,0x78]
-#CHECK: adbr %f15, %f0 # encoding: [0xb3,0x1a,0x00,0xf0]
-
- adbr %f0, %f0
- adbr %f0, %f15
- adbr %f7, %f8
- adbr %f15, %f0
diff --git a/test/MC/SystemZ/insn-aeb-01.s b/test/MC/SystemZ/insn-aeb-01.s
deleted file mode 100644
index b4268e5c72..0000000000
--- a/test/MC/SystemZ/insn-aeb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: aeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0a]
-#CHECK: aeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0a]
-#CHECK: aeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0a]
-#CHECK: aeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0a]
-#CHECK: aeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0a]
-#CHECK: aeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0a]
-#CHECK: aeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0a]
-
- aeb %f0, 0
- aeb %f0, 4095
- aeb %f0, 0(%r1)
- aeb %f0, 0(%r15)
- aeb %f0, 4095(%r1,%r15)
- aeb %f0, 4095(%r15,%r1)
- aeb %f15, 0
diff --git a/test/MC/SystemZ/insn-aeb-02.s b/test/MC/SystemZ/insn-aeb-02.s
deleted file mode 100644
index 4fade8eceb..0000000000
--- a/test/MC/SystemZ/insn-aeb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: aeb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: aeb %f0, 4096
-
- aeb %f0, -1
- aeb %f0, 4096
diff --git a/test/MC/SystemZ/insn-aebr-01.s b/test/MC/SystemZ/insn-aebr-01.s
deleted file mode 100644
index 2147627e38..0000000000
--- a/test/MC/SystemZ/insn-aebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: aebr %f0, %f0 # encoding: [0xb3,0x0a,0x00,0x00]
-#CHECK: aebr %f0, %f15 # encoding: [0xb3,0x0a,0x00,0x0f]
-#CHECK: aebr %f7, %f8 # encoding: [0xb3,0x0a,0x00,0x78]
-#CHECK: aebr %f15, %f0 # encoding: [0xb3,0x0a,0x00,0xf0]
-
- aebr %f0, %f0
- aebr %f0, %f15
- aebr %f7, %f8
- aebr %f15, %f0
diff --git a/test/MC/SystemZ/insn-afi-01.s b/test/MC/SystemZ/insn-afi-01.s
deleted file mode 100644
index f9a911810c..0000000000
--- a/test/MC/SystemZ/insn-afi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: afi %r0, -2147483648 # encoding: [0xc2,0x09,0x80,0x00,0x00,0x00]
-#CHECK: afi %r0, -1 # encoding: [0xc2,0x09,0xff,0xff,0xff,0xff]
-#CHECK: afi %r0, 0 # encoding: [0xc2,0x09,0x00,0x00,0x00,0x00]
-#CHECK: afi %r0, 1 # encoding: [0xc2,0x09,0x00,0x00,0x00,0x01]
-#CHECK: afi %r0, 2147483647 # encoding: [0xc2,0x09,0x7f,0xff,0xff,0xff]
-#CHECK: afi %r15, 0 # encoding: [0xc2,0xf9,0x00,0x00,0x00,0x00]
-
- afi %r0, -1 << 31
- afi %r0, -1
- afi %r0, 0
- afi %r0, 1
- afi %r0, (1 << 31) - 1
- afi %r15, 0
diff --git a/test/MC/SystemZ/insn-afi-02.s b/test/MC/SystemZ/insn-afi-02.s
deleted file mode 100644
index f848e196a9..0000000000
--- a/test/MC/SystemZ/insn-afi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: afi %r0, (-1 << 31) - 1
-#CHECK: error: invalid operand
-#CHECK: afi %r0, (1 << 31)
-
- afi %r0, (-1 << 31) - 1
- afi %r0, (1 << 31)
diff --git a/test/MC/SystemZ/insn-ag-01.s b/test/MC/SystemZ/insn-ag-01.s
deleted file mode 100644
index 63029d75e4..0000000000
--- a/test/MC/SystemZ/insn-ag-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ag %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x08]
-#CHECK: ag %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x08]
-#CHECK: ag %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x08]
-#CHECK: ag %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x08]
-#CHECK: ag %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x08]
-#CHECK: ag %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x08]
-#CHECK: ag %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x08]
-#CHECK: ag %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x08]
-#CHECK: ag %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x08]
-#CHECK: ag %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x08]
-
- ag %r0, -524288
- ag %r0, -1
- ag %r0, 0
- ag %r0, 1
- ag %r0, 524287
- ag %r0, 0(%r1)
- ag %r0, 0(%r15)
- ag %r0, 524287(%r1,%r15)
- ag %r0, 524287(%r15,%r1)
- ag %r15, 0
diff --git a/test/MC/SystemZ/insn-ag-02.s b/test/MC/SystemZ/insn-ag-02.s
deleted file mode 100644
index 59694cd7d5..0000000000
--- a/test/MC/SystemZ/insn-ag-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ag %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: ag %r0, 524288
-
- ag %r0, -524289
- ag %r0, 524288
diff --git a/test/MC/SystemZ/insn-agf-01.s b/test/MC/SystemZ/insn-agf-01.s
deleted file mode 100644
index 40a9858342..0000000000
--- a/test/MC/SystemZ/insn-agf-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: agf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x18]
-#CHECK: agf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x18]
-#CHECK: agf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x18]
-#CHECK: agf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x18]
-#CHECK: agf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x18]
-#CHECK: agf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x18]
-#CHECK: agf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x18]
-#CHECK: agf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x18]
-#CHECK: agf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x18]
-#CHECK: agf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x18]
-
- agf %r0, -524288
- agf %r0, -1
- agf %r0, 0
- agf %r0, 1
- agf %r0, 524287
- agf %r0, 0(%r1)
- agf %r0, 0(%r15)
- agf %r0, 524287(%r1,%r15)
- agf %r0, 524287(%r15,%r1)
- agf %r15, 0
diff --git a/test/MC/SystemZ/insn-agf-02.s b/test/MC/SystemZ/insn-agf-02.s
deleted file mode 100644
index dee31dc1d5..0000000000
--- a/test/MC/SystemZ/insn-agf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: agf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: agf %r0, 524288
-
- agf %r0, -524289
- agf %r0, 524288
diff --git a/test/MC/SystemZ/insn-agfi-01.s b/test/MC/SystemZ/insn-agfi-01.s
deleted file mode 100644
index a64721ddd1..0000000000
--- a/test/MC/SystemZ/insn-agfi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: agfi %r0, -2147483648 # encoding: [0xc2,0x08,0x80,0x00,0x00,0x00]
-#CHECK: agfi %r0, -1 # encoding: [0xc2,0x08,0xff,0xff,0xff,0xff]
-#CHECK: agfi %r0, 0 # encoding: [0xc2,0x08,0x00,0x00,0x00,0x00]
-#CHECK: agfi %r0, 1 # encoding: [0xc2,0x08,0x00,0x00,0x00,0x01]
-#CHECK: agfi %r0, 2147483647 # encoding: [0xc2,0x08,0x7f,0xff,0xff,0xff]
-#CHECK: agfi %r15, 0 # encoding: [0xc2,0xf8,0x00,0x00,0x00,0x00]
-
- agfi %r0, -1 << 31
- agfi %r0, -1
- agfi %r0, 0
- agfi %r0, 1
- agfi %r0, (1 << 31) - 1
- agfi %r15, 0
diff --git a/test/MC/SystemZ/insn-agfi-02.s b/test/MC/SystemZ/insn-agfi-02.s
deleted file mode 100644
index 1db3eaae0b..0000000000
--- a/test/MC/SystemZ/insn-agfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: agfi %r0, (-1 << 31) - 1
-#CHECK: error: invalid operand
-#CHECK: agfi %r0, (1 << 31)
-
- agfi %r0, (-1 << 31) - 1
- agfi %r0, (1 << 31)
diff --git a/test/MC/SystemZ/insn-agfr-01.s b/test/MC/SystemZ/insn-agfr-01.s
deleted file mode 100644
index cd17db95f9..0000000000
--- a/test/MC/SystemZ/insn-agfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: agfr %r0, %r0 # encoding: [0xb9,0x18,0x00,0x00]
-#CHECK: agfr %r0, %r15 # encoding: [0xb9,0x18,0x00,0x0f]
-#CHECK: agfr %r15, %r0 # encoding: [0xb9,0x18,0x00,0xf0]
-#CHECK: agfr %r7, %r8 # encoding: [0xb9,0x18,0x00,0x78]
-
- agfr %r0,%r0
- agfr %r0,%r15
- agfr %r15,%r0
- agfr %r7,%r8
diff --git a/test/MC/SystemZ/insn-aghi-01.s b/test/MC/SystemZ/insn-aghi-01.s
deleted file mode 100644
index cd77c355d2..0000000000
--- a/test/MC/SystemZ/insn-aghi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: aghi %r0, -32768 # encoding: [0xa7,0x0b,0x80,0x00]
-#CHECK: aghi %r0, -1 # encoding: [0xa7,0x0b,0xff,0xff]
-#CHECK: aghi %r0, 0 # encoding: [0xa7,0x0b,0x00,0x00]
-#CHECK: aghi %r0, 1 # encoding: [0xa7,0x0b,0x00,0x01]
-#CHECK: aghi %r0, 32767 # encoding: [0xa7,0x0b,0x7f,0xff]
-#CHECK: aghi %r15, 0 # encoding: [0xa7,0xfb,0x00,0x00]
-
- aghi %r0, -32768
- aghi %r0, -1
- aghi %r0, 0
- aghi %r0, 1
- aghi %r0, 32767
- aghi %r15, 0
diff --git a/test/MC/SystemZ/insn-aghi-02.s b/test/MC/SystemZ/insn-aghi-02.s
deleted file mode 100644
index e2657c6869..0000000000
--- a/test/MC/SystemZ/insn-aghi-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: aghi %r0, -32769
-#CHECK: error: invalid operand
-#CHECK: aghi %r0, 32768
-#CHECK: error: invalid operand
-#CHECK: aghi %r0, foo
-
- aghi %r0, -32769
- aghi %r0, 32768
- aghi %r0, foo
diff --git a/test/MC/SystemZ/insn-agr-01.s b/test/MC/SystemZ/insn-agr-01.s
deleted file mode 100644
index a84ff3d226..0000000000
--- a/test/MC/SystemZ/insn-agr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: agr %r0, %r0 # encoding: [0xb9,0x08,0x00,0x00]
-#CHECK: agr %r0, %r15 # encoding: [0xb9,0x08,0x00,0x0f]
-#CHECK: agr %r15, %r0 # encoding: [0xb9,0x08,0x00,0xf0]
-#CHECK: agr %r7, %r8 # encoding: [0xb9,0x08,0x00,0x78]
-
- agr %r0,%r0
- agr %r0,%r15
- agr %r15,%r0
- agr %r7,%r8
diff --git a/test/MC/SystemZ/insn-agsi-01.s b/test/MC/SystemZ/insn-agsi-01.s
deleted file mode 100644
index 9b2fe4b80e..0000000000
--- a/test/MC/SystemZ/insn-agsi-01.s
+++ /dev/null
@@ -1,29 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: agsi -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x7a]
-#CHECK: agsi -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x7a]
-#CHECK: agsi 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x7a]
-#CHECK: agsi 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x7a]
-#CHECK: agsi 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x7a]
-#CHECK: agsi 0, -128 # encoding: [0xeb,0x80,0x00,0x00,0x00,0x7a]
-#CHECK: agsi 0, -1 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x7a]
-#CHECK: agsi 0, 1 # encoding: [0xeb,0x01,0x00,0x00,0x00,0x7a]
-#CHECK: agsi 0, 127 # encoding: [0xeb,0x7f,0x00,0x00,0x00,0x7a]
-#CHECK: agsi 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x7a]
-#CHECK: agsi 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x7a]
-#CHECK: agsi 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x7a]
-#CHECK: agsi 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x7a]
-
- agsi -524288, 0
- agsi -1, 0
- agsi 0, 0
- agsi 1, 0
- agsi 524287, 0
- agsi 0, -128
- agsi 0, -1
- agsi 0, 1
- agsi 0, 127
- agsi 0(%r1), 42
- agsi 0(%r15), 42
- agsi 524287(%r1), 42
- agsi 524287(%r15), 42
diff --git a/test/MC/SystemZ/insn-agsi-02.s b/test/MC/SystemZ/insn-agsi-02.s
deleted file mode 100644
index a4b3d9a888..0000000000
--- a/test/MC/SystemZ/insn-agsi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: agsi -524289, 0
-#CHECK: error: invalid operand
-#CHECK: agsi 524288, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: agsi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: agsi 0, -129
-#CHECK: error: invalid operand
-#CHECK: agsi 0, 128
-
- agsi -524289, 0
- agsi 524288, 0
- agsi 0(%r1,%r2), 0
- agsi 0, -129
- agsi 0, 128
diff --git a/test/MC/SystemZ/insn-ah-01.s b/test/MC/SystemZ/insn-ah-01.s
deleted file mode 100644
index 35012f0678..0000000000
--- a/test/MC/SystemZ/insn-ah-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ah %r0, 0 # encoding: [0x4a,0x00,0x00,0x00]
-#CHECK: ah %r0, 4095 # encoding: [0x4a,0x00,0x0f,0xff]
-#CHECK: ah %r0, 0(%r1) # encoding: [0x4a,0x00,0x10,0x00]
-#CHECK: ah %r0, 0(%r15) # encoding: [0x4a,0x00,0xf0,0x00]
-#CHECK: ah %r0, 4095(%r1,%r15) # encoding: [0x4a,0x01,0xff,0xff]
-#CHECK: ah %r0, 4095(%r15,%r1) # encoding: [0x4a,0x0f,0x1f,0xff]
-#CHECK: ah %r15, 0 # encoding: [0x4a,0xf0,0x00,0x00]
-
- ah %r0, 0
- ah %r0, 4095
- ah %r0, 0(%r1)
- ah %r0, 0(%r15)
- ah %r0, 4095(%r1,%r15)
- ah %r0, 4095(%r15,%r1)
- ah %r15, 0
diff --git a/test/MC/SystemZ/insn-ah-02.s b/test/MC/SystemZ/insn-ah-02.s
deleted file mode 100644
index 1a20cd715f..0000000000
--- a/test/MC/SystemZ/insn-ah-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ah %r0, -1
-#CHECK: error: invalid operand
-#CHECK: ah %r0, 4096
-
- ah %r0, -1
- ah %r0, 4096
diff --git a/test/MC/SystemZ/insn-ahi-01.s b/test/MC/SystemZ/insn-ahi-01.s
deleted file mode 100644
index e0a5fb389e..0000000000
--- a/test/MC/SystemZ/insn-ahi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ahi %r0, -32768 # encoding: [0xa7,0x0a,0x80,0x00]
-#CHECK: ahi %r0, -1 # encoding: [0xa7,0x0a,0xff,0xff]
-#CHECK: ahi %r0, 0 # encoding: [0xa7,0x0a,0x00,0x00]
-#CHECK: ahi %r0, 1 # encoding: [0xa7,0x0a,0x00,0x01]
-#CHECK: ahi %r0, 32767 # encoding: [0xa7,0x0a,0x7f,0xff]
-#CHECK: ahi %r15, 0 # encoding: [0xa7,0xfa,0x00,0x00]
-
- ahi %r0, -32768
- ahi %r0, -1
- ahi %r0, 0
- ahi %r0, 1
- ahi %r0, 32767
- ahi %r15, 0
diff --git a/test/MC/SystemZ/insn-ahi-02.s b/test/MC/SystemZ/insn-ahi-02.s
deleted file mode 100644
index d41e2da2a2..0000000000
--- a/test/MC/SystemZ/insn-ahi-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ahi %r0, -32769
-#CHECK: error: invalid operand
-#CHECK: ahi %r0, 32768
-#CHECK: error: invalid operand
-#CHECK: ahi %r0, foo
-
- ahi %r0, -32769
- ahi %r0, 32768
- ahi %r0, foo
diff --git a/test/MC/SystemZ/insn-ahy-01.s b/test/MC/SystemZ/insn-ahy-01.s
deleted file mode 100644
index ff25dc503c..0000000000
--- a/test/MC/SystemZ/insn-ahy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ahy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x7a]
-#CHECK: ahy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x7a]
-#CHECK: ahy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x7a]
-#CHECK: ahy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x7a]
-#CHECK: ahy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x7a]
-#CHECK: ahy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x7a]
-#CHECK: ahy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x7a]
-#CHECK: ahy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x7a]
-#CHECK: ahy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x7a]
-#CHECK: ahy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x7a]
-
- ahy %r0, -524288
- ahy %r0, -1
- ahy %r0, 0
- ahy %r0, 1
- ahy %r0, 524287
- ahy %r0, 0(%r1)
- ahy %r0, 0(%r15)
- ahy %r0, 524287(%r1,%r15)
- ahy %r0, 524287(%r15,%r1)
- ahy %r15, 0
diff --git a/test/MC/SystemZ/insn-ahy-02.s b/test/MC/SystemZ/insn-ahy-02.s
deleted file mode 100644
index e725e146df..0000000000
--- a/test/MC/SystemZ/insn-ahy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ahy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: ahy %r0, 524288
-
- ahy %r0, -524289
- ahy %r0, 524288
diff --git a/test/MC/SystemZ/insn-al-01.s b/test/MC/SystemZ/insn-al-01.s
deleted file mode 100644
index 1efc33f0e9..0000000000
--- a/test/MC/SystemZ/insn-al-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: al %r0, 0 # encoding: [0x5e,0x00,0x00,0x00]
-#CHECK: al %r0, 4095 # encoding: [0x5e,0x00,0x0f,0xff]
-#CHECK: al %r0, 0(%r1) # encoding: [0x5e,0x00,0x10,0x00]
-#CHECK: al %r0, 0(%r15) # encoding: [0x5e,0x00,0xf0,0x00]
-#CHECK: al %r0, 4095(%r1,%r15) # encoding: [0x5e,0x01,0xff,0xff]
-#CHECK: al %r0, 4095(%r15,%r1) # encoding: [0x5e,0x0f,0x1f,0xff]
-#CHECK: al %r15, 0 # encoding: [0x5e,0xf0,0x00,0x00]
-
- al %r0, 0
- al %r0, 4095
- al %r0, 0(%r1)
- al %r0, 0(%r15)
- al %r0, 4095(%r1,%r15)
- al %r0, 4095(%r15,%r1)
- al %r15, 0
diff --git a/test/MC/SystemZ/insn-al-02.s b/test/MC/SystemZ/insn-al-02.s
deleted file mode 100644
index 39b1b06a1b..0000000000
--- a/test/MC/SystemZ/insn-al-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: al %r0, -1
-#CHECK: error: invalid operand
-#CHECK: al %r0, 4096
-
- al %r0, -1
- al %r0, 4096
diff --git a/test/MC/SystemZ/insn-alc-01.s b/test/MC/SystemZ/insn-alc-01.s
deleted file mode 100644
index 5f8be6a7d5..0000000000
--- a/test/MC/SystemZ/insn-alc-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: alc %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x98]
-#CHECK: alc %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x98]
-#CHECK: alc %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x98]
-#CHECK: alc %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x98]
-#CHECK: alc %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x98]
-#CHECK: alc %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x98]
-#CHECK: alc %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x98]
-#CHECK: alc %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x98]
-#CHECK: alc %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x98]
-#CHECK: alc %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x98]
-
- alc %r0, -524288
- alc %r0, -1
- alc %r0, 0
- alc %r0, 1
- alc %r0, 524287
- alc %r0, 0(%r1)
- alc %r0, 0(%r15)
- alc %r0, 524287(%r1,%r15)
- alc %r0, 524287(%r15,%r1)
- alc %r15, 0
diff --git a/test/MC/SystemZ/insn-alc-02.s b/test/MC/SystemZ/insn-alc-02.s
deleted file mode 100644
index 9c082f2dfb..0000000000
--- a/test/MC/SystemZ/insn-alc-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: alc %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: alc %r0, 524288
-
- alc %r0, -524289
- alc %r0, 524288
diff --git a/test/MC/SystemZ/insn-alcg-01.s b/test/MC/SystemZ/insn-alcg-01.s
deleted file mode 100644
index c05207ec9e..0000000000
--- a/test/MC/SystemZ/insn-alcg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: alcg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x88]
-#CHECK: alcg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x88]
-#CHECK: alcg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x88]
-#CHECK: alcg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x88]
-#CHECK: alcg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x88]
-#CHECK: alcg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x88]
-#CHECK: alcg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x88]
-#CHECK: alcg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x88]
-#CHECK: alcg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x88]
-#CHECK: alcg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x88]
-
- alcg %r0, -524288
- alcg %r0, -1
- alcg %r0, 0
- alcg %r0, 1
- alcg %r0, 524287
- alcg %r0, 0(%r1)
- alcg %r0, 0(%r15)
- alcg %r0, 524287(%r1,%r15)
- alcg %r0, 524287(%r15,%r1)
- alcg %r15, 0
diff --git a/test/MC/SystemZ/insn-alcg-02.s b/test/MC/SystemZ/insn-alcg-02.s
deleted file mode 100644
index 3dab6ddc5d..0000000000
--- a/test/MC/SystemZ/insn-alcg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: alcg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: alcg %r0, 524288
-
- alcg %r0, -524289
- alcg %r0, 524288
diff --git a/test/MC/SystemZ/insn-alcgr-01.s b/test/MC/SystemZ/insn-alcgr-01.s
deleted file mode 100644
index c9f3ce2934..0000000000
--- a/test/MC/SystemZ/insn-alcgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: alcgr %r0, %r0 # encoding: [0xb9,0x88,0x00,0x00]
-#CHECK: alcgr %r0, %r15 # encoding: [0xb9,0x88,0x00,0x0f]
-#CHECK: alcgr %r15, %r0 # encoding: [0xb9,0x88,0x00,0xf0]
-#CHECK: alcgr %r7, %r8 # encoding: [0xb9,0x88,0x00,0x78]
-
- alcgr %r0,%r0
- alcgr %r0,%r15
- alcgr %r15,%r0
- alcgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-alcr-01.s b/test/MC/SystemZ/insn-alcr-01.s
deleted file mode 100644
index 7369224a1b..0000000000
--- a/test/MC/SystemZ/insn-alcr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: alcr %r0, %r0 # encoding: [0xb9,0x98,0x00,0x00]
-#CHECK: alcr %r0, %r15 # encoding: [0xb9,0x98,0x00,0x0f]
-#CHECK: alcr %r15, %r0 # encoding: [0xb9,0x98,0x00,0xf0]
-#CHECK: alcr %r7, %r8 # encoding: [0xb9,0x98,0x00,0x78]
-
- alcr %r0,%r0
- alcr %r0,%r15
- alcr %r15,%r0
- alcr %r7,%r8
diff --git a/test/MC/SystemZ/insn-alfi-01.s b/test/MC/SystemZ/insn-alfi-01.s
deleted file mode 100644
index 332a74fdc7..0000000000
--- a/test/MC/SystemZ/insn-alfi-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: alfi %r0, 0 # encoding: [0xc2,0x0b,0x00,0x00,0x00,0x00]
-#CHECK: alfi %r0, 4294967295 # encoding: [0xc2,0x0b,0xff,0xff,0xff,0xff]
-#CHECK: alfi %r15, 0 # encoding: [0xc2,0xfb,0x00,0x00,0x00,0x00]
-
- alfi %r0, 0
- alfi %r0, (1 << 32) - 1
- alfi %r15, 0
diff --git a/test/MC/SystemZ/insn-alfi-02.s b/test/MC/SystemZ/insn-alfi-02.s
deleted file mode 100644
index a5d3894225..0000000000
--- a/test/MC/SystemZ/insn-alfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: alfi %r0, -1
-#CHECK: error: invalid operand
-#CHECK: alfi %r0, (1 << 32)
-
- alfi %r0, -1
- alfi %r0, (1 << 32)
diff --git a/test/MC/SystemZ/insn-alg-01.s b/test/MC/SystemZ/insn-alg-01.s
deleted file mode 100644
index 6df084c02b..0000000000
--- a/test/MC/SystemZ/insn-alg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: alg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0a]
-#CHECK: alg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0a]
-#CHECK: alg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0a]
-#CHECK: alg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0a]
-#CHECK: alg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0a]
-#CHECK: alg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0a]
-#CHECK: alg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0a]
-#CHECK: alg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0a]
-#CHECK: alg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0a]
-#CHECK: alg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x0a]
-
- alg %r0, -524288
- alg %r0, -1
- alg %r0, 0
- alg %r0, 1
- alg %r0, 524287
- alg %r0, 0(%r1)
- alg %r0, 0(%r15)
- alg %r0, 524287(%r1,%r15)
- alg %r0, 524287(%r15,%r1)
- alg %r15, 0
diff --git a/test/MC/SystemZ/insn-alg-02.s b/test/MC/SystemZ/insn-alg-02.s
deleted file mode 100644
index 407d73d2bd..0000000000
--- a/test/MC/SystemZ/insn-alg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: alg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: alg %r0, 524288
-
- alg %r0, -524289
- alg %r0, 524288
diff --git a/test/MC/SystemZ/insn-algf-01.s b/test/MC/SystemZ/insn-algf-01.s
deleted file mode 100644
index 751b59059f..0000000000
--- a/test/MC/SystemZ/insn-algf-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: algf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1a]
-#CHECK: algf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1a]
-#CHECK: algf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1a]
-#CHECK: algf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1a]
-#CHECK: algf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1a]
-#CHECK: algf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1a]
-#CHECK: algf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1a]
-#CHECK: algf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1a]
-#CHECK: algf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1a]
-#CHECK: algf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1a]
-
- algf %r0, -524288
- algf %r0, -1
- algf %r0, 0
- algf %r0, 1
- algf %r0, 524287
- algf %r0, 0(%r1)
- algf %r0, 0(%r15)
- algf %r0, 524287(%r1,%r15)
- algf %r0, 524287(%r15,%r1)
- algf %r15, 0
diff --git a/test/MC/SystemZ/insn-algf-02.s b/test/MC/SystemZ/insn-algf-02.s
deleted file mode 100644
index 64ef1c975b..0000000000
--- a/test/MC/SystemZ/insn-algf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: algf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: algf %r0, 524288
-
- algf %r0, -524289
- algf %r0, 524288
diff --git a/test/MC/SystemZ/insn-algfi-01.s b/test/MC/SystemZ/insn-algfi-01.s
deleted file mode 100644
index b6ccb336b3..0000000000
--- a/test/MC/SystemZ/insn-algfi-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: algfi %r0, 0 # encoding: [0xc2,0x0a,0x00,0x00,0x00,0x00]
-#CHECK: algfi %r0, 4294967295 # encoding: [0xc2,0x0a,0xff,0xff,0xff,0xff]
-#CHECK: algfi %r15, 0 # encoding: [0xc2,0xfa,0x00,0x00,0x00,0x00]
-
- algfi %r0, 0
- algfi %r0, (1 << 32) - 1
- algfi %r15, 0
diff --git a/test/MC/SystemZ/insn-algfi-02.s b/test/MC/SystemZ/insn-algfi-02.s
deleted file mode 100644
index a5ed4b04e5..0000000000
--- a/test/MC/SystemZ/insn-algfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: algfi %r0, -1
-#CHECK: error: invalid operand
-#CHECK: algfi %r0, (1 << 32)
-
- algfi %r0, -1
- algfi %r0, (1 << 32)
diff --git a/test/MC/SystemZ/insn-algfr-01.s b/test/MC/SystemZ/insn-algfr-01.s
deleted file mode 100644
index 3ccb692ab9..0000000000
--- a/test/MC/SystemZ/insn-algfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: algfr %r0, %r0 # encoding: [0xb9,0x1a,0x00,0x00]
-#CHECK: algfr %r0, %r15 # encoding: [0xb9,0x1a,0x00,0x0f]
-#CHECK: algfr %r15, %r0 # encoding: [0xb9,0x1a,0x00,0xf0]
-#CHECK: algfr %r7, %r8 # encoding: [0xb9,0x1a,0x00,0x78]
-
- algfr %r0,%r0
- algfr %r0,%r15
- algfr %r15,%r0
- algfr %r7,%r8
diff --git a/test/MC/SystemZ/insn-algr-01.s b/test/MC/SystemZ/insn-algr-01.s
deleted file mode 100644
index c3758ee74d..0000000000
--- a/test/MC/SystemZ/insn-algr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: algr %r0, %r0 # encoding: [0xb9,0x0a,0x00,0x00]
-#CHECK: algr %r0, %r15 # encoding: [0xb9,0x0a,0x00,0x0f]
-#CHECK: algr %r15, %r0 # encoding: [0xb9,0x0a,0x00,0xf0]
-#CHECK: algr %r7, %r8 # encoding: [0xb9,0x0a,0x00,0x78]
-
- algr %r0,%r0
- algr %r0,%r15
- algr %r15,%r0
- algr %r7,%r8
diff --git a/test/MC/SystemZ/insn-alr-01.s b/test/MC/SystemZ/insn-alr-01.s
deleted file mode 100644
index e85173ef15..0000000000
--- a/test/MC/SystemZ/insn-alr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: alr %r0, %r0 # encoding: [0x1e,0x00]
-#CHECK: alr %r0, %r15 # encoding: [0x1e,0x0f]
-#CHECK: alr %r15, %r0 # encoding: [0x1e,0xf0]
-#CHECK: alr %r7, %r8 # encoding: [0x1e,0x78]
-
- alr %r0,%r0
- alr %r0,%r15
- alr %r15,%r0
- alr %r7,%r8
diff --git a/test/MC/SystemZ/insn-aly-01.s b/test/MC/SystemZ/insn-aly-01.s
deleted file mode 100644
index 94afb07578..0000000000
--- a/test/MC/SystemZ/insn-aly-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: aly %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x5e]
-#CHECK: aly %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x5e]
-#CHECK: aly %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x5e]
-#CHECK: aly %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x5e]
-#CHECK: aly %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x5e]
-#CHECK: aly %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x5e]
-#CHECK: aly %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x5e]
-#CHECK: aly %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x5e]
-#CHECK: aly %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x5e]
-#CHECK: aly %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x5e]
-
- aly %r0, -524288
- aly %r0, -1
- aly %r0, 0
- aly %r0, 1
- aly %r0, 524287
- aly %r0, 0(%r1)
- aly %r0, 0(%r15)
- aly %r0, 524287(%r1,%r15)
- aly %r0, 524287(%r15,%r1)
- aly %r15, 0
diff --git a/test/MC/SystemZ/insn-aly-02.s b/test/MC/SystemZ/insn-aly-02.s
deleted file mode 100644
index 01c6f3dcdd..0000000000
--- a/test/MC/SystemZ/insn-aly-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: aly %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: aly %r0, 524288
-
- aly %r0, -524289
- aly %r0, 524288
diff --git a/test/MC/SystemZ/insn-ar-01.s b/test/MC/SystemZ/insn-ar-01.s
deleted file mode 100644
index 7cd627a170..0000000000
--- a/test/MC/SystemZ/insn-ar-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ar %r0, %r0 # encoding: [0x1a,0x00]
-#CHECK: ar %r0, %r15 # encoding: [0x1a,0x0f]
-#CHECK: ar %r15, %r0 # encoding: [0x1a,0xf0]
-#CHECK: ar %r7, %r8 # encoding: [0x1a,0x78]
-
- ar %r0,%r0
- ar %r0,%r15
- ar %r15,%r0
- ar %r7,%r8
diff --git a/test/MC/SystemZ/insn-asi-01.s b/test/MC/SystemZ/insn-asi-01.s
deleted file mode 100644
index 7a1d241e23..0000000000
--- a/test/MC/SystemZ/insn-asi-01.s
+++ /dev/null
@@ -1,29 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: asi -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x6a]
-#CHECK: asi -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x6a]
-#CHECK: asi 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x6a]
-#CHECK: asi 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x6a]
-#CHECK: asi 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x6a]
-#CHECK: asi 0, -128 # encoding: [0xeb,0x80,0x00,0x00,0x00,0x6a]
-#CHECK: asi 0, -1 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x6a]
-#CHECK: asi 0, 1 # encoding: [0xeb,0x01,0x00,0x00,0x00,0x6a]
-#CHECK: asi 0, 127 # encoding: [0xeb,0x7f,0x00,0x00,0x00,0x6a]
-#CHECK: asi 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x6a]
-#CHECK: asi 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x6a]
-#CHECK: asi 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x6a]
-#CHECK: asi 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x6a]
-
- asi -524288, 0
- asi -1, 0
- asi 0, 0
- asi 1, 0
- asi 524287, 0
- asi 0, -128
- asi 0, -1
- asi 0, 1
- asi 0, 127
- asi 0(%r1), 42
- asi 0(%r15), 42
- asi 524287(%r1), 42
- asi 524287(%r15), 42
diff --git a/test/MC/SystemZ/insn-asi-02.s b/test/MC/SystemZ/insn-asi-02.s
deleted file mode 100644
index 3c09f90503..0000000000
--- a/test/MC/SystemZ/insn-asi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: asi -524289, 0
-#CHECK: error: invalid operand
-#CHECK: asi 524288, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: asi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: asi 0, -129
-#CHECK: error: invalid operand
-#CHECK: asi 0, 128
-
- asi -524289, 0
- asi 524288, 0
- asi 0(%r1,%r2), 0
- asi 0, -129
- asi 0, 128
diff --git a/test/MC/SystemZ/insn-axbr-01.s b/test/MC/SystemZ/insn-axbr-01.s
deleted file mode 100644
index cb592efba6..0000000000
--- a/test/MC/SystemZ/insn-axbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: axbr %f0, %f0 # encoding: [0xb3,0x4a,0x00,0x00]
-#CHECK: axbr %f0, %f13 # encoding: [0xb3,0x4a,0x00,0x0d]
-#CHECK: axbr %f8, %f8 # encoding: [0xb3,0x4a,0x00,0x88]
-#CHECK: axbr %f13, %f0 # encoding: [0xb3,0x4a,0x00,0xd0]
-
- axbr %f0, %f0
- axbr %f0, %f13
- axbr %f8, %f8
- axbr %f13, %f0
diff --git a/test/MC/SystemZ/insn-axbr-02.s b/test/MC/SystemZ/insn-axbr-02.s
deleted file mode 100644
index 307664d51e..0000000000
--- a/test/MC/SystemZ/insn-axbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: axbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: axbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: axbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: axbr %f14, %f0
-
- axbr %f0, %f2
- axbr %f0, %f14
- axbr %f2, %f0
- axbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-ay-01.s b/test/MC/SystemZ/insn-ay-01.s
deleted file mode 100644
index 3b65c9a7c0..0000000000
--- a/test/MC/SystemZ/insn-ay-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: ay %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x5a]
-#CHECK: ay %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x5a]
-#CHECK: ay %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x5a]
-#CHECK: ay %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x5a]
-#CHECK: ay %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x5a]
-#CHECK: ay %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x5a]
-#CHECK: ay %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x5a]
-
- ay %r0, -524288
- ay %r0, -1
- ay %r0, 0
- ay %r0, 1
- ay %r0, 524287
- ay %r0, 0(%r1)
- ay %r0, 0(%r15)
- ay %r0, 524287(%r1,%r15)
- ay %r0, 524287(%r15,%r1)
- ay %r15, 0
diff --git a/test/MC/SystemZ/insn-ay-02.s b/test/MC/SystemZ/insn-ay-02.s
deleted file mode 100644
index 09704dfb9f..0000000000
--- a/test/MC/SystemZ/insn-ay-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ay %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: ay %r0, 524288
-
- ay %r0, -524289
- ay %r0, 524288
diff --git a/test/MC/SystemZ/insn-bad.s b/test/MC/SystemZ/insn-bad.s
new file mode 100644
index 0000000000..6891fa94ae
--- /dev/null
+++ b/test/MC/SystemZ/insn-bad.s
@@ -0,0 +1,2787 @@
+# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
+# RUN: FileCheck < %t %s
+
+#CHECK: error: invalid operand
+#CHECK: a %r0, -1
+#CHECK: error: invalid operand
+#CHECK: a %r0, 4096
+
+ a %r0, -1
+ a %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: adb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: adb %f0, 4096
+
+ adb %f0, -1
+ adb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: aeb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: aeb %f0, 4096
+
+ aeb %f0, -1
+ aeb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: afi %r0, (-1 << 31) - 1
+#CHECK: error: invalid operand
+#CHECK: afi %r0, (1 << 31)
+
+ afi %r0, (-1 << 31) - 1
+ afi %r0, (1 << 31)
+
+#CHECK: error: invalid operand
+#CHECK: ag %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: ag %r0, 524288
+
+ ag %r0, -524289
+ ag %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: agf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: agf %r0, 524288
+
+ agf %r0, -524289
+ agf %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: agfi %r0, (-1 << 31) - 1
+#CHECK: error: invalid operand
+#CHECK: agfi %r0, (1 << 31)
+
+ agfi %r0, (-1 << 31) - 1
+ agfi %r0, (1 << 31)
+
+#CHECK: error: invalid operand
+#CHECK: aghi %r0, -32769
+#CHECK: error: invalid operand
+#CHECK: aghi %r0, 32768
+#CHECK: error: invalid operand
+#CHECK: aghi %r0, foo
+
+ aghi %r0, -32769
+ aghi %r0, 32768
+ aghi %r0, foo
+
+#CHECK: error: invalid operand
+#CHECK: agsi -524289, 0
+#CHECK: error: invalid operand
+#CHECK: agsi 524288, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: agsi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: agsi 0, -129
+#CHECK: error: invalid operand
+#CHECK: agsi 0, 128
+
+ agsi -524289, 0
+ agsi 524288, 0
+ agsi 0(%r1,%r2), 0
+ agsi 0, -129
+ agsi 0, 128
+
+#CHECK: error: invalid operand
+#CHECK: ah %r0, -1
+#CHECK: error: invalid operand
+#CHECK: ah %r0, 4096
+
+ ah %r0, -1
+ ah %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: ahi %r0, -32769
+#CHECK: error: invalid operand
+#CHECK: ahi %r0, 32768
+#CHECK: error: invalid operand
+#CHECK: ahi %r0, foo
+
+ ahi %r0, -32769
+ ahi %r0, 32768
+ ahi %r0, foo
+
+#CHECK: error: invalid operand
+#CHECK: ahy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: ahy %r0, 524288
+
+ ahy %r0, -524289
+ ahy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: al %r0, -1
+#CHECK: error: invalid operand
+#CHECK: al %r0, 4096
+
+ al %r0, -1
+ al %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: alc %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: alc %r0, 524288
+
+ alc %r0, -524289
+ alc %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: alcg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: alcg %r0, 524288
+
+ alcg %r0, -524289
+ alcg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: alfi %r0, -1
+#CHECK: error: invalid operand
+#CHECK: alfi %r0, (1 << 32)
+
+ alfi %r0, -1
+ alfi %r0, (1 << 32)
+
+#CHECK: error: invalid operand
+#CHECK: alg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: alg %r0, 524288
+
+ alg %r0, -524289
+ alg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: algf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: algf %r0, 524288
+
+ algf %r0, -524289
+ algf %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: algfi %r0, -1
+#CHECK: error: invalid operand
+#CHECK: algfi %r0, (1 << 32)
+
+ algfi %r0, -1
+ algfi %r0, (1 << 32)
+
+#CHECK: error: invalid operand
+#CHECK: aly %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: aly %r0, 524288
+
+ aly %r0, -524289
+ aly %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: asi -524289, 0
+#CHECK: error: invalid operand
+#CHECK: asi 524288, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: asi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: asi 0, -129
+#CHECK: error: invalid operand
+#CHECK: asi 0, 128
+
+ asi -524289, 0
+ asi 524288, 0
+ asi 0(%r1,%r2), 0
+ asi 0, -129
+ asi 0, 128
+
+#CHECK: error: invalid register
+#CHECK: axbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: axbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: axbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: axbr %f14, %f0
+
+ axbr %f0, %f2
+ axbr %f0, %f14
+ axbr %f2, %f0
+ axbr %f14, %f0
+
+
+#CHECK: error: invalid operand
+#CHECK: ay %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: ay %r0, 524288
+
+ ay %r0, -524289
+ ay %r0, 524288
+
+#CHECK: error: offset out of range
+#CHECK: bras %r0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: bras %r0, -1
+#CHECK: error: offset out of range
+#CHECK: bras %r0, 1
+#CHECK: error: offset out of range
+#CHECK: bras %r0, 0x10000
+
+ bras %r0, -0x100002
+ bras %r0, -1
+ bras %r0, 1
+ bras %r0, 0x10000
+
+#CHECK: error: offset out of range
+#CHECK: brasl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: brasl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: brasl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: brasl %r0, 0x100000000
+
+ brasl %r0, -0x1000000002
+ brasl %r0, -1
+ brasl %r0, 1
+ brasl %r0, 0x100000000
+
+#CHECK: error: offset out of range
+#CHECK: brc 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: brc 0, -1
+#CHECK: error: offset out of range
+#CHECK: brc 0, 1
+#CHECK: error: offset out of range
+#CHECK: brc 0, 0x10000
+
+ brc 0, -0x100002
+ brc 0, -1
+ brc 0, 1
+ brc 0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: brc foo, bar
+#CHECK: error: invalid operand
+#CHECK: brc -1, bar
+#CHECK: error: invalid operand
+#CHECK: brc 16, bar
+
+ brc foo, bar
+ brc -1, bar
+ brc 16, bar
+
+#CHECK: error: offset out of range
+#CHECK: brcl 0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: brcl 0, -1
+#CHECK: error: offset out of range
+#CHECK: brcl 0, 1
+#CHECK: error: offset out of range
+#CHECK: brcl 0, 0x100000000
+
+ brcl 0, -0x1000000002
+ brcl 0, -1
+ brcl 0, 1
+ brcl 0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: brcl foo, bar
+#CHECK: error: invalid operand
+#CHECK: brcl -1, bar
+#CHECK: error: invalid operand
+#CHECK: brcl 16, bar
+
+ brcl foo, bar
+ brcl -1, bar
+ brcl 16, bar
+
+#CHECK: error: invalid operand
+#CHECK: c %r0, -1
+#CHECK: error: invalid operand
+#CHECK: c %r0, 4096
+
+ c %r0, -1
+ c %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: cdb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: cdb %f0, 4096
+
+ cdb %f0, -1
+ cdb %f0, 4096
+
+#CHECK: error: invalid register
+#CHECK: cdfbr %r0, %r0
+#CHECK: error: invalid register
+#CHECK: cdfbr %f0, %f0
+#CHECK: error: invalid register
+#CHECK: cdfbr %f0, %a0
+#CHECK: error: invalid register
+#CHECK: cdfbr %a0, %r0
+
+ cdfbr %r0, %r0
+ cdfbr %f0, %f0
+ cdfbr %f0, %a0
+ cdfbr %a0, %r0
+
+#CHECK: error: invalid register
+#CHECK: cdgbr %r0, %r0
+#CHECK: error: invalid register
+#CHECK: cdgbr %f0, %f0
+#CHECK: error: invalid register
+#CHECK: cdgbr %f0, %a0
+#CHECK: error: invalid register
+#CHECK: cdgbr %a0, %r0
+
+ cdgbr %r0, %r0
+ cdgbr %f0, %f0
+ cdgbr %f0, %a0
+ cdgbr %a0, %r0
+
+#CHECK: error: invalid operand
+#CHECK: ceb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: ceb %f0, 4096
+
+ ceb %f0, -1
+ ceb %f0, 4096
+
+#CHECK: error: invalid register
+#CHECK: cefbr %r0, %r0
+#CHECK: error: invalid register
+#CHECK: cefbr %f0, %f0
+#CHECK: error: invalid register
+#CHECK: cefbr %f0, %a0
+#CHECK: error: invalid register
+#CHECK: cefbr %a0, %r0
+
+ cefbr %r0, %r0
+ cefbr %f0, %f0
+ cefbr %f0, %a0
+ cefbr %a0, %r0
+
+#CHECK: error: invalid register
+#CHECK: cegbr %r0, %r0
+#CHECK: error: invalid register
+#CHECK: cegbr %f0, %f0
+#CHECK: error: invalid register
+#CHECK: cegbr %f0, %a0
+#CHECK: error: invalid register
+#CHECK: cegbr %a0, %r0
+
+ cegbr %r0, %r0
+ cegbr %f0, %f0
+ cegbr %f0, %a0
+ cegbr %a0, %r0
+
+#CHECK: error: invalid register
+#CHECK: cfdbr %r0, 0, %r0
+#CHECK: error: invalid register
+#CHECK: cfdbr %f0, 0, %f0
+#CHECK: error: invalid operand
+#CHECK: cfdbr %r0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: cfdbr %r0, 16, %f0
+
+ cfdbr %r0, 0, %r0
+ cfdbr %f0, 0, %f0
+ cfdbr %r0, -1, %f0
+ cfdbr %r0, 16, %f0
+
+#CHECK: error: invalid register
+#CHECK: cfebr %r0, 0, %r0
+#CHECK: error: invalid register
+#CHECK: cfebr %f0, 0, %f0
+#CHECK: error: invalid operand
+#CHECK: cfebr %r0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: cfebr %r0, 16, %f0
+
+ cfebr %r0, 0, %r0
+ cfebr %f0, 0, %f0
+ cfebr %r0, -1, %f0
+ cfebr %r0, 16, %f0
+
+#CHECK: error: invalid operand
+#CHECK: cfi %r0, (-1 << 31) - 1
+#CHECK: error: invalid operand
+#CHECK: cfi %r0, (1 << 31)
+
+ cfi %r0, (-1 << 31) - 1
+ cfi %r0, (1 << 31)
+
+#CHECK: error: invalid register
+#CHECK: cfxbr %r0, 0, %r0
+#CHECK: error: invalid register
+#CHECK: cfxbr %f0, 0, %f0
+#CHECK: error: invalid operand
+#CHECK: cfxbr %r0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: cfxbr %r0, 16, %f0
+#CHECK: error: invalid register
+#CHECK: cfxbr %r0, 0, %f2
+#CHECK: error: invalid register
+#CHECK: cfxbr %r0, 0, %f14
+
+ cfxbr %r0, 0, %r0
+ cfxbr %f0, 0, %f0
+ cfxbr %r0, -1, %f0
+ cfxbr %r0, 16, %f0
+ cfxbr %r0, 0, %f2
+ cfxbr %r0, 0, %f14
+
+
+#CHECK: error: invalid operand
+#CHECK: cg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: cg %r0, 524288
+
+ cg %r0, -524289
+ cg %r0, 524288
+
+#CHECK: error: invalid register
+#CHECK: cgdbr %r0, 0, %r0
+#CHECK: error: invalid register
+#CHECK: cgdbr %f0, 0, %f0
+#CHECK: error: invalid operand
+#CHECK: cgdbr %r0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: cgdbr %r0, 16, %f0
+
+ cgdbr %r0, 0, %r0
+ cgdbr %f0, 0, %f0
+ cgdbr %r0, -1, %f0
+ cgdbr %r0, 16, %f0
+
+#CHECK: error: invalid register
+#CHECK: cgebr %r0, 0, %r0
+#CHECK: error: invalid register
+#CHECK: cgebr %f0, 0, %f0
+#CHECK: error: invalid operand
+#CHECK: cgebr %r0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: cgebr %r0, 16, %f0
+
+ cgebr %r0, 0, %r0
+ cgebr %f0, 0, %f0
+ cgebr %r0, -1, %f0
+ cgebr %r0, 16, %f0
+
+#CHECK: error: invalid operand
+#CHECK: cgf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: cgf %r0, 524288
+
+ cgf %r0, -524289
+ cgf %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: cgfi %r0, (-1 << 31) - 1
+#CHECK: error: invalid operand
+#CHECK: cgfi %r0, (1 << 31)
+
+ cgfi %r0, (-1 << 31) - 1
+ cgfi %r0, (1 << 31)
+
+#CHECK: error: offset out of range
+#CHECK: cgfrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: cgfrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: cgfrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: cgfrl %r0, 0x100000000
+
+ cgfrl %r0, -0x1000000002
+ cgfrl %r0, -1
+ cgfrl %r0, 1
+ cgfrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: cgh %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: cgh %r0, 524288
+
+ cgh %r0, -524289
+ cgh %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: cghi %r0, -32769
+#CHECK: error: invalid operand
+#CHECK: cghi %r0, 32768
+#CHECK: error: invalid operand
+#CHECK: cghi %r0, foo
+
+ cghi %r0, -32769
+ cghi %r0, 32768
+ cghi %r0, foo
+
+#CHECK: error: offset out of range
+#CHECK: cghrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: cghrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: cghrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: cghrl %r0, 0x100000000
+
+ cghrl %r0, -0x1000000002
+ cghrl %r0, -1
+ cghrl %r0, 1
+ cghrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: cghsi -1, 0
+#CHECK: error: invalid operand
+#CHECK: cghsi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: cghsi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: cghsi 0, -32769
+#CHECK: error: invalid operand
+#CHECK: cghsi 0, 32768
+
+ cghsi -1, 0
+ cghsi 4096, 0
+ cghsi 0(%r1,%r2), 0
+ cghsi 0, -32769
+ cghsi 0, 32768
+
+#CHECK: error: offset out of range
+#CHECK: cgrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: cgrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: cgrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: cgrl %r0, 0x100000000
+
+ cgrl %r0, -0x1000000002
+ cgrl %r0, -1
+ cgrl %r0, 1
+ cgrl %r0, 0x100000000
+
+#CHECK: error: invalid register
+#CHECK: cgxbr %r0, 0, %r0
+#CHECK: error: invalid register
+#CHECK: cgxbr %f0, 0, %f0
+#CHECK: error: invalid operand
+#CHECK: cgxbr %r0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: cgxbr %r0, 16, %f0
+#CHECK: error: invalid register
+#CHECK: cgxbr %r0, 0, %f2
+#CHECK: error: invalid register
+#CHECK: cgxbr %r0, 0, %f14
+
+ cgxbr %r0, 0, %r0
+ cgxbr %f0, 0, %f0
+ cgxbr %r0, -1, %f0
+ cgxbr %r0, 16, %f0
+ cgxbr %r0, 0, %f2
+ cgxbr %r0, 0, %f14
+
+
+#CHECK: error: invalid operand
+#CHECK: ch %r0, -1
+#CHECK: error: invalid operand
+#CHECK: ch %r0, 4096
+
+ ch %r0, -1
+ ch %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: chhsi -1, 0
+#CHECK: error: invalid operand
+#CHECK: chhsi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: chhsi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: chhsi 0, -32769
+#CHECK: error: invalid operand
+#CHECK: chhsi 0, 32768
+
+ chhsi -1, 0
+ chhsi 4096, 0
+ chhsi 0(%r1,%r2), 0
+ chhsi 0, -32769
+ chhsi 0, 32768
+
+#CHECK: error: invalid operand
+#CHECK: chi %r0, -32769
+#CHECK: error: invalid operand
+#CHECK: chi %r0, 32768
+#CHECK: error: invalid operand
+#CHECK: chi %r0, foo
+
+ chi %r0, -32769
+ chi %r0, 32768
+ chi %r0, foo
+
+#CHECK: error: offset out of range
+#CHECK: chrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: chrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: chrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: chrl %r0, 0x100000000
+
+ chrl %r0, -0x1000000002
+ chrl %r0, -1
+ chrl %r0, 1
+ chrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: chsi -1, 0
+#CHECK: error: invalid operand
+#CHECK: chsi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: chsi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: chsi 0, -32769
+#CHECK: error: invalid operand
+#CHECK: chsi 0, 32768
+
+ chsi -1, 0
+ chsi 4096, 0
+ chsi 0(%r1,%r2), 0
+ chsi 0, -32769
+ chsi 0, 32768
+
+#CHECK: error: invalid operand
+#CHECK: chy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: chy %r0, 524288
+
+ chy %r0, -524289
+ chy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: cl %r0, -1
+#CHECK: error: invalid operand
+#CHECK: cl %r0, 4096
+
+ cl %r0, -1
+ cl %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: clfhsi -1, 0
+#CHECK: error: invalid operand
+#CHECK: clfhsi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: clfhsi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: clfhsi 0, -1
+#CHECK: error: invalid operand
+#CHECK: clfhsi 0, 65536
+
+ clfhsi -1, 0
+ clfhsi 4096, 0
+ clfhsi 0(%r1,%r2), 0
+ clfhsi 0, -1
+ clfhsi 0, 65536
+
+#CHECK: error: invalid operand
+#CHECK: clfi %r0, -1
+#CHECK: error: invalid operand
+#CHECK: clfi %r0, (1 << 32)
+
+ clfi %r0, -1
+ clfi %r0, (1 << 32)
+
+#CHECK: error: invalid operand
+#CHECK: clg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: clg %r0, 524288
+
+ clg %r0, -524289
+ clg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: clgf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: clgf %r0, 524288
+
+ clgf %r0, -524289
+ clgf %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: clgfi %r0, -1
+#CHECK: error: invalid operand
+#CHECK: clgfi %r0, (1 << 32)
+
+ clgfi %r0, -1
+ clgfi %r0, (1 << 32)
+
+#CHECK: error: offset out of range
+#CHECK: clgfrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: clgfrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: clgfrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: clgfrl %r0, 0x100000000
+
+ clgfrl %r0, -0x1000000002
+ clgfrl %r0, -1
+ clgfrl %r0, 1
+ clgfrl %r0, 0x100000000
+
+#CHECK: error: offset out of range
+#CHECK: clghrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: clghrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: clghrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: clghrl %r0, 0x100000000
+
+ clghrl %r0, -0x1000000002
+ clghrl %r0, -1
+ clghrl %r0, 1
+ clghrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: clghsi -1, 0
+#CHECK: error: invalid operand
+#CHECK: clghsi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: clghsi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: clghsi 0, -1
+#CHECK: error: invalid operand
+#CHECK: clghsi 0, 65536
+
+ clghsi -1, 0
+ clghsi 4096, 0
+ clghsi 0(%r1,%r2), 0
+ clghsi 0, -1
+ clghsi 0, 65536
+
+#CHECK: error: offset out of range
+#CHECK: clgrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: clgrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: clgrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: clgrl %r0, 0x100000000
+
+ clgrl %r0, -0x1000000002
+ clgrl %r0, -1
+ clgrl %r0, 1
+ clgrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: clhhsi -1, 0
+#CHECK: error: invalid operand
+#CHECK: clhhsi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: clhhsi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: clhhsi 0, -1
+#CHECK: error: invalid operand
+#CHECK: clhhsi 0, 65536
+
+ clhhsi -1, 0
+ clhhsi 4096, 0
+ clhhsi 0(%r1,%r2), 0
+ clhhsi 0, -1
+ clhhsi 0, 65536
+
+#CHECK: error: offset out of range
+#CHECK: clhrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: clhrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: clhrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: clhrl %r0, 0x100000000
+
+ clhrl %r0, -0x1000000002
+ clhrl %r0, -1
+ clhrl %r0, 1
+ clhrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: cli -1, 0
+#CHECK: error: invalid operand
+#CHECK: cli 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: cli 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: cli 0, -1
+#CHECK: error: invalid operand
+#CHECK: cli 0, 256
+
+ cli -1, 0
+ cli 4096, 0
+ cli 0(%r1,%r2), 0
+ cli 0, -1
+ cli 0, 256
+
+#CHECK: error: invalid operand
+#CHECK: cliy -524289, 0
+#CHECK: error: invalid operand
+#CHECK: cliy 524288, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: cliy 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: cliy 0, -1
+#CHECK: error: invalid operand
+#CHECK: cliy 0, 256
+
+ cliy -524289, 0
+ cliy 524288, 0
+ cliy 0(%r1,%r2), 0
+ cliy 0, -1
+ cliy 0, 256
+
+#CHECK: error: offset out of range
+#CHECK: clrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: clrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: clrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: clrl %r0, 0x100000000
+
+ clrl %r0, -0x1000000002
+ clrl %r0, -1
+ clrl %r0, 1
+ clrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: cly %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: cly %r0, 524288
+
+ cly %r0, -524289
+ cly %r0, 524288
+
+#CHECK: error: offset out of range
+#CHECK: crl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: crl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: crl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: crl %r0, 0x100000000
+
+ crl %r0, -0x1000000002
+ crl %r0, -1
+ crl %r0, 1
+ crl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: cs %r0, %r0, -1
+#CHECK: error: invalid operand
+#CHECK: cs %r0, %r0, 4096
+#CHECK: error: invalid use of indexed addressing
+#CHECK: cs %r0, %r0, 0(%r1,%r2)
+
+ cs %r0, %r0, -1
+ cs %r0, %r0, 4096
+ cs %r0, %r0, 0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: csg %r0, %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: csg %r0, %r0, 524288
+#CHECK: error: invalid use of indexed addressing
+#CHECK: csg %r0, %r0, 0(%r1,%r2)
+
+ csg %r0, %r0, -524289
+ csg %r0, %r0, 524288
+ csg %r0, %r0, 0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: csy %r0, %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: csy %r0, %r0, 524288
+#CHECK: error: invalid use of indexed addressing
+#CHECK: csy %r0, %r0, 0(%r1,%r2)
+
+ csy %r0, %r0, -524289
+ csy %r0, %r0, 524288
+ csy %r0, %r0, 0(%r1,%r2)
+
+#CHECK: error: invalid register
+#CHECK: cxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: cxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: cxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: cxbr %f14, %f0
+
+ cxbr %f0, %f2
+ cxbr %f0, %f14
+ cxbr %f2, %f0
+ cxbr %f14, %f0
+
+
+#CHECK: error: invalid register
+#CHECK: cxfbr %r0, %r0
+#CHECK: error: invalid register
+#CHECK: cxfbr %f0, %f0
+#CHECK: error: invalid register
+#CHECK: cxfbr %f0, %a0
+#CHECK: error: invalid register
+#CHECK: cxfbr %a0, %r0
+#CHECK: error: invalid register
+#CHECK: cxfbr %f2, %r0
+#CHECK: error: invalid register
+#CHECK: cxfbr %f14, %r0
+
+ cxfbr %r0, %r0
+ cxfbr %f0, %f0
+ cxfbr %f0, %a0
+ cxfbr %a0, %r0
+ cxfbr %f2, %r0
+ cxfbr %f14, %r0
+
+#CHECK: error: invalid register
+#CHECK: cxgbr %r0, %r0
+#CHECK: error: invalid register
+#CHECK: cxgbr %f0, %f0
+#CHECK: error: invalid register
+#CHECK: cxgbr %f0, %a0
+#CHECK: error: invalid register
+#CHECK: cxgbr %a0, %r0
+#CHECK: error: invalid register
+#CHECK: cxgbr %f2, %r0
+#CHECK: error: invalid register
+#CHECK: cxgbr %f14, %r0
+
+ cxgbr %r0, %r0
+ cxgbr %f0, %f0
+ cxgbr %f0, %a0
+ cxgbr %a0, %r0
+ cxgbr %f2, %r0
+ cxgbr %f14, %r0
+
+#CHECK: error: invalid operand
+#CHECK: cy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: cy %r0, 524288
+
+ cy %r0, -524289
+ cy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: ddb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: ddb %f0, 4096
+
+ ddb %f0, -1
+ ddb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: deb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: deb %f0, 4096
+
+ deb %f0, -1
+ deb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: dl %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: dl %r0, 524288
+#CHECK: error: invalid register
+#CHECK: dl %r1, 0
+#CHECK: error: invalid register
+#CHECK: dl %r15, 0
+
+ dl %r0, -524289
+ dl %r0, 524288
+ dl %r1, 0
+ dl %r15, 0
+
+#CHECK: error: invalid operand
+#CHECK: dlg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: dlg %r0, 524288
+#CHECK: error: invalid register
+#CHECK: dlg %r1, 0
+#CHECK: error: invalid register
+#CHECK: dlg %r15, 0
+
+ dlg %r0, -524289
+ dlg %r0, 524288
+ dlg %r1, 0
+ dlg %r15, 0
+
+#CHECK: error: invalid register
+#CHECK: dlgr %r1, %r0
+#CHECK: error: invalid register
+#CHECK: dlgr %r15, %r0
+
+ dlgr %r1, %r0
+ dlgr %r15, %r0
+
+#CHECK: error: invalid register
+#CHECK: dlr %r1, %r0
+#CHECK: error: invalid register
+#CHECK: dlr %r15, %r0
+
+ dlr %r1, %r0
+ dlr %r15, %r0
+
+#CHECK: error: invalid operand
+#CHECK: dsg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: dsg %r0, 524288
+#CHECK: error: invalid register
+#CHECK: dsg %r1, 0
+#CHECK: error: invalid register
+#CHECK: dsg %r15, 0
+
+ dsg %r0, -524289
+ dsg %r0, 524288
+ dsg %r1, 0
+ dsg %r15, 0
+
+#CHECK: error: invalid operand
+#CHECK: dsgf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: dsgf %r0, 524288
+#CHECK: error: invalid register
+#CHECK: dsgf %r1, 0
+#CHECK: error: invalid register
+#CHECK: dsgf %r15, 0
+
+ dsgf %r0, -524289
+ dsgf %r0, 524288
+ dsgf %r1, 0
+ dsgf %r15, 0
+
+#CHECK: error: invalid register
+#CHECK: dsgfr %r1, %r0
+#CHECK: error: invalid register
+#CHECK: dsgfr %r15, %r0
+
+ dsgfr %r1, %r0
+ dsgfr %r15, %r0
+
+#CHECK: error: invalid register
+#CHECK: dsgr %r1, %r0
+#CHECK: error: invalid register
+#CHECK: dsgr %r15, %r0
+
+ dsgr %r1, %r0
+ dsgr %r15, %r0
+
+#CHECK: error: invalid register
+#CHECK: dxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: dxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: dxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: dxbr %f14, %f0
+
+ dxbr %f0, %f2
+ dxbr %f0, %f14
+ dxbr %f2, %f0
+ dxbr %f14, %f0
+
+
+#CHECK: error: invalid operand
+#CHECK: ear %r0, 0
+#CHECK: error: invalid register
+#CHECK: ear %r0, %r0
+#CHECK: error: invalid register
+#CHECK: ear %a0, %r0
+
+ ear %r0, 0
+ ear %r0, %r0
+ ear %a0, %r0
+
+#CHECK: error: invalid register
+#CHECK: fidbr %r0, 0, %f0
+#CHECK: error: invalid register
+#CHECK: fidbr %f0, 0, %r0
+#CHECK: error: invalid operand
+#CHECK: fidbr %f0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: fidbr %f0, 16, %f0
+
+ fidbr %r0, 0, %f0
+ fidbr %f0, 0, %r0
+ fidbr %f0, -1, %f0
+ fidbr %f0, 16, %f0
+
+#CHECK: error: invalid register
+#CHECK: fiebr %r0, 0, %f0
+#CHECK: error: invalid register
+#CHECK: fiebr %f0, 0, %r0
+#CHECK: error: invalid operand
+#CHECK: fiebr %f0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: fiebr %f0, 16, %f0
+
+ fiebr %r0, 0, %f0
+ fiebr %f0, 0, %r0
+ fiebr %f0, -1, %f0
+ fiebr %f0, 16, %f0
+
+#CHECK: error: invalid register
+#CHECK: fixbr %r0, 0, %f0
+#CHECK: error: invalid register
+#CHECK: fixbr %f0, 0, %r0
+#CHECK: error: invalid operand
+#CHECK: fixbr %f0, -1, %f0
+#CHECK: error: invalid operand
+#CHECK: fixbr %f0, 16, %f0
+#CHECK: error: invalid register
+#CHECK: fixbr %f0, 0, %f2
+#CHECK: error: invalid register
+#CHECK: fixbr %f0, 0, %f14
+#CHECK: error: invalid register
+#CHECK: fixbr %f2, 0, %f0
+#CHECK: error: invalid register
+#CHECK: fixbr %f14, 0, %f0
+
+ fixbr %r0, 0, %f0
+ fixbr %f0, 0, %r0
+ fixbr %f0, -1, %f0
+ fixbr %f0, 16, %f0
+ fixbr %f0, 0, %f2
+ fixbr %f0, 0, %f14
+ fixbr %f2, 0, %f0
+ fixbr %f14, 0, %f0
+
+#CHECK: error: invalid register
+#CHECK: flogr %r1, %r0
+#CHECK: error: invalid register
+#CHECK: flogr %r15, %r0
+
+ flogr %r1, %r0
+ flogr %r15, %r0
+
+#CHECK: error: invalid operand
+#CHECK: ic %r0, -1
+#CHECK: error: invalid operand
+#CHECK: ic %r0, 4096
+
+ ic %r0, -1
+ ic %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: icy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: icy %r0, 524288
+
+ icy %r0, -524289
+ icy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: iihf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: iihf %r0, 1 << 32
+
+ iihf %r0, -1
+ iihf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: iihh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: iihh %r0, 0x10000
+
+ iihh %r0, -1
+ iihh %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: iihl %r0, -1
+#CHECK: error: invalid operand
+#CHECK: iihl %r0, 0x10000
+
+ iihl %r0, -1
+ iihl %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: iilf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: iilf %r0, 1 << 32
+
+ iilf %r0, -1
+ iilf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: iilh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: iilh %r0, 0x10000
+
+ iilh %r0, -1
+ iilh %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: iill %r0, -1
+#CHECK: error: invalid operand
+#CHECK: iill %r0, 0x10000
+
+ iill %r0, -1
+ iill %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: l %r0, -1
+#CHECK: error: invalid operand
+#CHECK: l %r0, 4096
+
+ l %r0, -1
+ l %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: la %r0, -1
+#CHECK: error: invalid operand
+#CHECK: la %r0, 4096
+
+ la %r0, -1
+ la %r0, 4096
+
+#CHECK: error: offset out of range
+#CHECK: larl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: larl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: larl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: larl %r0, 0x100000000
+
+ larl %r0, -0x1000000002
+ larl %r0, -1
+ larl %r0, 1
+ larl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: lay %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lay %r0, 524288
+
+ lay %r0, -524289
+ lay %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: lb %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lb %r0, 524288
+
+ lb %r0, -524289
+ lb %r0, 524288
+
+#CHECK: error: invalid register
+#CHECK: lcxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: lcxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: lcxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: lcxbr %f14, %f0
+
+ lcxbr %f0, %f2
+ lcxbr %f0, %f14
+ lcxbr %f2, %f0
+ lcxbr %f14, %f0
+
+
+#CHECK: error: invalid operand
+#CHECK: ld %f0, -1
+#CHECK: error: invalid operand
+#CHECK: ld %f0, 4096
+
+ ld %f0, -1
+ ld %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: ldeb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: ldeb %f0, 4096
+
+ ldeb %f0, -1
+ ldeb %f0, 4096
+
+#CHECK: error: invalid register
+#CHECK: ldgr %f0, %f0
+#CHECK: error: invalid register
+#CHECK: ldgr %r0, %r0
+#CHECK: error: invalid register
+#CHECK: ldgr %f0, %a0
+#CHECK: error: invalid register
+#CHECK: ldgr %a0, %r0
+
+ ldgr %f0, %f0
+ ldgr %r0, %r0
+ ldgr %f0, %a0
+ ldgr %a0, %r0
+
+#CHECK: error: invalid register
+#CHECK: ldxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: ldxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: ldxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: ldxbr %f14, %f0
+
+ ldxbr %f0, %f2
+ ldxbr %f0, %f14
+ ldxbr %f2, %f0
+ ldxbr %f14, %f0
+
+#CHECK: error: invalid operand
+#CHECK: ldy %f0, -524289
+#CHECK: error: invalid operand
+#CHECK: ldy %f0, 524288
+
+ ldy %f0, -524289
+ ldy %f0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: le %f0, -1
+#CHECK: error: invalid operand
+#CHECK: le %f0, 4096
+
+ le %f0, -1
+ le %f0, 4096
+
+#CHECK: error: invalid register
+#CHECK: lexbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: lexbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: lexbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: lexbr %f14, %f0
+
+ lexbr %f0, %f2
+ lexbr %f0, %f14
+ lexbr %f2, %f0
+ lexbr %f14, %f0
+
+#CHECK: error: invalid operand
+#CHECK: ley %f0, -524289
+#CHECK: error: invalid operand
+#CHECK: ley %f0, 524288
+
+ ley %f0, -524289
+ ley %f0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: lg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lg %r0, 524288
+
+ lg %r0, -524289
+ lg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: lgb %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lgb %r0, 524288
+
+ lgb %r0, -524289
+ lgb %r0, 524288
+
+#CHECK: error: invalid register
+#CHECK: lgdr %f0, %f0
+#CHECK: error: invalid register
+#CHECK: lgdr %r0, %r0
+#CHECK: error: invalid register
+#CHECK: lgdr %r0, %a0
+#CHECK: error: invalid register
+#CHECK: lgdr %a0, %f0
+
+ lgdr %f0, %f0
+ lgdr %r0, %r0
+ lgdr %r0, %a0
+ lgdr %a0, %f0
+
+#CHECK: error: invalid operand
+#CHECK: lgf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lgf %r0, 524288
+
+ lgf %r0, -524289
+ lgf %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: lgfi %r0, (-1 << 31) - 1
+#CHECK: error: invalid operand
+#CHECK: lgfi %r0, (1 << 31)
+
+ lgfi %r0, (-1 << 31) - 1
+ lgfi %r0, (1 << 31)
+
+#CHECK: error: offset out of range
+#CHECK: lgfrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: lgfrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: lgfrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: lgfrl %r0, 0x100000000
+
+ lgfrl %r0, -0x1000000002
+ lgfrl %r0, -1
+ lgfrl %r0, 1
+ lgfrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: lgh %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lgh %r0, 524288
+
+ lgh %r0, -524289
+ lgh %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: lghi %r0, -32769
+#CHECK: error: invalid operand
+#CHECK: lghi %r0, 32768
+#CHECK: error: invalid operand
+#CHECK: lghi %r0, foo
+
+ lghi %r0, -32769
+ lghi %r0, 32768
+ lghi %r0, foo
+
+#CHECK: error: offset out of range
+#CHECK: lghrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: lghrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: lghrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: lghrl %r0, 0x100000000
+
+ lghrl %r0, -0x1000000002
+ lghrl %r0, -1
+ lghrl %r0, 1
+ lghrl %r0, 0x100000000
+
+#CHECK: error: offset out of range
+#CHECK: lgrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: lgrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: lgrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: lgrl %r0, 0x100000000
+
+ lgrl %r0, -0x1000000002
+ lgrl %r0, -1
+ lgrl %r0, 1
+ lgrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: lh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: lh %r0, 4096
+
+ lh %r0, -1
+ lh %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: lhi %r0, -32769
+#CHECK: error: invalid operand
+#CHECK: lhi %r0, 32768
+#CHECK: error: invalid operand
+#CHECK: lhi %r0, foo
+
+ lhi %r0, -32769
+ lhi %r0, 32768
+ lhi %r0, foo
+
+#CHECK: error: offset out of range
+#CHECK: lhrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: lhrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: lhrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: lhrl %r0, 0x100000000
+
+ lhrl %r0, -0x1000000002
+ lhrl %r0, -1
+ lhrl %r0, 1
+ lhrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: lhy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lhy %r0, 524288
+
+ lhy %r0, -524289
+ lhy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: llc %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: llc %r0, 524288
+
+ llc %r0, -524289
+ llc %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: llgc %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: llgc %r0, 524288
+
+ llgc %r0, -524289
+ llgc %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: llgf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: llgf %r0, 524288
+
+ llgf %r0, -524289
+ llgf %r0, 524288
+
+#CHECK: error: offset out of range
+#CHECK: llgfrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: llgfrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: llgfrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: llgfrl %r0, 0x100000000
+
+ llgfrl %r0, -0x1000000002
+ llgfrl %r0, -1
+ llgfrl %r0, 1
+ llgfrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: llgh %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: llgh %r0, 524288
+
+ llgh %r0, -524289
+ llgh %r0, 524288
+
+#CHECK: error: offset out of range
+#CHECK: llghrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: llghrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: llghrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: llghrl %r0, 0x100000000
+
+ llghrl %r0, -0x1000000002
+ llghrl %r0, -1
+ llghrl %r0, 1
+ llghrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: llh %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: llh %r0, 524288
+
+ llh %r0, -524289
+ llh %r0, 524288
+
+#CHECK: error: offset out of range
+#CHECK: llhrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: llhrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: llhrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: llhrl %r0, 0x100000000
+
+ llhrl %r0, -0x1000000002
+ llhrl %r0, -1
+ llhrl %r0, 1
+ llhrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: llihf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: llihf %r0, 1 << 32
+
+ llihf %r0, -1
+ llihf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: llihh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: llihh %r0, 0x10000
+
+ llihh %r0, -1
+ llihh %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: llihl %r0, -1
+#CHECK: error: invalid operand
+#CHECK: llihl %r0, 0x10000
+
+ llihl %r0, -1
+ llihl %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: llilf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: llilf %r0, 1 << 32
+
+ llilf %r0, -1
+ llilf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: llilh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: llilh %r0, 0x10000
+
+ llilh %r0, -1
+ llilh %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: llill %r0, -1
+#CHECK: error: invalid operand
+#CHECK: llill %r0, 0x10000
+
+ llill %r0, -1
+ llill %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: lmg %r0, %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lmg %r0, %r0, 524288
+#CHECK: error: invalid use of indexed addressing
+#CHECK: lmg %r0, %r0, 0(%r1,%r2)
+
+ lmg %r0, %r0, -524289
+ lmg %r0, %r0, 524288
+ lmg %r0, %r0, 0(%r1,%r2)
+
+#CHECK: error: invalid register
+#CHECK: lnxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: lnxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: lnxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: lnxbr %f14, %f0
+
+ lnxbr %f0, %f2
+ lnxbr %f0, %f14
+ lnxbr %f2, %f0
+ lnxbr %f14, %f0
+
+
+#CHECK: error: invalid register
+#CHECK: lpxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: lpxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: lpxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: lpxbr %f14, %f0
+
+ lpxbr %f0, %f2
+ lpxbr %f0, %f14
+ lpxbr %f2, %f0
+ lpxbr %f14, %f0
+
+
+#CHECK: error: offset out of range
+#CHECK: lrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: lrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: lrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: lrl %r0, 0x100000000
+
+ lrl %r0, -0x1000000002
+ lrl %r0, -1
+ lrl %r0, 1
+ lrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: lrv %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lrv %r0, 524288
+
+ lrv %r0, -524289
+ lrv %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: lrvg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: lrvg %r0, 524288
+
+ lrvg %r0, -524289
+ lrvg %r0, 524288
+
+#CHECK: error: invalid register
+#CHECK: lxr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: lxr %f15, %f0
+#CHECK: error: invalid register
+#CHECK: lxr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: lxr %f0, %f15
+
+ lxr %f2, %f0
+ lxr %f15, %f0
+ lxr %f0, %f2
+ lxr %f0, %f15
+
+#CHECK: error: invalid operand
+#CHECK: ly %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: ly %r0, 524288
+
+ ly %r0, -524289
+ ly %r0, 524288
+
+#CHECK: error: invalid register
+#CHECK: lzxr %f2
+#CHECK: error: invalid register
+#CHECK: lzxr %f14
+#CHECK: error: invalid register
+#CHECK: lzxr %f15
+
+ lzxr %f2
+ lzxr %f14
+ lzxr %f15
+
+#CHECK: error: invalid operand
+#CHECK: madb %f0, %f0, -1
+#CHECK: error: invalid operand
+#CHECK: madb %f0, %f0, 4096
+
+ madb %f0, %f0, -1
+ madb %f0, %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: maeb %f0, %f0, -1
+#CHECK: error: invalid operand
+#CHECK: maeb %f0, %f0, 4096
+
+ maeb %f0, %f0, -1
+ maeb %f0, %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: mdb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: mdb %f0, 4096
+
+ mdb %f0, -1
+ mdb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: mdeb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: mdeb %f0, 4096
+
+ mdeb %f0, -1
+ mdeb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: meeb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: meeb %f0, 4096
+
+ meeb %f0, -1
+ meeb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: mghi %r0, -32769
+#CHECK: error: invalid operand
+#CHECK: mghi %r0, 32768
+#CHECK: error: invalid operand
+#CHECK: mghi %r0, foo
+
+ mghi %r0, -32769
+ mghi %r0, 32768
+ mghi %r0, foo
+
+#CHECK: error: invalid operand
+#CHECK: mh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: mh %r0, 4096
+
+ mh %r0, -1
+ mh %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: mhi %r0, -32769
+#CHECK: error: invalid operand
+#CHECK: mhi %r0, 32768
+#CHECK: error: invalid operand
+#CHECK: mhi %r0, foo
+
+ mhi %r0, -32769
+ mhi %r0, 32768
+ mhi %r0, foo
+
+#CHECK: error: invalid operand
+#CHECK: mhy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: mhy %r0, 524288
+
+ mhy %r0, -524289
+ mhy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: mlg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: mlg %r0, 524288
+#CHECK: error: invalid register
+#CHECK: mlg %r1, 0
+#CHECK: error: invalid register
+#CHECK: mlg %r15, 0
+
+ mlg %r0, -524289
+ mlg %r0, 524288
+ mlg %r1, 0
+ mlg %r15, 0
+
+#CHECK: error: invalid register
+#CHECK: mlgr %r1, %r0
+#CHECK: error: invalid register
+#CHECK: mlgr %r15, %r0
+
+ mlgr %r1, %r0
+ mlgr %r15, %r0
+
+#CHECK: error: invalid operand
+#CHECK: ms %r0, -1
+#CHECK: error: invalid operand
+#CHECK: ms %r0, 4096
+
+ ms %r0, -1
+ ms %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: msdb %f0, %f0, -1
+#CHECK: error: invalid operand
+#CHECK: msdb %f0, %f0, 4096
+
+ msdb %f0, %f0, -1
+ msdb %f0, %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: mseb %f0, %f0, -1
+#CHECK: error: invalid operand
+#CHECK: mseb %f0, %f0, 4096
+
+ mseb %f0, %f0, -1
+ mseb %f0, %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: msfi %r0, (-1 << 31) - 1
+#CHECK: error: invalid operand
+#CHECK: msfi %r0, (1 << 31)
+
+ msfi %r0, (-1 << 31) - 1
+ msfi %r0, (1 << 31)
+
+#CHECK: error: invalid operand
+#CHECK: msg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: msg %r0, 524288
+
+ msg %r0, -524289
+ msg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: msgf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: msgf %r0, 524288
+
+ msgf %r0, -524289
+ msgf %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: msgfi %r0, (-1 << 31) - 1
+#CHECK: error: invalid operand
+#CHECK: msgfi %r0, (1 << 31)
+
+ msgfi %r0, (-1 << 31) - 1
+ msgfi %r0, (1 << 31)
+
+#CHECK: error: invalid operand
+#CHECK: msy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: msy %r0, 524288
+
+ msy %r0, -524289
+ msy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: mvghi -1, 0
+#CHECK: error: invalid operand
+#CHECK: mvghi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: mvghi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: mvghi 0, -32769
+#CHECK: error: invalid operand
+#CHECK: mvghi 0, 32768
+
+ mvghi -1, 0
+ mvghi 4096, 0
+ mvghi 0(%r1,%r2), 0
+ mvghi 0, -32769
+ mvghi 0, 32768
+
+#CHECK: error: invalid operand
+#CHECK: mvhhi -1, 0
+#CHECK: error: invalid operand
+#CHECK: mvhhi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: mvhhi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: mvhhi 0, -32769
+#CHECK: error: invalid operand
+#CHECK: mvhhi 0, 32768
+
+ mvhhi -1, 0
+ mvhhi 4096, 0
+ mvhhi 0(%r1,%r2), 0
+ mvhhi 0, -32769
+ mvhhi 0, 32768
+
+#CHECK: error: invalid operand
+#CHECK: mvhi -1, 0
+#CHECK: error: invalid operand
+#CHECK: mvhi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: mvhi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: mvhi 0, -32769
+#CHECK: error: invalid operand
+#CHECK: mvhi 0, 32768
+
+ mvhi -1, 0
+ mvhi 4096, 0
+ mvhi 0(%r1,%r2), 0
+ mvhi 0, -32769
+ mvhi 0, 32768
+
+#CHECK: error: invalid operand
+#CHECK: mvi -1, 0
+#CHECK: error: invalid operand
+#CHECK: mvi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: mvi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: mvi 0, -1
+#CHECK: error: invalid operand
+#CHECK: mvi 0, 256
+
+ mvi -1, 0
+ mvi 4096, 0
+ mvi 0(%r1,%r2), 0
+ mvi 0, -1
+ mvi 0, 256
+
+#CHECK: error: invalid operand
+#CHECK: mviy -524289, 0
+#CHECK: error: invalid operand
+#CHECK: mviy 524288, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: mviy 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: mviy 0, -1
+#CHECK: error: invalid operand
+#CHECK: mviy 0, 256
+
+ mviy -524289, 0
+ mviy 524288, 0
+ mviy 0(%r1,%r2), 0
+ mviy 0, -1
+ mviy 0, 256
+
+#CHECK: error: invalid register
+#CHECK: mxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: mxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: mxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: mxbr %f14, %f0
+
+ mxbr %f0, %f2
+ mxbr %f0, %f14
+ mxbr %f2, %f0
+ mxbr %f14, %f0
+
+
+#CHECK: error: invalid register
+#CHECK: mxdb %f2, 0
+#CHECK: error: invalid register
+#CHECK: mxdb %f15, 0
+#CHECK: error: invalid operand
+#CHECK: mxdb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: mxdb %f0, 4096
+
+ mxdb %f2, 0
+ mxdb %f15, 0
+ mxdb %f0, -1
+ mxdb %f0, 4096
+
+#CHECK: error: invalid register
+#CHECK: mxdbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: mxdbr %f15, %f0
+
+ mxdbr %f2, %f0
+ mxdbr %f15, %f0
+
+#CHECK: error: invalid operand
+#CHECK: n %r0, -1
+#CHECK: error: invalid operand
+#CHECK: n %r0, 4096
+
+ n %r0, -1
+ n %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: ng %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: ng %r0, 524288
+
+ ng %r0, -524289
+ ng %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: ni -1, 0
+#CHECK: error: invalid operand
+#CHECK: ni 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: ni 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: ni 0, -1
+#CHECK: error: invalid operand
+#CHECK: ni 0, 256
+
+ ni -1, 0
+ ni 4096, 0
+ ni 0(%r1,%r2), 0
+ ni 0, -1
+ ni 0, 256
+
+#CHECK: error: invalid operand
+#CHECK: nihf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: nihf %r0, 1 << 32
+
+ nihf %r0, -1
+ nihf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: nihh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: nihh %r0, 0x10000
+
+ nihh %r0, -1
+ nihh %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: nihl %r0, -1
+#CHECK: error: invalid operand
+#CHECK: nihl %r0, 0x10000
+
+ nihl %r0, -1
+ nihl %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: nilf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: nilf %r0, 1 << 32
+
+ nilf %r0, -1
+ nilf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: nilh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: nilh %r0, 0x10000
+
+ nilh %r0, -1
+ nilh %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: nill %r0, -1
+#CHECK: error: invalid operand
+#CHECK: nill %r0, 0x10000
+
+ nill %r0, -1
+ nill %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: niy -524289, 0
+#CHECK: error: invalid operand
+#CHECK: niy 524288, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: niy 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: niy 0, -1
+#CHECK: error: invalid operand
+#CHECK: niy 0, 256
+
+ niy -524289, 0
+ niy 524288, 0
+ niy 0(%r1,%r2), 0
+ niy 0, -1
+ niy 0, 256
+
+#CHECK: error: invalid operand
+#CHECK: ny %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: ny %r0, 524288
+
+ ny %r0, -524289
+ ny %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: o %r0, -1
+#CHECK: error: invalid operand
+#CHECK: o %r0, 4096
+
+ o %r0, -1
+ o %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: og %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: og %r0, 524288
+
+ og %r0, -524289
+ og %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: oi -1, 0
+#CHECK: error: invalid operand
+#CHECK: oi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: oi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: oi 0, -1
+#CHECK: error: invalid operand
+#CHECK: oi 0, 256
+
+ oi -1, 0
+ oi 4096, 0
+ oi 0(%r1,%r2), 0
+ oi 0, -1
+ oi 0, 256
+
+#CHECK: error: invalid operand
+#CHECK: oihf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: oihf %r0, 1 << 32
+
+ oihf %r0, -1
+ oihf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: oihh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: oihh %r0, 0x10000
+
+ oihh %r0, -1
+ oihh %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: oihl %r0, -1
+#CHECK: error: invalid operand
+#CHECK: oihl %r0, 0x10000
+
+ oihl %r0, -1
+ oihl %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: oilf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: oilf %r0, 1 << 32
+
+ oilf %r0, -1
+ oilf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: oilh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: oilh %r0, 0x10000
+
+ oilh %r0, -1
+ oilh %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: oill %r0, -1
+#CHECK: error: invalid operand
+#CHECK: oill %r0, 0x10000
+
+ oill %r0, -1
+ oill %r0, 0x10000
+
+#CHECK: error: invalid operand
+#CHECK: oiy -524289, 0
+#CHECK: error: invalid operand
+#CHECK: oiy 524288, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: oiy 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: oiy 0, -1
+#CHECK: error: invalid operand
+#CHECK: oiy 0, 256
+
+ oiy -524289, 0
+ oiy 524288, 0
+ oiy 0(%r1,%r2), 0
+ oiy 0, -1
+ oiy 0, 256
+
+#CHECK: error: invalid operand
+#CHECK: oy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: oy %r0, 524288
+
+ oy %r0, -524289
+ oy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: risbg %r0,%r0,0,0,-1
+#CHECK: error: invalid operand
+#CHECK: risbg %r0,%r0,0,0,64
+#CHECK: error: invalid operand
+#CHECK: risbg %r0,%r0,0,-1,0
+#CHECK: error: invalid operand
+#CHECK: risbg %r0,%r0,0,64,0
+#CHECK: error: invalid operand
+#CHECK: risbg %r0,%r0,-1,0,0
+#CHECK: error: invalid operand
+#CHECK: risbg %r0,%r0,64,0,0
+
+ risbg %r0,%r0,0,0,-1
+ risbg %r0,%r0,0,0,64
+ risbg %r0,%r0,0,-1,0
+ risbg %r0,%r0,0,64,0
+ risbg %r0,%r0,-1,0,0
+ risbg %r0,%r0,64,0,0
+
+#CHECK: error: invalid operand
+#CHECK: rll %r0,%r0,-524289
+#CHECK: error: invalid operand
+#CHECK: rll %r0,%r0,524288
+#CHECK: error: %r0 used in an address
+#CHECK: rll %r0,%r0,0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: rll %r0,%r0,0(%r1,%r2)
+
+ rll %r0,%r0,-524289
+ rll %r0,%r0,524288
+ rll %r0,%r0,0(%r0)
+ rll %r0,%r0,0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: rllg %r0,%r0,-524289
+#CHECK: error: invalid operand
+#CHECK: rllg %r0,%r0,524288
+#CHECK: error: %r0 used in an address
+#CHECK: rllg %r0,%r0,0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: rllg %r0,%r0,0(%r1,%r2)
+
+ rllg %r0,%r0,-524289
+ rllg %r0,%r0,524288
+ rllg %r0,%r0,0(%r0)
+ rllg %r0,%r0,0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: s %r0, -1
+#CHECK: error: invalid operand
+#CHECK: s %r0, 4096
+
+ s %r0, -1
+ s %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: sdb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: sdb %f0, 4096
+
+ sdb %f0, -1
+ sdb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: seb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: seb %f0, 4096
+
+ seb %f0, -1
+ seb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: sg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: sg %r0, 524288
+
+ sg %r0, -524289
+ sg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: sgf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: sgf %r0, 524288
+
+ sgf %r0, -524289
+ sgf %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: sh %r0, -1
+#CHECK: error: invalid operand
+#CHECK: sh %r0, 4096
+
+ sh %r0, -1
+ sh %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: shy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: shy %r0, 524288
+
+ shy %r0, -524289
+ shy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: sl %r0, -1
+#CHECK: error: invalid operand
+#CHECK: sl %r0, 4096
+
+ sl %r0, -1
+ sl %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: slb %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: slb %r0, 524288
+
+ slb %r0, -524289
+ slb %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: slbg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: slbg %r0, 524288
+
+ slbg %r0, -524289
+ slbg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: slfi %r0, -1
+#CHECK: error: invalid operand
+#CHECK: slfi %r0, (1 << 32)
+
+ slfi %r0, -1
+ slfi %r0, (1 << 32)
+
+#CHECK: error: invalid operand
+#CHECK: slg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: slg %r0, 524288
+
+ slg %r0, -524289
+ slg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: slgf %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: slgf %r0, 524288
+
+ slgf %r0, -524289
+ slgf %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: slgfi %r0, -1
+#CHECK: error: invalid operand
+#CHECK: slgfi %r0, (1 << 32)
+
+ slgfi %r0, -1
+ slgfi %r0, (1 << 32)
+
+#CHECK: error: invalid operand
+#CHECK: sll %r0,-1
+#CHECK: error: invalid operand
+#CHECK: sll %r0,4096
+#CHECK: error: %r0 used in an address
+#CHECK: sll %r0,0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: sll %r0,0(%r1,%r2)
+
+ sll %r0,-1
+ sll %r0,4096
+ sll %r0,0(%r0)
+ sll %r0,0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: sllg %r0,%r0,-524289
+#CHECK: error: invalid operand
+#CHECK: sllg %r0,%r0,524288
+#CHECK: error: %r0 used in an address
+#CHECK: sllg %r0,%r0,0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: sllg %r0,%r0,0(%r1,%r2)
+
+ sllg %r0,%r0,-524289
+ sllg %r0,%r0,524288
+ sllg %r0,%r0,0(%r0)
+ sllg %r0,%r0,0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: sly %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: sly %r0, 524288
+
+ sly %r0, -524289
+ sly %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: sqdb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: sqdb %f0, 4096
+
+ sqdb %f0, -1
+ sqdb %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: sqeb %f0, -1
+#CHECK: error: invalid operand
+#CHECK: sqeb %f0, 4096
+
+ sqeb %f0, -1
+ sqeb %f0, 4096
+
+#CHECK: error: invalid register
+#CHECK: sqxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: sqxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: sqxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: sqxbr %f14, %f0
+
+ sqxbr %f0, %f2
+ sqxbr %f0, %f14
+ sqxbr %f2, %f0
+ sqxbr %f14, %f0
+
+
+#CHECK: error: invalid operand
+#CHECK: sra %r0,-1
+#CHECK: error: invalid operand
+#CHECK: sra %r0,4096
+#CHECK: error: %r0 used in an address
+#CHECK: sra %r0,0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: sra %r0,0(%r1,%r2)
+
+ sra %r0,-1
+ sra %r0,4096
+ sra %r0,0(%r0)
+ sra %r0,0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: srag %r0,%r0,-524289
+#CHECK: error: invalid operand
+#CHECK: srag %r0,%r0,524288
+#CHECK: error: %r0 used in an address
+#CHECK: srag %r0,%r0,0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: srag %r0,%r0,0(%r1,%r2)
+
+ srag %r0,%r0,-524289
+ srag %r0,%r0,524288
+ srag %r0,%r0,0(%r0)
+ srag %r0,%r0,0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: srl %r0,-1
+#CHECK: error: invalid operand
+#CHECK: srl %r0,4096
+#CHECK: error: %r0 used in an address
+#CHECK: srl %r0,0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: srl %r0,0(%r1,%r2)
+
+ srl %r0,-1
+ srl %r0,4096
+ srl %r0,0(%r0)
+ srl %r0,0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: srlg %r0,%r0,-524289
+#CHECK: error: invalid operand
+#CHECK: srlg %r0,%r0,524288
+#CHECK: error: %r0 used in an address
+#CHECK: srlg %r0,%r0,0(%r0)
+#CHECK: error: invalid use of indexed addressing
+#CHECK: srlg %r0,%r0,0(%r1,%r2)
+
+ srlg %r0,%r0,-524289
+ srlg %r0,%r0,524288
+ srlg %r0,%r0,0(%r0)
+ srlg %r0,%r0,0(%r1,%r2)
+
+#CHECK: error: invalid operand
+#CHECK: st %r0, -1
+#CHECK: error: invalid operand
+#CHECK: st %r0, 4096
+
+ st %r0, -1
+ st %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: stc %r0, -1
+#CHECK: error: invalid operand
+#CHECK: stc %r0, 4096
+
+ stc %r0, -1
+ stc %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: stcy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: stcy %r0, 524288
+
+ stcy %r0, -524289
+ stcy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: std %f0, -1
+#CHECK: error: invalid operand
+#CHECK: std %f0, 4096
+
+ std %f0, -1
+ std %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: stdy %f0, -524289
+#CHECK: error: invalid operand
+#CHECK: stdy %f0, 524288
+
+ stdy %f0, -524289
+ stdy %f0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: ste %f0, -1
+#CHECK: error: invalid operand
+#CHECK: ste %f0, 4096
+
+ ste %f0, -1
+ ste %f0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: stey %f0, -524289
+#CHECK: error: invalid operand
+#CHECK: stey %f0, 524288
+
+ stey %f0, -524289
+ stey %f0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: stg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: stg %r0, 524288
+
+ stg %r0, -524289
+ stg %r0, 524288
+
+#CHECK: error: offset out of range
+#CHECK: stgrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: stgrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: stgrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: stgrl %r0, 0x100000000
+
+ stgrl %r0, -0x1000000002
+ stgrl %r0, -1
+ stgrl %r0, 1
+ stgrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: sth %r0, -1
+#CHECK: error: invalid operand
+#CHECK: sth %r0, 4096
+
+ sth %r0, -1
+ sth %r0, 4096
+
+#CHECK: error: offset out of range
+#CHECK: sthrl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: sthrl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: sthrl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: sthrl %r0, 0x100000000
+
+ sthrl %r0, -0x1000000002
+ sthrl %r0, -1
+ sthrl %r0, 1
+ sthrl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: sthy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: sthy %r0, 524288
+
+ sthy %r0, -524289
+ sthy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: stmg %r0, %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: stmg %r0, %r0, 524288
+#CHECK: error: invalid use of indexed addressing
+#CHECK: stmg %r0, %r0, 0(%r1,%r2)
+
+ stmg %r0, %r0, -524289
+ stmg %r0, %r0, 524288
+ stmg %r0, %r0, 0(%r1,%r2)
+
+#CHECK: error: offset out of range
+#CHECK: strl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: strl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: strl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: strl %r0, 0x100000000
+
+ strl %r0, -0x1000000002
+ strl %r0, -1
+ strl %r0, 1
+ strl %r0, 0x100000000
+
+#CHECK: error: invalid operand
+#CHECK: strv %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: strv %r0, 524288
+
+ strv %r0, -524289
+ strv %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: strvg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: strvg %r0, 524288
+
+ strvg %r0, -524289
+ strvg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: sty %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: sty %r0, 524288
+
+ sty %r0, -524289
+ sty %r0, 524288
+
+#CHECK: error: invalid register
+#CHECK: sxbr %f0, %f2
+#CHECK: error: invalid register
+#CHECK: sxbr %f0, %f14
+#CHECK: error: invalid register
+#CHECK: sxbr %f2, %f0
+#CHECK: error: invalid register
+#CHECK: sxbr %f14, %f0
+
+ sxbr %f0, %f2
+ sxbr %f0, %f14
+ sxbr %f2, %f0
+ sxbr %f14, %f0
+
+
+#CHECK: error: invalid operand
+#CHECK: sy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: sy %r0, 524288
+
+ sy %r0, -524289
+ sy %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: x %r0, -1
+#CHECK: error: invalid operand
+#CHECK: x %r0, 4096
+
+ x %r0, -1
+ x %r0, 4096
+
+#CHECK: error: invalid operand
+#CHECK: xg %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: xg %r0, 524288
+
+ xg %r0, -524289
+ xg %r0, 524288
+
+#CHECK: error: invalid operand
+#CHECK: xi -1, 0
+#CHECK: error: invalid operand
+#CHECK: xi 4096, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: xi 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: xi 0, -1
+#CHECK: error: invalid operand
+#CHECK: xi 0, 256
+
+ xi -1, 0
+ xi 4096, 0
+ xi 0(%r1,%r2), 0
+ xi 0, -1
+ xi 0, 256
+
+#CHECK: error: invalid operand
+#CHECK: xihf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: xihf %r0, 1 << 32
+
+ xihf %r0, -1
+ xihf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: xilf %r0, -1
+#CHECK: error: invalid operand
+#CHECK: xilf %r0, 1 << 32
+
+ xilf %r0, -1
+ xilf %r0, 1 << 32
+
+#CHECK: error: invalid operand
+#CHECK: xiy -524289, 0
+#CHECK: error: invalid operand
+#CHECK: xiy 524288, 0
+#CHECK: error: invalid use of indexed addressing
+#CHECK: xiy 0(%r1,%r2), 0
+#CHECK: error: invalid operand
+#CHECK: xiy 0, -1
+#CHECK: error: invalid operand
+#CHECK: xiy 0, 256
+
+ xiy -524289, 0
+ xiy 524288, 0
+ xiy 0(%r1,%r2), 0
+ xiy 0, -1
+ xiy 0, 256
+
+#CHECK: error: invalid operand
+#CHECK: xy %r0, -524289
+#CHECK: error: invalid operand
+#CHECK: xy %r0, 524288
+
+ xy %r0, -524289
+ xy %r0, 524288
diff --git a/test/MC/SystemZ/insn-basr-01.s b/test/MC/SystemZ/insn-basr-01.s
deleted file mode 100644
index a66cee8f63..0000000000
--- a/test/MC/SystemZ/insn-basr-01.s
+++ /dev/null
@@ -1,12 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: basr %r0, %r1 # encoding: [0x0d,0x01]
-#CHECK: basr %r0, %r15 # encoding: [0x0d,0x0f]
-#CHECK: basr %r14, %r9 # encoding: [0x0d,0xe9]
-#CHECK: basr %r15, %r1 # encoding: [0x0d,0xf1]
-
- basr %r0,%r1
- basr %r0,%r15
- basr %r14,%r9
- basr %r15,%r1
-
diff --git a/test/MC/SystemZ/insn-br-01.s b/test/MC/SystemZ/insn-br-01.s
deleted file mode 100644
index 8e2f2aac78..0000000000
--- a/test/MC/SystemZ/insn-br-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: br %r1 # encoding: [0x07,0xf1]
-#CHECK: br %r14 # encoding: [0x07,0xfe]
-#CHECK: br %r15 # encoding: [0x07,0xff]
-
- br %r1
- br %r14
- br %r15
diff --git a/test/MC/SystemZ/insn-bras-01.s b/test/MC/SystemZ/insn-bras-01.s
deleted file mode 100644
index 89f7f77477..0000000000
--- a/test/MC/SystemZ/insn-bras-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: bras %r0, foo # encoding: [0xa7,0x05,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: bras %r14, foo # encoding: [0xa7,0xe5,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: bras %r15, foo # encoding: [0xa7,0xf5,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- bras %r0,foo
- bras %r14,foo
- bras %r15,foo
-
-#CHECK: bras %r0, bar+100 # encoding: [0xa7,0x05,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
-#CHECK: bras %r14, bar+100 # encoding: [0xa7,0xe5,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
-#CHECK: bras %r15, bar+100 # encoding: [0xa7,0xf5,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- bras %r0,bar+100
- bras %r14,bar+100
- bras %r15,bar+100
-
-#CHECK: bras %r0, bar@PLT # encoding: [0xa7,0x05,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
-#CHECK: bras %r14, bar@PLT # encoding: [0xa7,0xe5,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
-#CHECK: bras %r15, bar@PLT # encoding: [0xa7,0xf5,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- bras %r0,bar@PLT
- bras %r14,bar@PLT
- bras %r15,bar@PLT
diff --git a/test/MC/SystemZ/insn-brasl-01.s b/test/MC/SystemZ/insn-brasl-01.s
deleted file mode 100644
index 86d0ced9b3..0000000000
--- a/test/MC/SystemZ/insn-brasl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: brasl %r0, foo # encoding: [0xc0,0x05,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: brasl %r14, foo # encoding: [0xc0,0xe5,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: brasl %r15, foo # encoding: [0xc0,0xf5,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brasl %r0,foo
- brasl %r14,foo
- brasl %r15,foo
-
-#CHECK: brasl %r0, bar+100 # encoding: [0xc0,0x05,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: brasl %r14, bar+100 # encoding: [0xc0,0xe5,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: brasl %r15, bar+100 # encoding: [0xc0,0xf5,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- brasl %r0,bar+100
- brasl %r14,bar+100
- brasl %r15,bar+100
-
-#CHECK: brasl %r0, bar@PLT # encoding: [0xc0,0x05,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
-#CHECK: brasl %r14, bar@PLT # encoding: [0xc0,0xe5,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
-#CHECK: brasl %r15, bar@PLT # encoding: [0xc0,0xf5,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- brasl %r0,bar@PLT
- brasl %r14,bar@PLT
- brasl %r15,bar@PLT
diff --git a/test/MC/SystemZ/insn-brc-01.s b/test/MC/SystemZ/insn-brc-01.s
deleted file mode 100644
index a92ea45ecf..0000000000
--- a/test/MC/SystemZ/insn-brc-01.s
+++ /dev/null
@@ -1,238 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: brc 0, foo # encoding: [0xa7,0x04,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 0, foo
-
-#CHECK: brc 1, foo # encoding: [0xa7,0x14,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jo foo # encoding: [0xa7,0x14,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 1, foo
- jo foo
-
-#CHECK: brc 2, foo # encoding: [0xa7,0x24,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jh foo # encoding: [0xa7,0x24,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 2, foo
- jh foo
-
-#CHECK: brc 3, foo # encoding: [0xa7,0x34,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jnle foo # encoding: [0xa7,0x34,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 3, foo
- jnle foo
-
-#CHECK: brc 4, foo # encoding: [0xa7,0x44,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jl foo # encoding: [0xa7,0x44,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 4, foo
- jl foo
-
-#CHECK: brc 5, foo # encoding: [0xa7,0x54,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jnhe foo # encoding: [0xa7,0x54,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 5, foo
- jnhe foo
-
-#CHECK: brc 6, foo # encoding: [0xa7,0x64,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jlh foo # encoding: [0xa7,0x64,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 6, foo
- jlh foo
-
-#CHECK: brc 7, foo # encoding: [0xa7,0x74,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jne foo # encoding: [0xa7,0x74,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 7, foo
- jne foo
-
-#CHECK: brc 8, foo # encoding: [0xa7,0x84,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: je foo # encoding: [0xa7,0x84,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 8, foo
- je foo
-
-#CHECK: brc 9, foo # encoding: [0xa7,0x94,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jnlh foo # encoding: [0xa7,0x94,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 9, foo
- jnlh foo
-
-#CHECK: brc 10, foo # encoding: [0xa7,0xa4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jhe foo # encoding: [0xa7,0xa4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 10, foo
- jhe foo
-
-#CHECK: brc 11, foo # encoding: [0xa7,0xb4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jnl foo # encoding: [0xa7,0xb4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 11, foo
- jnl foo
-
-#CHECK: brc 12, foo # encoding: [0xa7,0xc4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jle foo # encoding: [0xa7,0xc4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 12, foo
- jle foo
-
-#CHECK: brc 13, foo # encoding: [0xa7,0xd4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jnh foo # encoding: [0xa7,0xd4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 13, foo
- jnh foo
-
-#CHECK: brc 14, foo # encoding: [0xa7,0xe4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: jno foo # encoding: [0xa7,0xe4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 14, foo
- jno foo
-
-#CHECK: brc 15, foo # encoding: [0xa7,0xf4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
-#CHECK: j foo # encoding: [0xa7,0xf4,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
- brc 15, foo
- j foo
-
-#CHECK: brc 0, bar+100 # encoding: [0xa7,0x04,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- brc 0, bar+100
-
-#CHECK: jo bar+100 # encoding: [0xa7,0x14,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jo bar+100
-
-#CHECK: jh bar+100 # encoding: [0xa7,0x24,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jh bar+100
-
-#CHECK: jnle bar+100 # encoding: [0xa7,0x34,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jnle bar+100
-
-#CHECK: jl bar+100 # encoding: [0xa7,0x44,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jl bar+100
-
-#CHECK: jnhe bar+100 # encoding: [0xa7,0x54,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jnhe bar+100
-
-#CHECK: jlh bar+100 # encoding: [0xa7,0x64,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jlh bar+100
-
-#CHECK: jne bar+100 # encoding: [0xa7,0x74,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jne bar+100
-
-#CHECK: je bar+100 # encoding: [0xa7,0x84,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- je bar+100
-
-#CHECK: jnlh bar+100 # encoding: [0xa7,0x94,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jnlh bar+100
-
-#CHECK: jhe bar+100 # encoding: [0xa7,0xa4,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jhe bar+100
-
-#CHECK: jnl bar+100 # encoding: [0xa7,0xb4,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jnl bar+100
-
-#CHECK: jle bar+100 # encoding: [0xa7,0xc4,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jle bar+100
-
-#CHECK: jnh bar+100 # encoding: [0xa7,0xd4,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jnh bar+100
-
-#CHECK: jno bar+100 # encoding: [0xa7,0xe4,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- jno bar+100
-
-#CHECK: j bar+100 # encoding: [0xa7,0xf4,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
- j bar+100
-
-#CHECK: brc 0, bar@PLT # encoding: [0xa7,0x04,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- brc 0, bar@PLT
-
-#CHECK: jo bar@PLT # encoding: [0xa7,0x14,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jo bar@PLT
-
-#CHECK: jh bar@PLT # encoding: [0xa7,0x24,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jh bar@PLT
-
-#CHECK: jnle bar@PLT # encoding: [0xa7,0x34,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jnle bar@PLT
-
-#CHECK: jl bar@PLT # encoding: [0xa7,0x44,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jl bar@PLT
-
-#CHECK: jnhe bar@PLT # encoding: [0xa7,0x54,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jnhe bar@PLT
-
-#CHECK: jlh bar@PLT # encoding: [0xa7,0x64,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jlh bar@PLT
-
-#CHECK: jne bar@PLT # encoding: [0xa7,0x74,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jne bar@PLT
-
-#CHECK: je bar@PLT # encoding: [0xa7,0x84,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- je bar@PLT
-
-#CHECK: jnlh bar@PLT # encoding: [0xa7,0x94,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jnlh bar@PLT
-
-#CHECK: jhe bar@PLT # encoding: [0xa7,0xa4,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jhe bar@PLT
-
-#CHECK: jnl bar@PLT # encoding: [0xa7,0xb4,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jnl bar@PLT
-
-#CHECK: jle bar@PLT # encoding: [0xa7,0xc4,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jle bar@PLT
-
-#CHECK: jnh bar@PLT # encoding: [0xa7,0xd4,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jnh bar@PLT
-
-#CHECK: jno bar@PLT # encoding: [0xa7,0xe4,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- jno bar@PLT
-
-#CHECK: j bar@PLT # encoding: [0xa7,0xf4,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
- j bar@PLT
diff --git a/test/MC/SystemZ/insn-brc-02.s b/test/MC/SystemZ/insn-brc-02.s
deleted file mode 100644
index 941cc459f3..0000000000
--- a/test/MC/SystemZ/insn-brc-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: brc foo, bar
-#CHECK: error: invalid operand
-#CHECK: brc -1, bar
-#CHECK: error: invalid operand
-#CHECK: brc 16, bar
-
- brc foo, bar
- brc -1, bar
- brc 16, bar
diff --git a/test/MC/SystemZ/insn-brcl-01.s b/test/MC/SystemZ/insn-brcl-01.s
deleted file mode 100644
index f7138bf5be..0000000000
--- a/test/MC/SystemZ/insn-brcl-01.s
+++ /dev/null
@@ -1,238 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: brcl 0, foo # encoding: [0xc0,0x04,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 0, foo
-
-#CHECK: brcl 1, foo # encoding: [0xc0,0x14,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgo foo # encoding: [0xc0,0x14,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 1, foo
- jgo foo
-
-#CHECK: brcl 2, foo # encoding: [0xc0,0x24,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgh foo # encoding: [0xc0,0x24,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 2, foo
- jgh foo
-
-#CHECK: brcl 3, foo # encoding: [0xc0,0x34,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgnle foo # encoding: [0xc0,0x34,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 3, foo
- jgnle foo
-
-#CHECK: brcl 4, foo # encoding: [0xc0,0x44,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgl foo # encoding: [0xc0,0x44,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 4, foo
- jgl foo
-
-#CHECK: brcl 5, foo # encoding: [0xc0,0x54,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgnhe foo # encoding: [0xc0,0x54,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 5, foo
- jgnhe foo
-
-#CHECK: brcl 6, foo # encoding: [0xc0,0x64,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jglh foo # encoding: [0xc0,0x64,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 6, foo
- jglh foo
-
-#CHECK: brcl 7, foo # encoding: [0xc0,0x74,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgne foo # encoding: [0xc0,0x74,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 7, foo
- jgne foo
-
-#CHECK: brcl 8, foo # encoding: [0xc0,0x84,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jge foo # encoding: [0xc0,0x84,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 8, foo
- jge foo
-
-#CHECK: brcl 9, foo # encoding: [0xc0,0x94,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgnlh foo # encoding: [0xc0,0x94,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 9, foo
- jgnlh foo
-
-#CHECK: brcl 10, foo # encoding: [0xc0,0xa4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jghe foo # encoding: [0xc0,0xa4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 10, foo
- jghe foo
-
-#CHECK: brcl 11, foo # encoding: [0xc0,0xb4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgnl foo # encoding: [0xc0,0xb4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 11, foo
- jgnl foo
-
-#CHECK: brcl 12, foo # encoding: [0xc0,0xc4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgle foo # encoding: [0xc0,0xc4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 12, foo
- jgle foo
-
-#CHECK: brcl 13, foo # encoding: [0xc0,0xd4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgnh foo # encoding: [0xc0,0xd4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 13, foo
- jgnh foo
-
-#CHECK: brcl 14, foo # encoding: [0xc0,0xe4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jgno foo # encoding: [0xc0,0xe4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 14, foo
- jgno foo
-
-#CHECK: brcl 15, foo # encoding: [0xc0,0xf4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: jg foo # encoding: [0xc0,0xf4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
- brcl 15, foo
- jg foo
-
-#CHECK: brcl 0, bar+100 # encoding: [0xc0,0x04,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- brcl 0, bar+100
-
-#CHECK: jgo bar+100 # encoding: [0xc0,0x14,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgo bar+100
-
-#CHECK: jgh bar+100 # encoding: [0xc0,0x24,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgh bar+100
-
-#CHECK: jgnle bar+100 # encoding: [0xc0,0x34,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgnle bar+100
-
-#CHECK: jgl bar+100 # encoding: [0xc0,0x44,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgl bar+100
-
-#CHECK: jgnhe bar+100 # encoding: [0xc0,0x54,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgnhe bar+100
-
-#CHECK: jglh bar+100 # encoding: [0xc0,0x64,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jglh bar+100
-
-#CHECK: jgne bar+100 # encoding: [0xc0,0x74,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgne bar+100
-
-#CHECK: jge bar+100 # encoding: [0xc0,0x84,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jge bar+100
-
-#CHECK: jgnlh bar+100 # encoding: [0xc0,0x94,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgnlh bar+100
-
-#CHECK: jghe bar+100 # encoding: [0xc0,0xa4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jghe bar+100
-
-#CHECK: jgnl bar+100 # encoding: [0xc0,0xb4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgnl bar+100
-
-#CHECK: jgle bar+100 # encoding: [0xc0,0xc4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgle bar+100
-
-#CHECK: jgnh bar+100 # encoding: [0xc0,0xd4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgnh bar+100
-
-#CHECK: jgno bar+100 # encoding: [0xc0,0xe4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jgno bar+100
-
-#CHECK: jg bar+100 # encoding: [0xc0,0xf4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
- jg bar+100
-
-#CHECK: brcl 0, bar@PLT # encoding: [0xc0,0x04,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- brcl 0, bar@PLT
-
-#CHECK: jgo bar@PLT # encoding: [0xc0,0x14,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgo bar@PLT
-
-#CHECK: jgh bar@PLT # encoding: [0xc0,0x24,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgh bar@PLT
-
-#CHECK: jgnle bar@PLT # encoding: [0xc0,0x34,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgnle bar@PLT
-
-#CHECK: jgl bar@PLT # encoding: [0xc0,0x44,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgl bar@PLT
-
-#CHECK: jgnhe bar@PLT # encoding: [0xc0,0x54,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgnhe bar@PLT
-
-#CHECK: jglh bar@PLT # encoding: [0xc0,0x64,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jglh bar@PLT
-
-#CHECK: jgne bar@PLT # encoding: [0xc0,0x74,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgne bar@PLT
-
-#CHECK: jge bar@PLT # encoding: [0xc0,0x84,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jge bar@PLT
-
-#CHECK: jgnlh bar@PLT # encoding: [0xc0,0x94,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgnlh bar@PLT
-
-#CHECK: jghe bar@PLT # encoding: [0xc0,0xa4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jghe bar@PLT
-
-#CHECK: jgnl bar@PLT # encoding: [0xc0,0xb4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgnl bar@PLT
-
-#CHECK: jgle bar@PLT # encoding: [0xc0,0xc4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgle bar@PLT
-
-#CHECK: jgnh bar@PLT # encoding: [0xc0,0xd4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgnh bar@PLT
-
-#CHECK: jgno bar@PLT # encoding: [0xc0,0xe4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jgno bar@PLT
-
-#CHECK: jg bar@PLT # encoding: [0xc0,0xf4,A,A,A,A]
-#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
- jg bar@PLT
diff --git a/test/MC/SystemZ/insn-brcl-02.s b/test/MC/SystemZ/insn-brcl-02.s
deleted file mode 100644
index ded5f7e4a6..0000000000
--- a/test/MC/SystemZ/insn-brcl-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: brcl foo, bar
-#CHECK: error: invalid operand
-#CHECK: brcl -1, bar
-#CHECK: error: invalid operand
-#CHECK: brcl 16, bar
-
- brcl foo, bar
- brcl -1, bar
- brcl 16, bar
diff --git a/test/MC/SystemZ/insn-c-01.s b/test/MC/SystemZ/insn-c-01.s
deleted file mode 100644
index e8a8ada30d..0000000000
--- a/test/MC/SystemZ/insn-c-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: c %r0, 0 # encoding: [0x59,0x00,0x00,0x00]
-#CHECK: c %r0, 4095 # encoding: [0x59,0x00,0x0f,0xff]
-#CHECK: c %r0, 0(%r1) # encoding: [0x59,0x00,0x10,0x00]
-#CHECK: c %r0, 0(%r15) # encoding: [0x59,0x00,0xf0,0x00]
-#CHECK: c %r0, 4095(%r1,%r15) # encoding: [0x59,0x01,0xff,0xff]
-#CHECK: c %r0, 4095(%r15,%r1) # encoding: [0x59,0x0f,0x1f,0xff]
-#CHECK: c %r15, 0 # encoding: [0x59,0xf0,0x00,0x00]
-
- c %r0, 0
- c %r0, 4095
- c %r0, 0(%r1)
- c %r0, 0(%r15)
- c %r0, 4095(%r1,%r15)
- c %r0, 4095(%r15,%r1)
- c %r15, 0
diff --git a/test/MC/SystemZ/insn-c-02.s b/test/MC/SystemZ/insn-c-02.s
deleted file mode 100644
index 81fe251819..0000000000
--- a/test/MC/SystemZ/insn-c-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: c %r0, -1
-#CHECK: error: invalid operand
-#CHECK: c %r0, 4096
-
- c %r0, -1
- c %r0, 4096
diff --git a/test/MC/SystemZ/insn-cdb-01.s b/test/MC/SystemZ/insn-cdb-01.s
deleted file mode 100644
index 7f6bb59956..0000000000
--- a/test/MC/SystemZ/insn-cdb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x19]
-#CHECK: cdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x19]
-#CHECK: cdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x19]
-#CHECK: cdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x19]
-#CHECK: cdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x19]
-#CHECK: cdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x19]
-#CHECK: cdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x19]
-
- cdb %f0, 0
- cdb %f0, 4095
- cdb %f0, 0(%r1)
- cdb %f0, 0(%r15)
- cdb %f0, 4095(%r1,%r15)
- cdb %f0, 4095(%r15,%r1)
- cdb %f15, 0
diff --git a/test/MC/SystemZ/insn-cdb-02.s b/test/MC/SystemZ/insn-cdb-02.s
deleted file mode 100644
index 5f02b84c14..0000000000
--- a/test/MC/SystemZ/insn-cdb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cdb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: cdb %f0, 4096
-
- cdb %f0, -1
- cdb %f0, 4096
diff --git a/test/MC/SystemZ/insn-cdbr-01.s b/test/MC/SystemZ/insn-cdbr-01.s
deleted file mode 100644
index d2acfc01a2..0000000000
--- a/test/MC/SystemZ/insn-cdbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cdbr %f0, %f0 # encoding: [0xb3,0x19,0x00,0x00]
-#CHECK: cdbr %f0, %f15 # encoding: [0xb3,0x19,0x00,0x0f]
-#CHECK: cdbr %f7, %f8 # encoding: [0xb3,0x19,0x00,0x78]
-#CHECK: cdbr %f15, %f0 # encoding: [0xb3,0x19,0x00,0xf0]
-
- cdbr %f0, %f0
- cdbr %f0, %f15
- cdbr %f7, %f8
- cdbr %f15, %f0
diff --git a/test/MC/SystemZ/insn-cdfbr-01.s b/test/MC/SystemZ/insn-cdfbr-01.s
deleted file mode 100644
index 94c9b0779c..0000000000
--- a/test/MC/SystemZ/insn-cdfbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cdfbr %f0, %r0 # encoding: [0xb3,0x95,0x00,0x00]
-#CHECK: cdfbr %f0, %r15 # encoding: [0xb3,0x95,0x00,0x0f]
-#CHECK: cdfbr %f15, %r0 # encoding: [0xb3,0x95,0x00,0xf0]
-#CHECK: cdfbr %f7, %r8 # encoding: [0xb3,0x95,0x00,0x78]
-#CHECK: cdfbr %f15, %r15 # encoding: [0xb3,0x95,0x00,0xff]
-
- cdfbr %f0, %r0
- cdfbr %f0, %r15
- cdfbr %f15, %r0
- cdfbr %f7, %r8
- cdfbr %f15, %r15
diff --git a/test/MC/SystemZ/insn-cdfbr-02.s b/test/MC/SystemZ/insn-cdfbr-02.s
deleted file mode 100644
index 14caa1e3c0..0000000000
--- a/test/MC/SystemZ/insn-cdfbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cdfbr %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cdfbr %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cdfbr %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cdfbr %a0, %r0
-
- cdfbr %r0, %r0
- cdfbr %f0, %f0
- cdfbr %f0, %a0
- cdfbr %a0, %r0
diff --git a/test/MC/SystemZ/insn-cdgbr-01.s b/test/MC/SystemZ/insn-cdgbr-01.s
deleted file mode 100644
index 6a994af744..0000000000
--- a/test/MC/SystemZ/insn-cdgbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cdgbr %f0, %r0 # encoding: [0xb3,0xa5,0x00,0x00]
-#CHECK: cdgbr %f0, %r15 # encoding: [0xb3,0xa5,0x00,0x0f]
-#CHECK: cdgbr %f15, %r0 # encoding: [0xb3,0xa5,0x00,0xf0]
-#CHECK: cdgbr %f7, %r8 # encoding: [0xb3,0xa5,0x00,0x78]
-#CHECK: cdgbr %f15, %r15 # encoding: [0xb3,0xa5,0x00,0xff]
-
- cdgbr %f0, %r0
- cdgbr %f0, %r15
- cdgbr %f15, %r0
- cdgbr %f7, %r8
- cdgbr %f15, %r15
diff --git a/test/MC/SystemZ/insn-cdgbr-02.s b/test/MC/SystemZ/insn-cdgbr-02.s
deleted file mode 100644
index 8fa9d4fa5c..0000000000
--- a/test/MC/SystemZ/insn-cdgbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cdgbr %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cdgbr %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cdgbr %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cdgbr %a0, %r0
-
- cdgbr %r0, %r0
- cdgbr %f0, %f0
- cdgbr %f0, %a0
- cdgbr %a0, %r0
diff --git a/test/MC/SystemZ/insn-ceb-01.s b/test/MC/SystemZ/insn-ceb-01.s
deleted file mode 100644
index d576e9d572..0000000000
--- a/test/MC/SystemZ/insn-ceb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ceb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x09]
-#CHECK: ceb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x09]
-#CHECK: ceb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x09]
-#CHECK: ceb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x09]
-#CHECK: ceb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x09]
-#CHECK: ceb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x09]
-#CHECK: ceb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x09]
-
- ceb %f0, 0
- ceb %f0, 4095
- ceb %f0, 0(%r1)
- ceb %f0, 0(%r15)
- ceb %f0, 4095(%r1,%r15)
- ceb %f0, 4095(%r15,%r1)
- ceb %f15, 0
diff --git a/test/MC/SystemZ/insn-ceb-02.s b/test/MC/SystemZ/insn-ceb-02.s
deleted file mode 100644
index 90829dbe12..0000000000
--- a/test/MC/SystemZ/insn-ceb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ceb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: ceb %f0, 4096
-
- ceb %f0, -1
- ceb %f0, 4096
diff --git a/test/MC/SystemZ/insn-cebr-01.s b/test/MC/SystemZ/insn-cebr-01.s
deleted file mode 100644
index b820e3901a..0000000000
--- a/test/MC/SystemZ/insn-cebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cebr %f0, %f0 # encoding: [0xb3,0x09,0x00,0x00]
-#CHECK: cebr %f0, %f15 # encoding: [0xb3,0x09,0x00,0x0f]
-#CHECK: cebr %f7, %f8 # encoding: [0xb3,0x09,0x00,0x78]
-#CHECK: cebr %f15, %f0 # encoding: [0xb3,0x09,0x00,0xf0]
-
- cebr %f0, %f0
- cebr %f0, %f15
- cebr %f7, %f8
- cebr %f15, %f0
diff --git a/test/MC/SystemZ/insn-cefbr-01.s b/test/MC/SystemZ/insn-cefbr-01.s
deleted file mode 100644
index f1068f506c..0000000000
--- a/test/MC/SystemZ/insn-cefbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: cefbr %f7, %r8 # encoding: [0xb3,0x94,0x00,0x78]
-#CHECK: cefbr %f15, %r15 # encoding: [0xb3,0x94,0x00,0xff]
-
- cefbr %f0, %r0
- cefbr %f0, %r15
- cefbr %f15, %r0
- cefbr %f7, %r8
- cefbr %f15, %r15
diff --git a/test/MC/SystemZ/insn-cefbr-02.s b/test/MC/SystemZ/insn-cefbr-02.s
deleted file mode 100644
index b894fb9f32..0000000000
--- a/test/MC/SystemZ/insn-cefbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cefbr %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cefbr %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cefbr %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cefbr %a0, %r0
-
- cefbr %r0, %r0
- cefbr %f0, %f0
- cefbr %f0, %a0
- cefbr %a0, %r0
diff --git a/test/MC/SystemZ/insn-cegbr-01.s b/test/MC/SystemZ/insn-cegbr-01.s
deleted file mode 100644
index 5b2e6caf12..0000000000
--- a/test/MC/SystemZ/insn-cegbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cegbr %f0, %r0 # encoding: [0xb3,0xa4,0x00,0x00]
-#CHECK: cegbr %f0, %r15 # encoding: [0xb3,0xa4,0x00,0x0f]
-#CHECK: cegbr %f15, %r0 # encoding: [0xb3,0xa4,0x00,0xf0]
-#CHECK: cegbr %f7, %r8 # encoding: [0xb3,0xa4,0x00,0x78]
-#CHECK: cegbr %f15, %r15 # encoding: [0xb3,0xa4,0x00,0xff]
-
- cegbr %f0, %r0
- cegbr %f0, %r15
- cegbr %f15, %r0
- cegbr %f7, %r8
- cegbr %f15, %r15
diff --git a/test/MC/SystemZ/insn-cegbr-02.s b/test/MC/SystemZ/insn-cegbr-02.s
deleted file mode 100644
index bf0c31ad13..0000000000
--- a/test/MC/SystemZ/insn-cegbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cegbr %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cegbr %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cegbr %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cegbr %a0, %r0
-
- cegbr %r0, %r0
- cegbr %f0, %f0
- cegbr %f0, %a0
- cegbr %a0, %r0
diff --git a/test/MC/SystemZ/insn-cfdbr-01.s b/test/MC/SystemZ/insn-cfdbr-01.s
deleted file mode 100644
index be4f87fb29..0000000000
--- a/test/MC/SystemZ/insn-cfdbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cfdbr %r0, 0, %f0 # encoding: [0xb3,0x99,0x00,0x00]
-#CHECK: cfdbr %r0, 0, %f15 # encoding: [0xb3,0x99,0x00,0x0f]
-#CHECK: cfdbr %r0, 15, %f0 # encoding: [0xb3,0x99,0xf0,0x00]
-#CHECK: cfdbr %r4, 5, %f6 # encoding: [0xb3,0x99,0x50,0x46]
-#CHECK: cfdbr %r15, 0, %f0 # encoding: [0xb3,0x99,0x00,0xf0]
-
- cfdbr %r0, 0, %f0
- cfdbr %r0, 0, %f15
- cfdbr %r0, 15, %f0
- cfdbr %r4, 5, %f6
- cfdbr %r15, 0, %f0
diff --git a/test/MC/SystemZ/insn-cfdbr-02.s b/test/MC/SystemZ/insn-cfdbr-02.s
deleted file mode 100644
index 00175955f2..0000000000
--- a/test/MC/SystemZ/insn-cfdbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cfdbr %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cfdbr %f0, 0, %f0
-#CHECK: error: invalid operand
-#CHECK: cfdbr %r0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: cfdbr %r0, 16, %f0
-
- cfdbr %r0, 0, %r0
- cfdbr %f0, 0, %f0
- cfdbr %r0, -1, %f0
- cfdbr %r0, 16, %f0
diff --git a/test/MC/SystemZ/insn-cfebr-01.s b/test/MC/SystemZ/insn-cfebr-01.s
deleted file mode 100644
index 6f7ab2c0e0..0000000000
--- a/test/MC/SystemZ/insn-cfebr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cfebr %r0, 0, %f0 # encoding: [0xb3,0x98,0x00,0x00]
-#CHECK: cfebr %r0, 0, %f15 # encoding: [0xb3,0x98,0x00,0x0f]
-#CHECK: cfebr %r0, 15, %f0 # encoding: [0xb3,0x98,0xf0,0x00]
-#CHECK: cfebr %r4, 5, %f6 # encoding: [0xb3,0x98,0x50,0x46]
-#CHECK: cfebr %r15, 0, %f0 # encoding: [0xb3,0x98,0x00,0xf0]
-
- cfebr %r0, 0, %f0
- cfebr %r0, 0, %f15
- cfebr %r0, 15, %f0
- cfebr %r4, 5, %f6
- cfebr %r15, 0, %f0
diff --git a/test/MC/SystemZ/insn-cfebr-02.s b/test/MC/SystemZ/insn-cfebr-02.s
deleted file mode 100644
index c3c5adaed2..0000000000
--- a/test/MC/SystemZ/insn-cfebr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cfebr %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cfebr %f0, 0, %f0
-#CHECK: error: invalid operand
-#CHECK: cfebr %r0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: cfebr %r0, 16, %f0
-
- cfebr %r0, 0, %r0
- cfebr %f0, 0, %f0
- cfebr %r0, -1, %f0
- cfebr %r0, 16, %f0
diff --git a/test/MC/SystemZ/insn-cfi-01.s b/test/MC/SystemZ/insn-cfi-01.s
deleted file mode 100644
index 52e34c02e8..0000000000
--- a/test/MC/SystemZ/insn-cfi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cfi %r0, -2147483648 # encoding: [0xc2,0x0d,0x80,0x00,0x00,0x00]
-#CHECK: cfi %r0, -1 # encoding: [0xc2,0x0d,0xff,0xff,0xff,0xff]
-#CHECK: cfi %r0, 0 # encoding: [0xc2,0x0d,0x00,0x00,0x00,0x00]
-#CHECK: cfi %r0, 1 # encoding: [0xc2,0x0d,0x00,0x00,0x00,0x01]
-#CHECK: cfi %r0, 2147483647 # encoding: [0xc2,0x0d,0x7f,0xff,0xff,0xff]
-#CHECK: cfi %r15, 0 # encoding: [0xc2,0xfd,0x00,0x00,0x00,0x00]
-
- cfi %r0, -1 << 31
- cfi %r0, -1
- cfi %r0, 0
- cfi %r0, 1
- cfi %r0, (1 << 31) - 1
- cfi %r15, 0
diff --git a/test/MC/SystemZ/insn-cfi-02.s b/test/MC/SystemZ/insn-cfi-02.s
deleted file mode 100644
index cf7c72621b..0000000000
--- a/test/MC/SystemZ/insn-cfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cfi %r0, (-1 << 31) - 1
-#CHECK: error: invalid operand
-#CHECK: cfi %r0, (1 << 31)
-
- cfi %r0, (-1 << 31) - 1
- cfi %r0, (1 << 31)
diff --git a/test/MC/SystemZ/insn-cfxbr-01.s b/test/MC/SystemZ/insn-cfxbr-01.s
deleted file mode 100644
index c509106b54..0000000000
--- a/test/MC/SystemZ/insn-cfxbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cfxbr %r0, 0, %f0 # encoding: [0xb3,0x9a,0x00,0x00]
-#CHECK: cfxbr %r0, 0, %f13 # encoding: [0xb3,0x9a,0x00,0x0d]
-#CHECK: cfxbr %r0, 15, %f0 # encoding: [0xb3,0x9a,0xf0,0x00]
-#CHECK: cfxbr %r4, 5, %f8 # encoding: [0xb3,0x9a,0x50,0x48]
-#CHECK: cfxbr %r15, 0, %f0 # encoding: [0xb3,0x9a,0x00,0xf0]
-
- cfxbr %r0, 0, %f0
- cfxbr %r0, 0, %f13
- cfxbr %r0, 15, %f0
- cfxbr %r4, 5, %f8
- cfxbr %r15, 0, %f0
diff --git a/test/MC/SystemZ/insn-cfxbr-02.s b/test/MC/SystemZ/insn-cfxbr-02.s
deleted file mode 100644
index 3802c51433..0000000000
--- a/test/MC/SystemZ/insn-cfxbr-02.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cfxbr %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cfxbr %f0, 0, %f0
-#CHECK: error: invalid operand
-#CHECK: cfxbr %r0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: cfxbr %r0, 16, %f0
-#CHECK: error: invalid register
-#CHECK: cfxbr %r0, 0, %f2
-#CHECK: error: invalid register
-#CHECK: cfxbr %r0, 0, %f14
-
- cfxbr %r0, 0, %r0
- cfxbr %f0, 0, %f0
- cfxbr %r0, -1, %f0
- cfxbr %r0, 16, %f0
- cfxbr %r0, 0, %f2
- cfxbr %r0, 0, %f14
-
diff --git a/test/MC/SystemZ/insn-cg-01.s b/test/MC/SystemZ/insn-cg-01.s
deleted file mode 100644
index 1eb185f0ec..0000000000
--- a/test/MC/SystemZ/insn-cg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x20]
-#CHECK: cg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x20]
-#CHECK: cg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x20]
-#CHECK: cg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x20]
-#CHECK: cg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x20]
-#CHECK: cg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x20]
-#CHECK: cg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x20]
-#CHECK: cg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x20]
-#CHECK: cg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x20]
-#CHECK: cg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x20]
-
- cg %r0, -524288
- cg %r0, -1
- cg %r0, 0
- cg %r0, 1
- cg %r0, 524287
- cg %r0, 0(%r1)
- cg %r0, 0(%r15)
- cg %r0, 524287(%r1,%r15)
- cg %r0, 524287(%r15,%r1)
- cg %r15, 0
diff --git a/test/MC/SystemZ/insn-cg-02.s b/test/MC/SystemZ/insn-cg-02.s
deleted file mode 100644
index e093ccd751..0000000000
--- a/test/MC/SystemZ/insn-cg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: cg %r0, 524288
-
- cg %r0, -524289
- cg %r0, 524288
diff --git a/test/MC/SystemZ/insn-cgdbr-01.s b/test/MC/SystemZ/insn-cgdbr-01.s
deleted file mode 100644
index 718f50a9ea..0000000000
--- a/test/MC/SystemZ/insn-cgdbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgdbr %r0, 0, %f0 # encoding: [0xb3,0xa9,0x00,0x00]
-#CHECK: cgdbr %r0, 0, %f15 # encoding: [0xb3,0xa9,0x00,0x0f]
-#CHECK: cgdbr %r0, 15, %f0 # encoding: [0xb3,0xa9,0xf0,0x00]
-#CHECK: cgdbr %r4, 5, %f6 # encoding: [0xb3,0xa9,0x50,0x46]
-#CHECK: cgdbr %r15, 0, %f0 # encoding: [0xb3,0xa9,0x00,0xf0]
-
- cgdbr %r0, 0, %f0
- cgdbr %r0, 0, %f15
- cgdbr %r0, 15, %f0
- cgdbr %r4, 5, %f6
- cgdbr %r15, 0, %f0
diff --git a/test/MC/SystemZ/insn-cgdbr-02.s b/test/MC/SystemZ/insn-cgdbr-02.s
deleted file mode 100644
index 3a3e01fde0..0000000000
--- a/test/MC/SystemZ/insn-cgdbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cgdbr %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cgdbr %f0, 0, %f0
-#CHECK: error: invalid operand
-#CHECK: cgdbr %r0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: cgdbr %r0, 16, %f0
-
- cgdbr %r0, 0, %r0
- cgdbr %f0, 0, %f0
- cgdbr %r0, -1, %f0
- cgdbr %r0, 16, %f0
diff --git a/test/MC/SystemZ/insn-cgebr-01.s b/test/MC/SystemZ/insn-cgebr-01.s
deleted file mode 100644
index dc6a7dbfaf..0000000000
--- a/test/MC/SystemZ/insn-cgebr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: cgebr %r4, 5, %f6 # encoding: [0xb3,0xa8,0x50,0x46]
-#CHECK: cgebr %r15, 0, %f0 # encoding: [0xb3,0xa8,0x00,0xf0]
-
- cgebr %r0, 0, %f0
- cgebr %r0, 0, %f15
- cgebr %r0, 15, %f0
- cgebr %r4, 5, %f6
- cgebr %r15, 0, %f0
diff --git a/test/MC/SystemZ/insn-cgebr-02.s b/test/MC/SystemZ/insn-cgebr-02.s
deleted file mode 100644
index 9b817a4172..0000000000
--- a/test/MC/SystemZ/insn-cgebr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cgebr %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cgebr %f0, 0, %f0
-#CHECK: error: invalid operand
-#CHECK: cgebr %r0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: cgebr %r0, 16, %f0
-
- cgebr %r0, 0, %r0
- cgebr %f0, 0, %f0
- cgebr %r0, -1, %f0
- cgebr %r0, 16, %f0
diff --git a/test/MC/SystemZ/insn-cgf-01.s b/test/MC/SystemZ/insn-cgf-01.s
deleted file mode 100644
index 03c439f1f5..0000000000
--- a/test/MC/SystemZ/insn-cgf-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x30]
-#CHECK: cgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x30]
-#CHECK: cgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x30]
-#CHECK: cgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x30]
-#CHECK: cgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x30]
-#CHECK: cgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x30]
-#CHECK: cgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x30]
-#CHECK: cgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x30]
-#CHECK: cgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x30]
-#CHECK: cgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x30]
-
- cgf %r0, -524288
- cgf %r0, -1
- cgf %r0, 0
- cgf %r0, 1
- cgf %r0, 524287
- cgf %r0, 0(%r1)
- cgf %r0, 0(%r15)
- cgf %r0, 524287(%r1,%r15)
- cgf %r0, 524287(%r15,%r1)
- cgf %r15, 0
diff --git a/test/MC/SystemZ/insn-cgf-02.s b/test/MC/SystemZ/insn-cgf-02.s
deleted file mode 100644
index 7171c6e388..0000000000
--- a/test/MC/SystemZ/insn-cgf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cgf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: cgf %r0, 524288
-
- cgf %r0, -524289
- cgf %r0, 524288
diff --git a/test/MC/SystemZ/insn-cgfi-01.s b/test/MC/SystemZ/insn-cgfi-01.s
deleted file mode 100644
index d6f72d5d67..0000000000
--- a/test/MC/SystemZ/insn-cgfi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgfi %r0, -2147483648 # encoding: [0xc2,0x0c,0x80,0x00,0x00,0x00]
-#CHECK: cgfi %r0, -1 # encoding: [0xc2,0x0c,0xff,0xff,0xff,0xff]
-#CHECK: cgfi %r0, 0 # encoding: [0xc2,0x0c,0x00,0x00,0x00,0x00]
-#CHECK: cgfi %r0, 1 # encoding: [0xc2,0x0c,0x00,0x00,0x00,0x01]
-#CHECK: cgfi %r0, 2147483647 # encoding: [0xc2,0x0c,0x7f,0xff,0xff,0xff]
-#CHECK: cgfi %r15, 0 # encoding: [0xc2,0xfc,0x00,0x00,0x00,0x00]
-
- cgfi %r0, -1 << 31
- cgfi %r0, -1
- cgfi %r0, 0
- cgfi %r0, 1
- cgfi %r0, (1 << 31) - 1
- cgfi %r15, 0
diff --git a/test/MC/SystemZ/insn-cgfi-02.s b/test/MC/SystemZ/insn-cgfi-02.s
deleted file mode 100644
index 6f72a24e69..0000000000
--- a/test/MC/SystemZ/insn-cgfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cgfi %r0, (-1 << 31) - 1
-#CHECK: error: invalid operand
-#CHECK: cgfi %r0, (1 << 31)
-
- cgfi %r0, (-1 << 31) - 1
- cgfi %r0, (1 << 31)
diff --git a/test/MC/SystemZ/insn-cgfr-01.s b/test/MC/SystemZ/insn-cgfr-01.s
deleted file mode 100644
index 6bd1792ea0..0000000000
--- a/test/MC/SystemZ/insn-cgfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgfr %r0, %r0 # encoding: [0xb9,0x30,0x00,0x00]
-#CHECK: cgfr %r0, %r15 # encoding: [0xb9,0x30,0x00,0x0f]
-#CHECK: cgfr %r15, %r0 # encoding: [0xb9,0x30,0x00,0xf0]
-#CHECK: cgfr %r7, %r8 # encoding: [0xb9,0x30,0x00,0x78]
-
- cgfr %r0,%r0
- cgfr %r0,%r15
- cgfr %r15,%r0
- cgfr %r7,%r8
diff --git a/test/MC/SystemZ/insn-cgfrl-01.s b/test/MC/SystemZ/insn-cgfrl-01.s
deleted file mode 100644
index 2792fb4a93..0000000000
--- a/test/MC/SystemZ/insn-cgfrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgfrl %r0, 2864434397 # encoding: [0xc6,0x0c,0x55,0x5d,0xe6,0x6e]
-#CHECK: cgfrl %r15, 2864434397 # encoding: [0xc6,0xfc,0x55,0x5d,0xe6,0x6e]
-
- cgfrl %r0,0xaabbccdd
- cgfrl %r15,0xaabbccdd
-
-#CHECK: cgfrl %r0, foo # encoding: [0xc6,0x0c,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: cgfrl %r15, foo # encoding: [0xc6,0xfc,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- cgfrl %r0,foo
- cgfrl %r15,foo
-
-#CHECK: cgfrl %r3, bar+100 # encoding: [0xc6,0x3c,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: cgfrl %r4, bar+100 # encoding: [0xc6,0x4c,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- cgfrl %r3,bar+100
- cgfrl %r4,bar+100
-
-#CHECK: cgfrl %r7, frob@PLT # encoding: [0xc6,0x7c,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: cgfrl %r8, frob@PLT # encoding: [0xc6,0x8c,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- cgfrl %r7,frob@PLT
- cgfrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-cgh-01.s b/test/MC/SystemZ/insn-cgh-01.s
deleted file mode 100644
index 31c86abdda..0000000000
--- a/test/MC/SystemZ/insn-cgh-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x34]
-#CHECK: cgh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x34]
-#CHECK: cgh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x34]
-#CHECK: cgh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x34]
-#CHECK: cgh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x34]
-#CHECK: cgh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x34]
-#CHECK: cgh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x34]
-#CHECK: cgh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x34]
-#CHECK: cgh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x34]
-#CHECK: cgh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x34]
-
- cgh %r0, -524288
- cgh %r0, -1
- cgh %r0, 0
- cgh %r0, 1
- cgh %r0, 524287
- cgh %r0, 0(%r1)
- cgh %r0, 0(%r15)
- cgh %r0, 524287(%r1,%r15)
- cgh %r0, 524287(%r15,%r1)
- cgh %r15, 0
diff --git a/test/MC/SystemZ/insn-cgh-02.s b/test/MC/SystemZ/insn-cgh-02.s
deleted file mode 100644
index 60e665f2dd..0000000000
--- a/test/MC/SystemZ/insn-cgh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cgh %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: cgh %r0, 524288
-
- cgh %r0, -524289
- cgh %r0, 524288
diff --git a/test/MC/SystemZ/insn-cghi-01.s b/test/MC/SystemZ/insn-cghi-01.s
deleted file mode 100644
index 575ad89023..0000000000
--- a/test/MC/SystemZ/insn-cghi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cghi %r0, -32768 # encoding: [0xa7,0x0f,0x80,0x00]
-#CHECK: cghi %r0, -1 # encoding: [0xa7,0x0f,0xff,0xff]
-#CHECK: cghi %r0, 0 # encoding: [0xa7,0x0f,0x00,0x00]
-#CHECK: cghi %r0, 1 # encoding: [0xa7,0x0f,0x00,0x01]
-#CHECK: cghi %r0, 32767 # encoding: [0xa7,0x0f,0x7f,0xff]
-#CHECK: cghi %r15, 0 # encoding: [0xa7,0xff,0x00,0x00]
-
- cghi %r0, -32768
- cghi %r0, -1
- cghi %r0, 0
- cghi %r0, 1
- cghi %r0, 32767
- cghi %r15, 0
diff --git a/test/MC/SystemZ/insn-cghi-02.s b/test/MC/SystemZ/insn-cghi-02.s
deleted file mode 100644
index bd4a52a6b7..0000000000
--- a/test/MC/SystemZ/insn-cghi-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cghi %r0, -32769
-#CHECK: error: invalid operand
-#CHECK: cghi %r0, 32768
-#CHECK: error: invalid operand
-#CHECK: cghi %r0, foo
-
- cghi %r0, -32769
- cghi %r0, 32768
- cghi %r0, foo
diff --git a/test/MC/SystemZ/insn-cghrl-01.s b/test/MC/SystemZ/insn-cghrl-01.s
deleted file mode 100644
index c48c5ec3ef..0000000000
--- a/test/MC/SystemZ/insn-cghrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cghrl %r0, 2864434397 # encoding: [0xc6,0x04,0x55,0x5d,0xe6,0x6e]
-#CHECK: cghrl %r15, 2864434397 # encoding: [0xc6,0xf4,0x55,0x5d,0xe6,0x6e]
-
- cghrl %r0,0xaabbccdd
- cghrl %r15,0xaabbccdd
-
-#CHECK: cghrl %r0, foo # encoding: [0xc6,0x04,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: cghrl %r15, foo # encoding: [0xc6,0xf4,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- cghrl %r0,foo
- cghrl %r15,foo
-
-#CHECK: cghrl %r3, bar+100 # encoding: [0xc6,0x34,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: cghrl %r4, bar+100 # encoding: [0xc6,0x44,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- cghrl %r3,bar+100
- cghrl %r4,bar+100
-
-#CHECK: cghrl %r7, frob@PLT # encoding: [0xc6,0x74,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: cghrl %r8, frob@PLT # encoding: [0xc6,0x84,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- cghrl %r7,frob@PLT
- cghrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-cghsi-01.s b/test/MC/SystemZ/insn-cghsi-01.s
deleted file mode 100644
index 7d67e20b5b..0000000000
--- a/test/MC/SystemZ/insn-cghsi-01.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cghsi 0, 0 # encoding: [0xe5,0x58,0x00,0x00,0x00,0x00]
-#CHECK: cghsi 4095, 0 # encoding: [0xe5,0x58,0x0f,0xff,0x00,0x00]
-#CHECK: cghsi 0, -32768 # encoding: [0xe5,0x58,0x00,0x00,0x80,0x00]
-#CHECK: cghsi 0, -1 # encoding: [0xe5,0x58,0x00,0x00,0xff,0xff]
-#CHECK: cghsi 0, 0 # encoding: [0xe5,0x58,0x00,0x00,0x00,0x00]
-#CHECK: cghsi 0, 1 # encoding: [0xe5,0x58,0x00,0x00,0x00,0x01]
-#CHECK: cghsi 0, 32767 # encoding: [0xe5,0x58,0x00,0x00,0x7f,0xff]
-#CHECK: cghsi 0(%r1), 42 # encoding: [0xe5,0x58,0x10,0x00,0x00,0x2a]
-#CHECK: cghsi 0(%r15), 42 # encoding: [0xe5,0x58,0xf0,0x00,0x00,0x2a]
-#CHECK: cghsi 4095(%r1), 42 # encoding: [0xe5,0x58,0x1f,0xff,0x00,0x2a]
-#CHECK: cghsi 4095(%r15), 42 # encoding: [0xe5,0x58,0xff,0xff,0x00,0x2a]
-
- cghsi 0, 0
- cghsi 4095, 0
- cghsi 0, -32768
- cghsi 0, -1
- cghsi 0, 0
- cghsi 0, 1
- cghsi 0, 32767
- cghsi 0(%r1), 42
- cghsi 0(%r15), 42
- cghsi 4095(%r1), 42
- cghsi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-cghsi-02.s b/test/MC/SystemZ/insn-cghsi-02.s
deleted file mode 100644
index 773ee5cd9e..0000000000
--- a/test/MC/SystemZ/insn-cghsi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cghsi -1, 0
-#CHECK: error: invalid operand
-#CHECK: cghsi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: cghsi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: cghsi 0, -32769
-#CHECK: error: invalid operand
-#CHECK: cghsi 0, 32768
-
- cghsi -1, 0
- cghsi 4096, 0
- cghsi 0(%r1,%r2), 0
- cghsi 0, -32769
- cghsi 0, 32768
diff --git a/test/MC/SystemZ/insn-cgr-01.s b/test/MC/SystemZ/insn-cgr-01.s
deleted file mode 100644
index 334a0f63f8..0000000000
--- a/test/MC/SystemZ/insn-cgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgr %r0, %r0 # encoding: [0xb9,0x20,0x00,0x00]
-#CHECK: cgr %r0, %r15 # encoding: [0xb9,0x20,0x00,0x0f]
-#CHECK: cgr %r15, %r0 # encoding: [0xb9,0x20,0x00,0xf0]
-#CHECK: cgr %r7, %r8 # encoding: [0xb9,0x20,0x00,0x78]
-
- cgr %r0,%r0
- cgr %r0,%r15
- cgr %r15,%r0
- cgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-cgrl-01.s b/test/MC/SystemZ/insn-cgrl-01.s
deleted file mode 100644
index af878cbf45..0000000000
--- a/test/MC/SystemZ/insn-cgrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgrl %r0, 2864434397 # encoding: [0xc6,0x08,0x55,0x5d,0xe6,0x6e]
-#CHECK: cgrl %r15, 2864434397 # encoding: [0xc6,0xf8,0x55,0x5d,0xe6,0x6e]
-
- cgrl %r0,0xaabbccdd
- cgrl %r15,0xaabbccdd
-
-#CHECK: cgrl %r0, foo # encoding: [0xc6,0x08,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: cgrl %r15, foo # encoding: [0xc6,0xf8,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- cgrl %r0,foo
- cgrl %r15,foo
-
-#CHECK: cgrl %r3, bar+100 # encoding: [0xc6,0x38,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: cgrl %r4, bar+100 # encoding: [0xc6,0x48,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- cgrl %r3,bar+100
- cgrl %r4,bar+100
-
-#CHECK: cgrl %r7, frob@PLT # encoding: [0xc6,0x78,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: cgrl %r8, frob@PLT # encoding: [0xc6,0x88,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- cgrl %r7,frob@PLT
- cgrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-cgxbr-01.s b/test/MC/SystemZ/insn-cgxbr-01.s
deleted file mode 100644
index 0250b52955..0000000000
--- a/test/MC/SystemZ/insn-cgxbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cgxbr %r0, 0, %f0 # encoding: [0xb3,0xaa,0x00,0x00]
-#CHECK: cgxbr %r0, 0, %f13 # encoding: [0xb3,0xaa,0x00,0x0d]
-#CHECK: cgxbr %r0, 15, %f0 # encoding: [0xb3,0xaa,0xf0,0x00]
-#CHECK: cgxbr %r4, 5, %f8 # encoding: [0xb3,0xaa,0x50,0x48]
-#CHECK: cgxbr %r15, 0, %f0 # encoding: [0xb3,0xaa,0x00,0xf0]
-
- cgxbr %r0, 0, %f0
- cgxbr %r0, 0, %f13
- cgxbr %r0, 15, %f0
- cgxbr %r4, 5, %f8
- cgxbr %r15, 0, %f0
diff --git a/test/MC/SystemZ/insn-cgxbr-02.s b/test/MC/SystemZ/insn-cgxbr-02.s
deleted file mode 100644
index 9caab9fc40..0000000000
--- a/test/MC/SystemZ/insn-cgxbr-02.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cgxbr %r0, 0, %r0
-#CHECK: error: invalid register
-#CHECK: cgxbr %f0, 0, %f0
-#CHECK: error: invalid operand
-#CHECK: cgxbr %r0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: cgxbr %r0, 16, %f0
-#CHECK: error: invalid register
-#CHECK: cgxbr %r0, 0, %f2
-#CHECK: error: invalid register
-#CHECK: cgxbr %r0, 0, %f14
-
- cgxbr %r0, 0, %r0
- cgxbr %f0, 0, %f0
- cgxbr %r0, -1, %f0
- cgxbr %r0, 16, %f0
- cgxbr %r0, 0, %f2
- cgxbr %r0, 0, %f14
-
diff --git a/test/MC/SystemZ/insn-ch-01.s b/test/MC/SystemZ/insn-ch-01.s
deleted file mode 100644
index dfb0b7fcca..0000000000
--- a/test/MC/SystemZ/insn-ch-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: ch %r0, 0(%r15) # encoding: [0x49,0x00,0xf0,0x00]
-#CHECK: ch %r0, 4095(%r1,%r15) # encoding: [0x49,0x01,0xff,0xff]
-#CHECK: ch %r0, 4095(%r15,%r1) # encoding: [0x49,0x0f,0x1f,0xff]
-#CHECK: ch %r15, 0 # encoding: [0x49,0xf0,0x00,0x00]
-
- ch %r0, 0
- ch %r0, 4095
- ch %r0, 0(%r1)
- ch %r0, 0(%r15)
- ch %r0, 4095(%r1,%r15)
- ch %r0, 4095(%r15,%r1)
- ch %r15, 0
diff --git a/test/MC/SystemZ/insn-ch-02.s b/test/MC/SystemZ/insn-ch-02.s
deleted file mode 100644
index 2034c2b8d4..0000000000
--- a/test/MC/SystemZ/insn-ch-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ch %r0, -1
-#CHECK: error: invalid operand
-#CHECK: ch %r0, 4096
-
- ch %r0, -1
- ch %r0, 4096
diff --git a/test/MC/SystemZ/insn-chhsi-01.s b/test/MC/SystemZ/insn-chhsi-01.s
deleted file mode 100644
index 0fd50bc5e1..0000000000
--- a/test/MC/SystemZ/insn-chhsi-01.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: chhsi 0, 0 # encoding: [0xe5,0x54,0x00,0x00,0x00,0x00]
-#CHECK: chhsi 4095, 0 # encoding: [0xe5,0x54,0x0f,0xff,0x00,0x00]
-#CHECK: chhsi 0, -32768 # encoding: [0xe5,0x54,0x00,0x00,0x80,0x00]
-#CHECK: chhsi 0, -1 # encoding: [0xe5,0x54,0x00,0x00,0xff,0xff]
-#CHECK: chhsi 0, 0 # encoding: [0xe5,0x54,0x00,0x00,0x00,0x00]
-#CHECK: chhsi 0, 1 # encoding: [0xe5,0x54,0x00,0x00,0x00,0x01]
-#CHECK: chhsi 0, 32767 # encoding: [0xe5,0x54,0x00,0x00,0x7f,0xff]
-#CHECK: chhsi 0(%r1), 42 # encoding: [0xe5,0x54,0x10,0x00,0x00,0x2a]
-#CHECK: chhsi 0(%r15), 42 # encoding: [0xe5,0x54,0xf0,0x00,0x00,0x2a]
-#CHECK: chhsi 4095(%r1), 42 # encoding: [0xe5,0x54,0x1f,0xff,0x00,0x2a]
-#CHECK: chhsi 4095(%r15), 42 # encoding: [0xe5,0x54,0xff,0xff,0x00,0x2a]
-
- chhsi 0, 0
- chhsi 4095, 0
- chhsi 0, -32768
- chhsi 0, -1
- chhsi 0, 0
- chhsi 0, 1
- chhsi 0, 32767
- chhsi 0(%r1), 42
- chhsi 0(%r15), 42
- chhsi 4095(%r1), 42
- chhsi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-chhsi-02.s b/test/MC/SystemZ/insn-chhsi-02.s
deleted file mode 100644
index 24e8c0cfbd..0000000000
--- a/test/MC/SystemZ/insn-chhsi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: chhsi -1, 0
-#CHECK: error: invalid operand
-#CHECK: chhsi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: chhsi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: chhsi 0, -32769
-#CHECK: error: invalid operand
-#CHECK: chhsi 0, 32768
-
- chhsi -1, 0
- chhsi 4096, 0
- chhsi 0(%r1,%r2), 0
- chhsi 0, -32769
- chhsi 0, 32768
diff --git a/test/MC/SystemZ/insn-chi-01.s b/test/MC/SystemZ/insn-chi-01.s
deleted file mode 100644
index fb44cfc217..0000000000
--- a/test/MC/SystemZ/insn-chi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: chi %r0, -32768 # encoding: [0xa7,0x0e,0x80,0x00]
-#CHECK: chi %r0, -1 # encoding: [0xa7,0x0e,0xff,0xff]
-#CHECK: chi %r0, 0 # encoding: [0xa7,0x0e,0x00,0x00]
-#CHECK: chi %r0, 1 # encoding: [0xa7,0x0e,0x00,0x01]
-#CHECK: chi %r0, 32767 # encoding: [0xa7,0x0e,0x7f,0xff]
-#CHECK: chi %r15, 0 # encoding: [0xa7,0xfe,0x00,0x00]
-
- chi %r0, -32768
- chi %r0, -1
- chi %r0, 0
- chi %r0, 1
- chi %r0, 32767
- chi %r15, 0
diff --git a/test/MC/SystemZ/insn-chi-02.s b/test/MC/SystemZ/insn-chi-02.s
deleted file mode 100644
index bb9ffdc7e6..0000000000
--- a/test/MC/SystemZ/insn-chi-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: chi %r0, -32769
-#CHECK: error: invalid operand
-#CHECK: chi %r0, 32768
-#CHECK: error: invalid operand
-#CHECK: chi %r0, foo
-
- chi %r0, -32769
- chi %r0, 32768
- chi %r0, foo
diff --git a/test/MC/SystemZ/insn-chrl-01.s b/test/MC/SystemZ/insn-chrl-01.s
deleted file mode 100644
index c133a326d2..0000000000
--- a/test/MC/SystemZ/insn-chrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: chrl %r0, 2864434397 # encoding: [0xc6,0x05,0x55,0x5d,0xe6,0x6e]
-#CHECK: chrl %r15, 2864434397 # encoding: [0xc6,0xf5,0x55,0x5d,0xe6,0x6e]
-
- chrl %r0,0xaabbccdd
- chrl %r15,0xaabbccdd
-
-#CHECK: chrl %r0, foo # encoding: [0xc6,0x05,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: chrl %r15, foo # encoding: [0xc6,0xf5,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- chrl %r0,foo
- chrl %r15,foo
-
-#CHECK: chrl %r3, bar+100 # encoding: [0xc6,0x35,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: chrl %r4, bar+100 # encoding: [0xc6,0x45,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- chrl %r3,bar+100
- chrl %r4,bar+100
-
-#CHECK: chrl %r7, frob@PLT # encoding: [0xc6,0x75,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: chrl %r8, frob@PLT # encoding: [0xc6,0x85,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- chrl %r7,frob@PLT
- chrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-chsi-01.s b/test/MC/SystemZ/insn-chsi-01.s
deleted file mode 100644
index 6d92202185..0000000000
--- a/test/MC/SystemZ/insn-chsi-01.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: chsi 0, 0 # encoding: [0xe5,0x5c,0x00,0x00,0x00,0x00]
-#CHECK: chsi 4095, 0 # encoding: [0xe5,0x5c,0x0f,0xff,0x00,0x00]
-#CHECK: chsi 0, -32768 # encoding: [0xe5,0x5c,0x00,0x00,0x80,0x00]
-#CHECK: chsi 0, -1 # encoding: [0xe5,0x5c,0x00,0x00,0xff,0xff]
-#CHECK: chsi 0, 0 # encoding: [0xe5,0x5c,0x00,0x00,0x00,0x00]
-#CHECK: chsi 0, 1 # encoding: [0xe5,0x5c,0x00,0x00,0x00,0x01]
-#CHECK: chsi 0, 32767 # encoding: [0xe5,0x5c,0x00,0x00,0x7f,0xff]
-#CHECK: chsi 0(%r1), 42 # encoding: [0xe5,0x5c,0x10,0x00,0x00,0x2a]
-#CHECK: chsi 0(%r15), 42 # encoding: [0xe5,0x5c,0xf0,0x00,0x00,0x2a]
-#CHECK: chsi 4095(%r1), 42 # encoding: [0xe5,0x5c,0x1f,0xff,0x00,0x2a]
-#CHECK: chsi 4095(%r15), 42 # encoding: [0xe5,0x5c,0xff,0xff,0x00,0x2a]
-
- chsi 0, 0
- chsi 4095, 0
- chsi 0, -32768
- chsi 0, -1
- chsi 0, 0
- chsi 0, 1
- chsi 0, 32767
- chsi 0(%r1), 42
- chsi 0(%r15), 42
- chsi 4095(%r1), 42
- chsi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-chsi-02.s b/test/MC/SystemZ/insn-chsi-02.s
deleted file mode 100644
index 16ace53d67..0000000000
--- a/test/MC/SystemZ/insn-chsi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: chsi -1, 0
-#CHECK: error: invalid operand
-#CHECK: chsi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: chsi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: chsi 0, -32769
-#CHECK: error: invalid operand
-#CHECK: chsi 0, 32768
-
- chsi -1, 0
- chsi 4096, 0
- chsi 0(%r1,%r2), 0
- chsi 0, -32769
- chsi 0, 32768
diff --git a/test/MC/SystemZ/insn-chy-01.s b/test/MC/SystemZ/insn-chy-01.s
deleted file mode 100644
index 9ecc0551cf..0000000000
--- a/test/MC/SystemZ/insn-chy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: chy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x79]
-#CHECK: chy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x79]
-#CHECK: chy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x79]
-#CHECK: chy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x79]
-#CHECK: chy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x79]
-#CHECK: chy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x79]
-#CHECK: chy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x79]
-#CHECK: chy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x79]
-#CHECK: chy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x79]
-#CHECK: chy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x79]
-
- chy %r0, -524288
- chy %r0, -1
- chy %r0, 0
- chy %r0, 1
- chy %r0, 524287
- chy %r0, 0(%r1)
- chy %r0, 0(%r15)
- chy %r0, 524287(%r1,%r15)
- chy %r0, 524287(%r15,%r1)
- chy %r15, 0
diff --git a/test/MC/SystemZ/insn-chy-02.s b/test/MC/SystemZ/insn-chy-02.s
deleted file mode 100644
index 8ab849f090..0000000000
--- a/test/MC/SystemZ/insn-chy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: chy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: chy %r0, 524288
-
- chy %r0, -524289
- chy %r0, 524288
diff --git a/test/MC/SystemZ/insn-cl-01.s b/test/MC/SystemZ/insn-cl-01.s
deleted file mode 100644
index 7face8f854..0000000000
--- a/test/MC/SystemZ/insn-cl-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cl %r0, 0 # encoding: [0x55,0x00,0x00,0x00]
-#CHECK: cl %r0, 4095 # encoding: [0x55,0x00,0x0f,0xff]
-#CHECK: cl %r0, 0(%r1) # encoding: [0x55,0x00,0x10,0x00]
-#CHECK: cl %r0, 0(%r15) # encoding: [0x55,0x00,0xf0,0x00]
-#CHECK: cl %r0, 4095(%r1,%r15) # encoding: [0x55,0x01,0xff,0xff]
-#CHECK: cl %r0, 4095(%r15,%r1) # encoding: [0x55,0x0f,0x1f,0xff]
-#CHECK: cl %r15, 0 # encoding: [0x55,0xf0,0x00,0x00]
-
- cl %r0, 0
- cl %r0, 4095
- cl %r0, 0(%r1)
- cl %r0, 0(%r15)
- cl %r0, 4095(%r1,%r15)
- cl %r0, 4095(%r15,%r1)
- cl %r15, 0
diff --git a/test/MC/SystemZ/insn-cl-02.s b/test/MC/SystemZ/insn-cl-02.s
deleted file mode 100644
index ec3e1df996..0000000000
--- a/test/MC/SystemZ/insn-cl-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cl %r0, -1
-#CHECK: error: invalid operand
-#CHECK: cl %r0, 4096
-
- cl %r0, -1
- cl %r0, 4096
diff --git a/test/MC/SystemZ/insn-clfhsi-01.s b/test/MC/SystemZ/insn-clfhsi-01.s
deleted file mode 100644
index 910515d96b..0000000000
--- a/test/MC/SystemZ/insn-clfhsi-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clfhsi 0, 0 # encoding: [0xe5,0x5d,0x00,0x00,0x00,0x00]
-#CHECK: clfhsi 4095, 0 # encoding: [0xe5,0x5d,0x0f,0xff,0x00,0x00]
-#CHECK: clfhsi 0, 65535 # encoding: [0xe5,0x5d,0x00,0x00,0xff,0xff]
-#CHECK: clfhsi 0(%r1), 42 # encoding: [0xe5,0x5d,0x10,0x00,0x00,0x2a]
-#CHECK: clfhsi 0(%r15), 42 # encoding: [0xe5,0x5d,0xf0,0x00,0x00,0x2a]
-#CHECK: clfhsi 4095(%r1), 42 # encoding: [0xe5,0x5d,0x1f,0xff,0x00,0x2a]
-#CHECK: clfhsi 4095(%r15), 42 # encoding: [0xe5,0x5d,0xff,0xff,0x00,0x2a]
-
- clfhsi 0, 0
- clfhsi 4095, 0
- clfhsi 0, 65535
- clfhsi 0(%r1), 42
- clfhsi 0(%r15), 42
- clfhsi 4095(%r1), 42
- clfhsi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-clfhsi-02.s b/test/MC/SystemZ/insn-clfhsi-02.s
deleted file mode 100644
index 4a6f4049c5..0000000000
--- a/test/MC/SystemZ/insn-clfhsi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: clfhsi -1, 0
-#CHECK: error: invalid operand
-#CHECK: clfhsi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: clfhsi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: clfhsi 0, -1
-#CHECK: error: invalid operand
-#CHECK: clfhsi 0, 65536
-
- clfhsi -1, 0
- clfhsi 4096, 0
- clfhsi 0(%r1,%r2), 0
- clfhsi 0, -1
- clfhsi 0, 65536
diff --git a/test/MC/SystemZ/insn-clfi-01.s b/test/MC/SystemZ/insn-clfi-01.s
deleted file mode 100644
index 4156c7f6e8..0000000000
--- a/test/MC/SystemZ/insn-clfi-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clfi %r0, 0 # encoding: [0xc2,0x0f,0x00,0x00,0x00,0x00]
-#CHECK: clfi %r0, 4294967295 # encoding: [0xc2,0x0f,0xff,0xff,0xff,0xff]
-#CHECK: clfi %r15, 0 # encoding: [0xc2,0xff,0x00,0x00,0x00,0x00]
-
- clfi %r0, 0
- clfi %r0, (1 << 32) - 1
- clfi %r15, 0
diff --git a/test/MC/SystemZ/insn-clfi-02.s b/test/MC/SystemZ/insn-clfi-02.s
deleted file mode 100644
index 9d3f80630e..0000000000
--- a/test/MC/SystemZ/insn-clfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: clfi %r0, -1
-#CHECK: error: invalid operand
-#CHECK: clfi %r0, (1 << 32)
-
- clfi %r0, -1
- clfi %r0, (1 << 32)
diff --git a/test/MC/SystemZ/insn-clg-01.s b/test/MC/SystemZ/insn-clg-01.s
deleted file mode 100644
index 596bae1c81..0000000000
--- a/test/MC/SystemZ/insn-clg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x21]
-#CHECK: clg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x21]
-#CHECK: clg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x21]
-#CHECK: clg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x21]
-#CHECK: clg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x21]
-#CHECK: clg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x21]
-#CHECK: clg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x21]
-#CHECK: clg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x21]
-#CHECK: clg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x21]
-#CHECK: clg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x21]
-
- clg %r0, -524288
- clg %r0, -1
- clg %r0, 0
- clg %r0, 1
- clg %r0, 524287
- clg %r0, 0(%r1)
- clg %r0, 0(%r15)
- clg %r0, 524287(%r1,%r15)
- clg %r0, 524287(%r15,%r1)
- clg %r15, 0
diff --git a/test/MC/SystemZ/insn-clg-02.s b/test/MC/SystemZ/insn-clg-02.s
deleted file mode 100644
index a17aab5204..0000000000
--- a/test/MC/SystemZ/insn-clg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: clg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: clg %r0, 524288
-
- clg %r0, -524289
- clg %r0, 524288
diff --git a/test/MC/SystemZ/insn-clgf-01.s b/test/MC/SystemZ/insn-clgf-01.s
deleted file mode 100644
index 003ba83802..0000000000
--- a/test/MC/SystemZ/insn-clgf-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x31]
-#CHECK: clgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x31]
-#CHECK: clgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x31]
-#CHECK: clgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x31]
-#CHECK: clgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x31]
-#CHECK: clgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x31]
-#CHECK: clgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x31]
-#CHECK: clgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x31]
-#CHECK: clgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x31]
-#CHECK: clgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x31]
-
- clgf %r0, -524288
- clgf %r0, -1
- clgf %r0, 0
- clgf %r0, 1
- clgf %r0, 524287
- clgf %r0, 0(%r1)
- clgf %r0, 0(%r15)
- clgf %r0, 524287(%r1,%r15)
- clgf %r0, 524287(%r15,%r1)
- clgf %r15, 0
diff --git a/test/MC/SystemZ/insn-clgf-02.s b/test/MC/SystemZ/insn-clgf-02.s
deleted file mode 100644
index 9de49ae79b..0000000000
--- a/test/MC/SystemZ/insn-clgf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: clgf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: clgf %r0, 524288
-
- clgf %r0, -524289
- clgf %r0, 524288
diff --git a/test/MC/SystemZ/insn-clgfi-01.s b/test/MC/SystemZ/insn-clgfi-01.s
deleted file mode 100644
index dbf4a0e8f0..0000000000
--- a/test/MC/SystemZ/insn-clgfi-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clgfi %r0, 0 # encoding: [0xc2,0x0e,0x00,0x00,0x00,0x00]
-#CHECK: clgfi %r0, 4294967295 # encoding: [0xc2,0x0e,0xff,0xff,0xff,0xff]
-#CHECK: clgfi %r15, 0 # encoding: [0xc2,0xfe,0x00,0x00,0x00,0x00]
-
- clgfi %r0, 0
- clgfi %r0, (1 << 32) - 1
- clgfi %r15, 0
diff --git a/test/MC/SystemZ/insn-clgfi-02.s b/test/MC/SystemZ/insn-clgfi-02.s
deleted file mode 100644
index 3f2db33d83..0000000000
--- a/test/MC/SystemZ/insn-clgfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: clgfi %r0, -1
-#CHECK: error: invalid operand
-#CHECK: clgfi %r0, (1 << 32)
-
- clgfi %r0, -1
- clgfi %r0, (1 << 32)
diff --git a/test/MC/SystemZ/insn-clgfr-01.s b/test/MC/SystemZ/insn-clgfr-01.s
deleted file mode 100644
index 37f1e24452..0000000000
--- a/test/MC/SystemZ/insn-clgfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clgfr %r0, %r0 # encoding: [0xb9,0x31,0x00,0x00]
-#CHECK: clgfr %r0, %r15 # encoding: [0xb9,0x31,0x00,0x0f]
-#CHECK: clgfr %r15, %r0 # encoding: [0xb9,0x31,0x00,0xf0]
-#CHECK: clgfr %r7, %r8 # encoding: [0xb9,0x31,0x00,0x78]
-
- clgfr %r0,%r0
- clgfr %r0,%r15
- clgfr %r15,%r0
- clgfr %r7,%r8
diff --git a/test/MC/SystemZ/insn-clgfrl-01.s b/test/MC/SystemZ/insn-clgfrl-01.s
deleted file mode 100644
index 6fc6d5eb3b..0000000000
--- a/test/MC/SystemZ/insn-clgfrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clgfrl %r0, 2864434397 # encoding: [0xc6,0x0e,0x55,0x5d,0xe6,0x6e]
-#CHECK: clgfrl %r15, 2864434397 # encoding: [0xc6,0xfe,0x55,0x5d,0xe6,0x6e]
-
- clgfrl %r0,0xaabbccdd
- clgfrl %r15,0xaabbccdd
-
-#CHECK: clgfrl %r0, foo # encoding: [0xc6,0x0e,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: clgfrl %r15, foo # encoding: [0xc6,0xfe,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- clgfrl %r0,foo
- clgfrl %r15,foo
-
-#CHECK: clgfrl %r3, bar+100 # encoding: [0xc6,0x3e,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: clgfrl %r4, bar+100 # encoding: [0xc6,0x4e,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- clgfrl %r3,bar+100
- clgfrl %r4,bar+100
-
-#CHECK: clgfrl %r7, frob@PLT # encoding: [0xc6,0x7e,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: clgfrl %r8, frob@PLT # encoding: [0xc6,0x8e,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- clgfrl %r7,frob@PLT
- clgfrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-clghrl-01.s b/test/MC/SystemZ/insn-clghrl-01.s
deleted file mode 100644
index 41c2580abd..0000000000
--- a/test/MC/SystemZ/insn-clghrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clghrl %r0, 2864434397 # encoding: [0xc6,0x06,0x55,0x5d,0xe6,0x6e]
-#CHECK: clghrl %r15, 2864434397 # encoding: [0xc6,0xf6,0x55,0x5d,0xe6,0x6e]
-
- clghrl %r0,0xaabbccdd
- clghrl %r15,0xaabbccdd
-
-#CHECK: clghrl %r0, foo # encoding: [0xc6,0x06,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: clghrl %r15, foo # encoding: [0xc6,0xf6,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- clghrl %r0,foo
- clghrl %r15,foo
-
-#CHECK: clghrl %r3, bar+100 # encoding: [0xc6,0x36,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: clghrl %r4, bar+100 # encoding: [0xc6,0x46,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- clghrl %r3,bar+100
- clghrl %r4,bar+100
-
-#CHECK: clghrl %r7, frob@PLT # encoding: [0xc6,0x76,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: clghrl %r8, frob@PLT # encoding: [0xc6,0x86,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- clghrl %r7,frob@PLT
- clghrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-clghsi-01.s b/test/MC/SystemZ/insn-clghsi-01.s
deleted file mode 100644
index 05e0c585c0..0000000000
--- a/test/MC/SystemZ/insn-clghsi-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clghsi 0, 0 # encoding: [0xe5,0x59,0x00,0x00,0x00,0x00]
-#CHECK: clghsi 4095, 0 # encoding: [0xe5,0x59,0x0f,0xff,0x00,0x00]
-#CHECK: clghsi 0, 65535 # encoding: [0xe5,0x59,0x00,0x00,0xff,0xff]
-#CHECK: clghsi 0(%r1), 42 # encoding: [0xe5,0x59,0x10,0x00,0x00,0x2a]
-#CHECK: clghsi 0(%r15), 42 # encoding: [0xe5,0x59,0xf0,0x00,0x00,0x2a]
-#CHECK: clghsi 4095(%r1), 42 # encoding: [0xe5,0x59,0x1f,0xff,0x00,0x2a]
-#CHECK: clghsi 4095(%r15), 42 # encoding: [0xe5,0x59,0xff,0xff,0x00,0x2a]
-
- clghsi 0, 0
- clghsi 4095, 0
- clghsi 0, 65535
- clghsi 0(%r1), 42
- clghsi 0(%r15), 42
- clghsi 4095(%r1), 42
- clghsi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-clghsi-02.s b/test/MC/SystemZ/insn-clghsi-02.s
deleted file mode 100644
index f036128070..0000000000
--- a/test/MC/SystemZ/insn-clghsi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: clghsi -1, 0
-#CHECK: error: invalid operand
-#CHECK: clghsi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: clghsi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: clghsi 0, -1
-#CHECK: error: invalid operand
-#CHECK: clghsi 0, 65536
-
- clghsi -1, 0
- clghsi 4096, 0
- clghsi 0(%r1,%r2), 0
- clghsi 0, -1
- clghsi 0, 65536
diff --git a/test/MC/SystemZ/insn-clgr-01.s b/test/MC/SystemZ/insn-clgr-01.s
deleted file mode 100644
index 7e9d2ad439..0000000000
--- a/test/MC/SystemZ/insn-clgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clgr %r0, %r0 # encoding: [0xb9,0x21,0x00,0x00]
-#CHECK: clgr %r0, %r15 # encoding: [0xb9,0x21,0x00,0x0f]
-#CHECK: clgr %r15, %r0 # encoding: [0xb9,0x21,0x00,0xf0]
-#CHECK: clgr %r7, %r8 # encoding: [0xb9,0x21,0x00,0x78]
-
- clgr %r0,%r0
- clgr %r0,%r15
- clgr %r15,%r0
- clgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-clgrl-01.s b/test/MC/SystemZ/insn-clgrl-01.s
deleted file mode 100644
index 439bcd94ff..0000000000
--- a/test/MC/SystemZ/insn-clgrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clgrl %r0, 2864434397 # encoding: [0xc6,0x0a,0x55,0x5d,0xe6,0x6e]
-#CHECK: clgrl %r15, 2864434397 # encoding: [0xc6,0xfa,0x55,0x5d,0xe6,0x6e]
-
- clgrl %r0,0xaabbccdd
- clgrl %r15,0xaabbccdd
-
-#CHECK: clgrl %r0, foo # encoding: [0xc6,0x0a,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: clgrl %r15, foo # encoding: [0xc6,0xfa,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- clgrl %r0,foo
- clgrl %r15,foo
-
-#CHECK: clgrl %r3, bar+100 # encoding: [0xc6,0x3a,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: clgrl %r4, bar+100 # encoding: [0xc6,0x4a,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- clgrl %r3,bar+100
- clgrl %r4,bar+100
-
-#CHECK: clgrl %r7, frob@PLT # encoding: [0xc6,0x7a,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: clgrl %r8, frob@PLT # encoding: [0xc6,0x8a,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- clgrl %r7,frob@PLT
- clgrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-clhhsi-01.s b/test/MC/SystemZ/insn-clhhsi-01.s
deleted file mode 100644
index ae72ffa018..0000000000
--- a/test/MC/SystemZ/insn-clhhsi-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clhhsi 0, 0 # encoding: [0xe5,0x55,0x00,0x00,0x00,0x00]
-#CHECK: clhhsi 4095, 0 # encoding: [0xe5,0x55,0x0f,0xff,0x00,0x00]
-#CHECK: clhhsi 0, 65535 # encoding: [0xe5,0x55,0x00,0x00,0xff,0xff]
-#CHECK: clhhsi 0(%r1), 42 # encoding: [0xe5,0x55,0x10,0x00,0x00,0x2a]
-#CHECK: clhhsi 0(%r15), 42 # encoding: [0xe5,0x55,0xf0,0x00,0x00,0x2a]
-#CHECK: clhhsi 4095(%r1), 42 # encoding: [0xe5,0x55,0x1f,0xff,0x00,0x2a]
-#CHECK: clhhsi 4095(%r15), 42 # encoding: [0xe5,0x55,0xff,0xff,0x00,0x2a]
-
- clhhsi 0, 0
- clhhsi 4095, 0
- clhhsi 0, 65535
- clhhsi 0(%r1), 42
- clhhsi 0(%r15), 42
- clhhsi 4095(%r1), 42
- clhhsi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-clhhsi-02.s b/test/MC/SystemZ/insn-clhhsi-02.s
deleted file mode 100644
index bbdf7cd0da..0000000000
--- a/test/MC/SystemZ/insn-clhhsi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: clhhsi -1, 0
-#CHECK: error: invalid operand
-#CHECK: clhhsi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: clhhsi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: clhhsi 0, -1
-#CHECK: error: invalid operand
-#CHECK: clhhsi 0, 65536
-
- clhhsi -1, 0
- clhhsi 4096, 0
- clhhsi 0(%r1,%r2), 0
- clhhsi 0, -1
- clhhsi 0, 65536
diff --git a/test/MC/SystemZ/insn-clhrl-01.s b/test/MC/SystemZ/insn-clhrl-01.s
deleted file mode 100644
index b424de8f66..0000000000
--- a/test/MC/SystemZ/insn-clhrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clhrl %r0, 2864434397 # encoding: [0xc6,0x07,0x55,0x5d,0xe6,0x6e]
-#CHECK: clhrl %r15, 2864434397 # encoding: [0xc6,0xf7,0x55,0x5d,0xe6,0x6e]
-
- clhrl %r0,0xaabbccdd
- clhrl %r15,0xaabbccdd
-
-#CHECK: clhrl %r0, foo # encoding: [0xc6,0x07,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: clhrl %r15, foo # encoding: [0xc6,0xf7,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- clhrl %r0,foo
- clhrl %r15,foo
-
-#CHECK: clhrl %r3, bar+100 # encoding: [0xc6,0x37,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: clhrl %r4, bar+100 # encoding: [0xc6,0x47,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- clhrl %r3,bar+100
- clhrl %r4,bar+100
-
-#CHECK: clhrl %r7, frob@PLT # encoding: [0xc6,0x77,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: clhrl %r8, frob@PLT # encoding: [0xc6,0x87,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- clhrl %r7,frob@PLT
- clhrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-cli-01.s b/test/MC/SystemZ/insn-cli-01.s
deleted file mode 100644
index 23bccfab4b..0000000000
--- a/test/MC/SystemZ/insn-cli-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cli 0, 0 # encoding: [0x95,0x00,0x00,0x00]
-#CHECK: cli 4095, 0 # encoding: [0x95,0x00,0x0f,0xff]
-#CHECK: cli 0, 255 # encoding: [0x95,0xff,0x00,0x00]
-#CHECK: cli 0(%r1), 42 # encoding: [0x95,0x2a,0x10,0x00]
-#CHECK: cli 0(%r15), 42 # encoding: [0x95,0x2a,0xf0,0x00]
-#CHECK: cli 4095(%r1), 42 # encoding: [0x95,0x2a,0x1f,0xff]
-#CHECK: cli 4095(%r15), 42 # encoding: [0x95,0x2a,0xff,0xff]
-
- cli 0, 0
- cli 4095, 0
- cli 0, 255
- cli 0(%r1), 42
- cli 0(%r15), 42
- cli 4095(%r1), 42
- cli 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-cli-02.s b/test/MC/SystemZ/insn-cli-02.s
deleted file mode 100644
index 7fe6fdabfd..0000000000
--- a/test/MC/SystemZ/insn-cli-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cli -1, 0
-#CHECK: error: invalid operand
-#CHECK: cli 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: cli 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: cli 0, -1
-#CHECK: error: invalid operand
-#CHECK: cli 0, 256
-
- cli -1, 0
- cli 4096, 0
- cli 0(%r1,%r2), 0
- cli 0, -1
- cli 0, 256
diff --git a/test/MC/SystemZ/insn-cliy-01.s b/test/MC/SystemZ/insn-cliy-01.s
deleted file mode 100644
index 1a26f605d8..0000000000
--- a/test/MC/SystemZ/insn-cliy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cliy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x55]
-#CHECK: cliy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x55]
-#CHECK: cliy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x55]
-#CHECK: cliy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x55]
-#CHECK: cliy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x55]
-#CHECK: cliy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x55]
-#CHECK: cliy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x55]
-#CHECK: cliy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x55]
-#CHECK: cliy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x55]
-#CHECK: cliy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x55]
-
- cliy -524288, 0
- cliy -1, 0
- cliy 0, 0
- cliy 1, 0
- cliy 524287, 0
- cliy 0, 255
- cliy 0(%r1), 42
- cliy 0(%r15), 42
- cliy 524287(%r1), 42
- cliy 524287(%r15), 42
diff --git a/test/MC/SystemZ/insn-cliy-02.s b/test/MC/SystemZ/insn-cliy-02.s
deleted file mode 100644
index 3e8056315d..0000000000
--- a/test/MC/SystemZ/insn-cliy-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cliy -524289, 0
-#CHECK: error: invalid operand
-#CHECK: cliy 524288, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: cliy 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: cliy 0, -1
-#CHECK: error: invalid operand
-#CHECK: cliy 0, 256
-
- cliy -524289, 0
- cliy 524288, 0
- cliy 0(%r1,%r2), 0
- cliy 0, -1
- cliy 0, 256
diff --git a/test/MC/SystemZ/insn-clr-01.s b/test/MC/SystemZ/insn-clr-01.s
deleted file mode 100644
index d187d4e3e8..0000000000
--- a/test/MC/SystemZ/insn-clr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clr %r0, %r0 # encoding: [0x15,0x00]
-#CHECK: clr %r0, %r15 # encoding: [0x15,0x0f]
-#CHECK: clr %r15, %r0 # encoding: [0x15,0xf0]
-#CHECK: clr %r7, %r8 # encoding: [0x15,0x78]
-
- clr %r0,%r0
- clr %r0,%r15
- clr %r15,%r0
- clr %r7,%r8
diff --git a/test/MC/SystemZ/insn-clrl-01.s b/test/MC/SystemZ/insn-clrl-01.s
deleted file mode 100644
index 4c6e649b43..0000000000
--- a/test/MC/SystemZ/insn-clrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: clrl %r0, 2864434397 # encoding: [0xc6,0x0f,0x55,0x5d,0xe6,0x6e]
-#CHECK: clrl %r15, 2864434397 # encoding: [0xc6,0xff,0x55,0x5d,0xe6,0x6e]
-
- clrl %r0,0xaabbccdd
- clrl %r15,0xaabbccdd
-
-#CHECK: clrl %r0, foo # encoding: [0xc6,0x0f,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: clrl %r15, foo # encoding: [0xc6,0xff,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- clrl %r0,foo
- clrl %r15,foo
-
-#CHECK: clrl %r3, bar+100 # encoding: [0xc6,0x3f,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: clrl %r4, bar+100 # encoding: [0xc6,0x4f,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- clrl %r3,bar+100
- clrl %r4,bar+100
-
-#CHECK: clrl %r7, frob@PLT # encoding: [0xc6,0x7f,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: clrl %r8, frob@PLT # encoding: [0xc6,0x8f,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- clrl %r7,frob@PLT
- clrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-cly-01.s b/test/MC/SystemZ/insn-cly-01.s
deleted file mode 100644
index 8fb4af683e..0000000000
--- a/test/MC/SystemZ/insn-cly-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cly %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x55]
-#CHECK: cly %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x55]
-#CHECK: cly %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x55]
-#CHECK: cly %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x55]
-#CHECK: cly %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x55]
-#CHECK: cly %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x55]
-#CHECK: cly %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x55]
-#CHECK: cly %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x55]
-#CHECK: cly %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x55]
-#CHECK: cly %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x55]
-
- cly %r0, -524288
- cly %r0, -1
- cly %r0, 0
- cly %r0, 1
- cly %r0, 524287
- cly %r0, 0(%r1)
- cly %r0, 0(%r15)
- cly %r0, 524287(%r1,%r15)
- cly %r0, 524287(%r15,%r1)
- cly %r15, 0
diff --git a/test/MC/SystemZ/insn-cly-02.s b/test/MC/SystemZ/insn-cly-02.s
deleted file mode 100644
index 23f37a96cc..0000000000
--- a/test/MC/SystemZ/insn-cly-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cly %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: cly %r0, 524288
-
- cly %r0, -524289
- cly %r0, 524288
diff --git a/test/MC/SystemZ/insn-cpsdr-01.s b/test/MC/SystemZ/insn-cpsdr-01.s
deleted file mode 100644
index 23d773dfc9..0000000000
--- a/test/MC/SystemZ/insn-cpsdr-01.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cpsdr %f0, %f0, %f0 # encoding: [0xb3,0x72,0x00,0x00]
-#CHECK: cpsdr %f0, %f0, %f15 # encoding: [0xb3,0x72,0x00,0x0f]
-#CHECK: cpsdr %f0, %f15, %f0 # encoding: [0xb3,0x72,0xf0,0x00]
-#CHECK: cpsdr %f15, %f0, %f0 # encoding: [0xb3,0x72,0x00,0xf0]
-#CHECK: cpsdr %f1, %f2, %f3 # encoding: [0xb3,0x72,0x20,0x13]
-#CHECK: cpsdr %f15, %f15, %f15 # encoding: [0xb3,0x72,0xf0,0xff]
-
- cpsdr %f0, %f0, %f0
- cpsdr %f0, %f0, %f15
- cpsdr %f0, %f15, %f0
- cpsdr %f15, %f0, %f0
- cpsdr %f1, %f2, %f3
- cpsdr %f15, %f15, %f15
-
diff --git a/test/MC/SystemZ/insn-cr-01.s b/test/MC/SystemZ/insn-cr-01.s
deleted file mode 100644
index d77e08513f..0000000000
--- a/test/MC/SystemZ/insn-cr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cr %r0, %r0 # encoding: [0x19,0x00]
-#CHECK: cr %r0, %r15 # encoding: [0x19,0x0f]
-#CHECK: cr %r15, %r0 # encoding: [0x19,0xf0]
-#CHECK: cr %r7, %r8 # encoding: [0x19,0x78]
-
- cr %r0,%r0
- cr %r0,%r15
- cr %r15,%r0
- cr %r7,%r8
diff --git a/test/MC/SystemZ/insn-crl-01.s b/test/MC/SystemZ/insn-crl-01.s
deleted file mode 100644
index 2451b4c9f8..0000000000
--- a/test/MC/SystemZ/insn-crl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: crl %r0, 2864434397 # encoding: [0xc6,0x0d,0x55,0x5d,0xe6,0x6e]
-#CHECK: crl %r15, 2864434397 # encoding: [0xc6,0xfd,0x55,0x5d,0xe6,0x6e]
-
- crl %r0,0xaabbccdd
- crl %r15,0xaabbccdd
-
-#CHECK: crl %r0, foo # encoding: [0xc6,0x0d,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: crl %r15, foo # encoding: [0xc6,0xfd,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- crl %r0,foo
- crl %r15,foo
-
-#CHECK: crl %r3, bar+100 # encoding: [0xc6,0x3d,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: crl %r4, bar+100 # encoding: [0xc6,0x4d,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- crl %r3,bar+100
- crl %r4,bar+100
-
-#CHECK: crl %r7, frob@PLT # encoding: [0xc6,0x7d,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: crl %r8, frob@PLT # encoding: [0xc6,0x8d,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- crl %r7,frob@PLT
- crl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-cs-01.s b/test/MC/SystemZ/insn-cs-01.s
deleted file mode 100644
index 3fc6c34b74..0000000000
--- a/test/MC/SystemZ/insn-cs-01.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cs %r0, %r0, 0 # encoding: [0xba,0x00,0x00,0x00]
-#CHECK: cs %r0, %r0, 4095 # encoding: [0xba,0x00,0x0f,0xff]
-#CHECK: cs %r0, %r0, 0(%r1) # encoding: [0xba,0x00,0x10,0x00]
-#CHECK: cs %r0, %r0, 0(%r15) # encoding: [0xba,0x00,0xf0,0x00]
-#CHECK: cs %r0, %r0, 4095(%r1) # encoding: [0xba,0x00,0x1f,0xff]
-#CHECK: cs %r0, %r0, 4095(%r15) # encoding: [0xba,0x00,0xff,0xff]
-#CHECK: cs %r0, %r15, 0 # encoding: [0xba,0x0f,0x00,0x00]
-#CHECK: cs %r15, %r0, 0 # encoding: [0xba,0xf0,0x00,0x00]
-
- cs %r0, %r0, 0
- cs %r0, %r0, 4095
- cs %r0, %r0, 0(%r1)
- cs %r0, %r0, 0(%r15)
- cs %r0, %r0, 4095(%r1)
- cs %r0, %r0, 4095(%r15)
- cs %r0, %r15, 0
- cs %r15, %r0, 0
diff --git a/test/MC/SystemZ/insn-cs-02.s b/test/MC/SystemZ/insn-cs-02.s
deleted file mode 100644
index c22795998d..0000000000
--- a/test/MC/SystemZ/insn-cs-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cs %r0, %r0, -1
-#CHECK: error: invalid operand
-#CHECK: cs %r0, %r0, 4096
-#CHECK: error: invalid use of indexed addressing
-#CHECK: cs %r0, %r0, 0(%r1,%r2)
-
- cs %r0, %r0, -1
- cs %r0, %r0, 4096
- cs %r0, %r0, 0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-csg-01.s b/test/MC/SystemZ/insn-csg-01.s
deleted file mode 100644
index b0fcfa6450..0000000000
--- a/test/MC/SystemZ/insn-csg-01.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: csg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x30]
-#CHECK: csg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x30]
-#CHECK: csg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x30]
-#CHECK: csg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x30]
-#CHECK: csg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x30]
-#CHECK: csg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x30]
-#CHECK: csg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x30]
-#CHECK: csg %r15, %r0, 0 # encoding: [0xeb,0xf0,0x00,0x00,0x00,0x30]
-
- csg %r0, %r0, -524288
- csg %r0, %r0, -1
- csg %r0, %r0, 0
- csg %r0, %r0, 1
- csg %r0, %r0, 524287
- csg %r0, %r0, 0(%r1)
- csg %r0, %r0, 0(%r15)
- csg %r0, %r0, 524287(%r1)
- csg %r0, %r0, 524287(%r15)
- csg %r0, %r15, 0
- csg %r15, %r0, 0
diff --git a/test/MC/SystemZ/insn-csg-02.s b/test/MC/SystemZ/insn-csg-02.s
deleted file mode 100644
index 816b155930..0000000000
--- a/test/MC/SystemZ/insn-csg-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: csg %r0, %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: csg %r0, %r0, 524288
-#CHECK: error: invalid use of indexed addressing
-#CHECK: csg %r0, %r0, 0(%r1,%r2)
-
- csg %r0, %r0, -524289
- csg %r0, %r0, 524288
- csg %r0, %r0, 0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-csy-01.s b/test/MC/SystemZ/insn-csy-01.s
deleted file mode 100644
index d19b2df703..0000000000
--- a/test/MC/SystemZ/insn-csy-01.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: csy %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x14]
-#CHECK: csy %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x14]
-#CHECK: csy %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x14]
-#CHECK: csy %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x14]
-#CHECK: csy %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x14]
-#CHECK: csy %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x14]
-#CHECK: csy %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x14]
-#CHECK: csy %r15, %r0, 0 # encoding: [0xeb,0xf0,0x00,0x00,0x00,0x14]
-
- csy %r0, %r0, -524288
- csy %r0, %r0, -1
- csy %r0, %r0, 0
- csy %r0, %r0, 1
- csy %r0, %r0, 524287
- csy %r0, %r0, 0(%r1)
- csy %r0, %r0, 0(%r15)
- csy %r0, %r0, 524287(%r1)
- csy %r0, %r0, 524287(%r15)
- csy %r0, %r15, 0
- csy %r15, %r0, 0
diff --git a/test/MC/SystemZ/insn-csy-02.s b/test/MC/SystemZ/insn-csy-02.s
deleted file mode 100644
index 3ff795909b..0000000000
--- a/test/MC/SystemZ/insn-csy-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: csy %r0, %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: csy %r0, %r0, 524288
-#CHECK: error: invalid use of indexed addressing
-#CHECK: csy %r0, %r0, 0(%r1,%r2)
-
- csy %r0, %r0, -524289
- csy %r0, %r0, 524288
- csy %r0, %r0, 0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-cxbr-01.s b/test/MC/SystemZ/insn-cxbr-01.s
deleted file mode 100644
index 79527f0c50..0000000000
--- a/test/MC/SystemZ/insn-cxbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cxbr %f0, %f0 # encoding: [0xb3,0x49,0x00,0x00]
-#CHECK: cxbr %f0, %f13 # encoding: [0xb3,0x49,0x00,0x0d]
-#CHECK: cxbr %f8, %f8 # encoding: [0xb3,0x49,0x00,0x88]
-#CHECK: cxbr %f13, %f0 # encoding: [0xb3,0x49,0x00,0xd0]
-
- cxbr %f0, %f0
- cxbr %f0, %f13
- cxbr %f8, %f8
- cxbr %f13, %f0
diff --git a/test/MC/SystemZ/insn-cxbr-02.s b/test/MC/SystemZ/insn-cxbr-02.s
deleted file mode 100644
index 7aaca91c5f..0000000000
--- a/test/MC/SystemZ/insn-cxbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: cxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: cxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: cxbr %f14, %f0
-
- cxbr %f0, %f2
- cxbr %f0, %f14
- cxbr %f2, %f0
- cxbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-cxfbr-01.s b/test/MC/SystemZ/insn-cxfbr-01.s
deleted file mode 100644
index 14bafd1207..0000000000
--- a/test/MC/SystemZ/insn-cxfbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cxfbr %f0, %r0 # encoding: [0xb3,0x96,0x00,0x00]
-#CHECK: cxfbr %f0, %r15 # encoding: [0xb3,0x96,0x00,0x0f]
-#CHECK: cxfbr %f13, %r0 # encoding: [0xb3,0x96,0x00,0xd0]
-#CHECK: cxfbr %f8, %r7 # encoding: [0xb3,0x96,0x00,0x87]
-#CHECK: cxfbr %f13, %r15 # encoding: [0xb3,0x96,0x00,0xdf]
-
- cxfbr %f0, %r0
- cxfbr %f0, %r15
- cxfbr %f13, %r0
- cxfbr %f8, %r7
- cxfbr %f13, %r15
diff --git a/test/MC/SystemZ/insn-cxfbr-02.s b/test/MC/SystemZ/insn-cxfbr-02.s
deleted file mode 100644
index 5343378569..0000000000
--- a/test/MC/SystemZ/insn-cxfbr-02.s
+++ /dev/null
@@ -1,22 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cxfbr %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cxfbr %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cxfbr %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cxfbr %a0, %r0
-#CHECK: error: invalid register
-#CHECK: cxfbr %f2, %r0
-#CHECK: error: invalid register
-#CHECK: cxfbr %f14, %r0
-
- cxfbr %r0, %r0
- cxfbr %f0, %f0
- cxfbr %f0, %a0
- cxfbr %a0, %r0
- cxfbr %f2, %r0
- cxfbr %f14, %r0
diff --git a/test/MC/SystemZ/insn-cxgbr-01.s b/test/MC/SystemZ/insn-cxgbr-01.s
deleted file mode 100644
index 90914b44e9..0000000000
--- a/test/MC/SystemZ/insn-cxgbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: cxgbr %f0, %r0 # encoding: [0xb3,0xa6,0x00,0x00]
-#CHECK: cxgbr %f0, %r15 # encoding: [0xb3,0xa6,0x00,0x0f]
-#CHECK: cxgbr %f13, %r0 # encoding: [0xb3,0xa6,0x00,0xd0]
-#CHECK: cxgbr %f8, %r7 # encoding: [0xb3,0xa6,0x00,0x87]
-#CHECK: cxgbr %f13, %r15 # encoding: [0xb3,0xa6,0x00,0xdf]
-
- cxgbr %f0, %r0
- cxgbr %f0, %r15
- cxgbr %f13, %r0
- cxgbr %f8, %r7
- cxgbr %f13, %r15
diff --git a/test/MC/SystemZ/insn-cxgbr-02.s b/test/MC/SystemZ/insn-cxgbr-02.s
deleted file mode 100644
index d10664dba7..0000000000
--- a/test/MC/SystemZ/insn-cxgbr-02.s
+++ /dev/null
@@ -1,22 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: cxgbr %r0, %r0
-#CHECK: error: invalid register
-#CHECK: cxgbr %f0, %f0
-#CHECK: error: invalid register
-#CHECK: cxgbr %f0, %a0
-#CHECK: error: invalid register
-#CHECK: cxgbr %a0, %r0
-#CHECK: error: invalid register
-#CHECK: cxgbr %f2, %r0
-#CHECK: error: invalid register
-#CHECK: cxgbr %f14, %r0
-
- cxgbr %r0, %r0
- cxgbr %f0, %f0
- cxgbr %f0, %a0
- cxgbr %a0, %r0
- cxgbr %f2, %r0
- cxgbr %f14, %r0
diff --git a/test/MC/SystemZ/insn-cy-01.s b/test/MC/SystemZ/insn-cy-01.s
deleted file mode 100644
index 5f21b963ff..0000000000
--- a/test/MC/SystemZ/insn-cy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: cy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x59]
-#CHECK: cy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x59]
-#CHECK: cy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x59]
-#CHECK: cy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x59]
-#CHECK: cy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x59]
-#CHECK: cy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x59]
-#CHECK: cy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x59]
-
- cy %r0, -524288
- cy %r0, -1
- cy %r0, 0
- cy %r0, 1
- cy %r0, 524287
- cy %r0, 0(%r1)
- cy %r0, 0(%r15)
- cy %r0, 524287(%r1,%r15)
- cy %r0, 524287(%r15,%r1)
- cy %r15, 0
diff --git a/test/MC/SystemZ/insn-cy-02.s b/test/MC/SystemZ/insn-cy-02.s
deleted file mode 100644
index 1c996cdced..0000000000
--- a/test/MC/SystemZ/insn-cy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: cy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: cy %r0, 524288
-
- cy %r0, -524289
- cy %r0, 524288
diff --git a/test/MC/SystemZ/insn-ddb-01.s b/test/MC/SystemZ/insn-ddb-01.s
deleted file mode 100644
index 417af11c08..0000000000
--- a/test/MC/SystemZ/insn-ddb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ddb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1d]
-#CHECK: ddb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1d]
-#CHECK: ddb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1d]
-#CHECK: ddb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1d]
-#CHECK: ddb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1d]
-#CHECK: ddb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1d]
-#CHECK: ddb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1d]
-
- ddb %f0, 0
- ddb %f0, 4095
- ddb %f0, 0(%r1)
- ddb %f0, 0(%r15)
- ddb %f0, 4095(%r1,%r15)
- ddb %f0, 4095(%r15,%r1)
- ddb %f15, 0
diff --git a/test/MC/SystemZ/insn-ddb-02.s b/test/MC/SystemZ/insn-ddb-02.s
deleted file mode 100644
index c6357d10e4..0000000000
--- a/test/MC/SystemZ/insn-ddb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ddb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: ddb %f0, 4096
-
- ddb %f0, -1
- ddb %f0, 4096
diff --git a/test/MC/SystemZ/insn-ddbr-01.s b/test/MC/SystemZ/insn-ddbr-01.s
deleted file mode 100644
index 7ee1fee5b3..0000000000
--- a/test/MC/SystemZ/insn-ddbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ddbr %f0, %f0 # encoding: [0xb3,0x1d,0x00,0x00]
-#CHECK: ddbr %f0, %f15 # encoding: [0xb3,0x1d,0x00,0x0f]
-#CHECK: ddbr %f7, %f8 # encoding: [0xb3,0x1d,0x00,0x78]
-#CHECK: ddbr %f15, %f0 # encoding: [0xb3,0x1d,0x00,0xf0]
-
- ddbr %f0, %f0
- ddbr %f0, %f15
- ddbr %f7, %f8
- ddbr %f15, %f0
diff --git a/test/MC/SystemZ/insn-deb-01.s b/test/MC/SystemZ/insn-deb-01.s
deleted file mode 100644
index 93cfb02464..0000000000
--- a/test/MC/SystemZ/insn-deb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: deb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0d]
-#CHECK: deb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0d]
-#CHECK: deb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0d]
-#CHECK: deb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0d]
-#CHECK: deb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0d]
-#CHECK: deb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0d]
-#CHECK: deb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0d]
-
- deb %f0, 0
- deb %f0, 4095
- deb %f0, 0(%r1)
- deb %f0, 0(%r15)
- deb %f0, 4095(%r1,%r15)
- deb %f0, 4095(%r15,%r1)
- deb %f15, 0
diff --git a/test/MC/SystemZ/insn-deb-02.s b/test/MC/SystemZ/insn-deb-02.s
deleted file mode 100644
index e4edd4ef86..0000000000
--- a/test/MC/SystemZ/insn-deb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: deb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: deb %f0, 4096
-
- deb %f0, -1
- deb %f0, 4096
diff --git a/test/MC/SystemZ/insn-debr-01.s b/test/MC/SystemZ/insn-debr-01.s
deleted file mode 100644
index 02ee16c9cf..0000000000
--- a/test/MC/SystemZ/insn-debr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: debr %f0, %f0 # encoding: [0xb3,0x0d,0x00,0x00]
-#CHECK: debr %f0, %f15 # encoding: [0xb3,0x0d,0x00,0x0f]
-#CHECK: debr %f7, %f8 # encoding: [0xb3,0x0d,0x00,0x78]
-#CHECK: debr %f15, %f0 # encoding: [0xb3,0x0d,0x00,0xf0]
-
- debr %f0, %f0
- debr %f0, %f15
- debr %f7, %f8
- debr %f15, %f0
diff --git a/test/MC/SystemZ/insn-dl-01.s b/test/MC/SystemZ/insn-dl-01.s
deleted file mode 100644
index 50b24e7a00..0000000000
--- a/test/MC/SystemZ/insn-dl-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dl %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x97]
-#CHECK: dl %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x97]
-#CHECK: dl %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x97]
-#CHECK: dl %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x97]
-#CHECK: dl %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x97]
-#CHECK: dl %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x97]
-#CHECK: dl %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x97]
-#CHECK: dl %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x97]
-#CHECK: dl %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x97]
-#CHECK: dl %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x97]
-
- dl %r0, -524288
- dl %r0, -1
- dl %r0, 0
- dl %r0, 1
- dl %r0, 524287
- dl %r0, 0(%r1)
- dl %r0, 0(%r15)
- dl %r0, 524287(%r1,%r15)
- dl %r0, 524287(%r15,%r1)
- dl %r14, 0
diff --git a/test/MC/SystemZ/insn-dl-02.s b/test/MC/SystemZ/insn-dl-02.s
deleted file mode 100644
index 8f9f37320b..0000000000
--- a/test/MC/SystemZ/insn-dl-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: dl %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: dl %r0, 524288
-#CHECK: error: invalid register
-#CHECK: dl %r1, 0
-#CHECK: error: invalid register
-#CHECK: dl %r15, 0
-
- dl %r0, -524289
- dl %r0, 524288
- dl %r1, 0
- dl %r15, 0
diff --git a/test/MC/SystemZ/insn-dlg-01.s b/test/MC/SystemZ/insn-dlg-01.s
deleted file mode 100644
index 8a304f828e..0000000000
--- a/test/MC/SystemZ/insn-dlg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dlg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x87]
-#CHECK: dlg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x87]
-#CHECK: dlg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x87]
-#CHECK: dlg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x87]
-#CHECK: dlg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x87]
-#CHECK: dlg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x87]
-#CHECK: dlg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x87]
-#CHECK: dlg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x87]
-#CHECK: dlg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x87]
-#CHECK: dlg %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x87]
-
- dlg %r0, -524288
- dlg %r0, -1
- dlg %r0, 0
- dlg %r0, 1
- dlg %r0, 524287
- dlg %r0, 0(%r1)
- dlg %r0, 0(%r15)
- dlg %r0, 524287(%r1,%r15)
- dlg %r0, 524287(%r15,%r1)
- dlg %r14, 0
diff --git a/test/MC/SystemZ/insn-dlg-02.s b/test/MC/SystemZ/insn-dlg-02.s
deleted file mode 100644
index cbed898173..0000000000
--- a/test/MC/SystemZ/insn-dlg-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: dlg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: dlg %r0, 524288
-#CHECK: error: invalid register
-#CHECK: dlg %r1, 0
-#CHECK: error: invalid register
-#CHECK: dlg %r15, 0
-
- dlg %r0, -524289
- dlg %r0, 524288
- dlg %r1, 0
- dlg %r15, 0
diff --git a/test/MC/SystemZ/insn-dlgr-01.s b/test/MC/SystemZ/insn-dlgr-01.s
deleted file mode 100644
index b2a4de5f91..0000000000
--- a/test/MC/SystemZ/insn-dlgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dlgr %r0, %r0 # encoding: [0xb9,0x87,0x00,0x00]
-#CHECK: dlgr %r0, %r15 # encoding: [0xb9,0x87,0x00,0x0f]
-#CHECK: dlgr %r14, %r0 # encoding: [0xb9,0x87,0x00,0xe0]
-#CHECK: dlgr %r6, %r9 # encoding: [0xb9,0x87,0x00,0x69]
-
- dlgr %r0,%r0
- dlgr %r0,%r15
- dlgr %r14,%r0
- dlgr %r6,%r9
diff --git a/test/MC/SystemZ/insn-dlgr-02.s b/test/MC/SystemZ/insn-dlgr-02.s
deleted file mode 100644
index c407b4fb0b..0000000000
--- a/test/MC/SystemZ/insn-dlgr-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: dlgr %r1, %r0
-#CHECK: error: invalid register
-#CHECK: dlgr %r15, %r0
-
- dlgr %r1, %r0
- dlgr %r15, %r0
diff --git a/test/MC/SystemZ/insn-dlr-01.s b/test/MC/SystemZ/insn-dlr-01.s
deleted file mode 100644
index 7e8be79e46..0000000000
--- a/test/MC/SystemZ/insn-dlr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dlr %r0, %r0 # encoding: [0xb9,0x97,0x00,0x00]
-#CHECK: dlr %r0, %r15 # encoding: [0xb9,0x97,0x00,0x0f]
-#CHECK: dlr %r14, %r0 # encoding: [0xb9,0x97,0x00,0xe0]
-#CHECK: dlr %r6, %r9 # encoding: [0xb9,0x97,0x00,0x69]
-
- dlr %r0,%r0
- dlr %r0,%r15
- dlr %r14,%r0
- dlr %r6,%r9
diff --git a/test/MC/SystemZ/insn-dlr-02.s b/test/MC/SystemZ/insn-dlr-02.s
deleted file mode 100644
index eb31e18fd8..0000000000
--- a/test/MC/SystemZ/insn-dlr-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: dlr %r1, %r0
-#CHECK: error: invalid register
-#CHECK: dlr %r15, %r0
-
- dlr %r1, %r0
- dlr %r15, %r0
diff --git a/test/MC/SystemZ/insn-dsg-01.s b/test/MC/SystemZ/insn-dsg-01.s
deleted file mode 100644
index 5cd0b40a9f..0000000000
--- a/test/MC/SystemZ/insn-dsg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dsg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0d]
-#CHECK: dsg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0d]
-#CHECK: dsg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0d]
-#CHECK: dsg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0d]
-#CHECK: dsg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0d]
-#CHECK: dsg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0d]
-#CHECK: dsg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0d]
-#CHECK: dsg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0d]
-#CHECK: dsg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0d]
-#CHECK: dsg %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x0d]
-
- dsg %r0, -524288
- dsg %r0, -1
- dsg %r0, 0
- dsg %r0, 1
- dsg %r0, 524287
- dsg %r0, 0(%r1)
- dsg %r0, 0(%r15)
- dsg %r0, 524287(%r1,%r15)
- dsg %r0, 524287(%r15,%r1)
- dsg %r14, 0
diff --git a/test/MC/SystemZ/insn-dsg-02.s b/test/MC/SystemZ/insn-dsg-02.s
deleted file mode 100644
index 16979418c4..0000000000
--- a/test/MC/SystemZ/insn-dsg-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: dsg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: dsg %r0, 524288
-#CHECK: error: invalid register
-#CHECK: dsg %r1, 0
-#CHECK: error: invalid register
-#CHECK: dsg %r15, 0
-
- dsg %r0, -524289
- dsg %r0, 524288
- dsg %r1, 0
- dsg %r15, 0
diff --git a/test/MC/SystemZ/insn-dsgf-01.s b/test/MC/SystemZ/insn-dsgf-01.s
deleted file mode 100644
index 2cde0c79d9..0000000000
--- a/test/MC/SystemZ/insn-dsgf-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dsgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1d]
-#CHECK: dsgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1d]
-#CHECK: dsgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1d]
-#CHECK: dsgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1d]
-#CHECK: dsgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1d]
-#CHECK: dsgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1d]
-#CHECK: dsgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1d]
-#CHECK: dsgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1d]
-#CHECK: dsgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1d]
-#CHECK: dsgf %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x1d]
-
- dsgf %r0, -524288
- dsgf %r0, -1
- dsgf %r0, 0
- dsgf %r0, 1
- dsgf %r0, 524287
- dsgf %r0, 0(%r1)
- dsgf %r0, 0(%r15)
- dsgf %r0, 524287(%r1,%r15)
- dsgf %r0, 524287(%r15,%r1)
- dsgf %r14, 0
diff --git a/test/MC/SystemZ/insn-dsgf-02.s b/test/MC/SystemZ/insn-dsgf-02.s
deleted file mode 100644
index 253d9ad70b..0000000000
--- a/test/MC/SystemZ/insn-dsgf-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: dsgf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: dsgf %r0, 524288
-#CHECK: error: invalid register
-#CHECK: dsgf %r1, 0
-#CHECK: error: invalid register
-#CHECK: dsgf %r15, 0
-
- dsgf %r0, -524289
- dsgf %r0, 524288
- dsgf %r1, 0
- dsgf %r15, 0
diff --git a/test/MC/SystemZ/insn-dsgfr-01.s b/test/MC/SystemZ/insn-dsgfr-01.s
deleted file mode 100644
index 9b61550ffc..0000000000
--- a/test/MC/SystemZ/insn-dsgfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dsgfr %r0, %r0 # encoding: [0xb9,0x1d,0x00,0x00]
-#CHECK: dsgfr %r0, %r15 # encoding: [0xb9,0x1d,0x00,0x0f]
-#CHECK: dsgfr %r14, %r0 # encoding: [0xb9,0x1d,0x00,0xe0]
-#CHECK: dsgfr %r6, %r9 # encoding: [0xb9,0x1d,0x00,0x69]
-
- dsgfr %r0,%r0
- dsgfr %r0,%r15
- dsgfr %r14,%r0
- dsgfr %r6,%r9
diff --git a/test/MC/SystemZ/insn-dsgfr-02.s b/test/MC/SystemZ/insn-dsgfr-02.s
deleted file mode 100644
index 2eb8b23947..0000000000
--- a/test/MC/SystemZ/insn-dsgfr-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: dsgfr %r1, %r0
-#CHECK: error: invalid register
-#CHECK: dsgfr %r15, %r0
-
- dsgfr %r1, %r0
- dsgfr %r15, %r0
diff --git a/test/MC/SystemZ/insn-dsgr-01.s b/test/MC/SystemZ/insn-dsgr-01.s
deleted file mode 100644
index 02b4099cfa..0000000000
--- a/test/MC/SystemZ/insn-dsgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dsgr %r0, %r0 # encoding: [0xb9,0x0d,0x00,0x00]
-#CHECK: dsgr %r0, %r15 # encoding: [0xb9,0x0d,0x00,0x0f]
-#CHECK: dsgr %r14, %r0 # encoding: [0xb9,0x0d,0x00,0xe0]
-#CHECK: dsgr %r6, %r9 # encoding: [0xb9,0x0d,0x00,0x69]
-
- dsgr %r0,%r0
- dsgr %r0,%r15
- dsgr %r14,%r0
- dsgr %r6,%r9
diff --git a/test/MC/SystemZ/insn-dsgr-02.s b/test/MC/SystemZ/insn-dsgr-02.s
deleted file mode 100644
index 0194295806..0000000000
--- a/test/MC/SystemZ/insn-dsgr-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: dsgr %r1, %r0
-#CHECK: error: invalid register
-#CHECK: dsgr %r15, %r0
-
- dsgr %r1, %r0
- dsgr %r15, %r0
diff --git a/test/MC/SystemZ/insn-dxbr-01.s b/test/MC/SystemZ/insn-dxbr-01.s
deleted file mode 100644
index 6a452080ce..0000000000
--- a/test/MC/SystemZ/insn-dxbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dxbr %f0, %f0 # encoding: [0xb3,0x4d,0x00,0x00]
-#CHECK: dxbr %f0, %f13 # encoding: [0xb3,0x4d,0x00,0x0d]
-#CHECK: dxbr %f8, %f8 # encoding: [0xb3,0x4d,0x00,0x88]
-#CHECK: dxbr %f13, %f0 # encoding: [0xb3,0x4d,0x00,0xd0]
-
- dxbr %f0, %f0
- dxbr %f0, %f13
- dxbr %f8, %f8
- dxbr %f13, %f0
diff --git a/test/MC/SystemZ/insn-dxbr-02.s b/test/MC/SystemZ/insn-dxbr-02.s
deleted file mode 100644
index cac64191b8..0000000000
--- a/test/MC/SystemZ/insn-dxbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: dxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: dxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: dxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: dxbr %f14, %f0
-
- dxbr %f0, %f2
- dxbr %f0, %f14
- dxbr %f2, %f0
- dxbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-ear-01.s b/test/MC/SystemZ/insn-ear-01.s
deleted file mode 100644
index f614f86999..0000000000
--- a/test/MC/SystemZ/insn-ear-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: ear %r7, %a8 # encoding: [0xb2,0x4f,0x00,0x78]
-#CHECK: ear %r15, %a15 # encoding: [0xb2,0x4f,0x00,0xff]
-
- ear %r0, %a0
- ear %r0, %a15
- ear %r15, %a0
- ear %r7, %a8
- ear %r15, %a15
diff --git a/test/MC/SystemZ/insn-ear-02.s b/test/MC/SystemZ/insn-ear-02.s
deleted file mode 100644
index 7fb35eaa53..0000000000
--- a/test/MC/SystemZ/insn-ear-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ear %r0, 0
-#CHECK: error: invalid register
-#CHECK: ear %r0, %r0
-#CHECK: error: invalid register
-#CHECK: ear %a0, %r0
-
- ear %r0, 0
- ear %r0, %r0
- ear %a0, %r0
diff --git a/test/MC/SystemZ/insn-fidbr-01.s b/test/MC/SystemZ/insn-fidbr-01.s
deleted file mode 100644
index e52c91c211..0000000000
--- a/test/MC/SystemZ/insn-fidbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: fidbr %f0, 0, %f0 # encoding: [0xb3,0x5f,0x00,0x00]
-#CHECK: fidbr %f0, 0, %f15 # encoding: [0xb3,0x5f,0x00,0x0f]
-#CHECK: fidbr %f0, 15, %f0 # encoding: [0xb3,0x5f,0xf0,0x00]
-#CHECK: fidbr %f4, 5, %f6 # encoding: [0xb3,0x5f,0x50,0x46]
-#CHECK: fidbr %f15, 0, %f0 # encoding: [0xb3,0x5f,0x00,0xf0]
-
- fidbr %f0, 0, %f0
- fidbr %f0, 0, %f15
- fidbr %f0, 15, %f0
- fidbr %f4, 5, %f6
- fidbr %f15, 0, %f0
diff --git a/test/MC/SystemZ/insn-fidbr-02.s b/test/MC/SystemZ/insn-fidbr-02.s
deleted file mode 100644
index 5a35f46589..0000000000
--- a/test/MC/SystemZ/insn-fidbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: fidbr %r0, 0, %f0
-#CHECK: error: invalid register
-#CHECK: fidbr %f0, 0, %r0
-#CHECK: error: invalid operand
-#CHECK: fidbr %f0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: fidbr %f0, 16, %f0
-
- fidbr %r0, 0, %f0
- fidbr %f0, 0, %r0
- fidbr %f0, -1, %f0
- fidbr %f0, 16, %f0
diff --git a/test/MC/SystemZ/insn-fiebr-01.s b/test/MC/SystemZ/insn-fiebr-01.s
deleted file mode 100644
index 0b4e633a1e..0000000000
--- a/test/MC/SystemZ/insn-fiebr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: fiebr %f4, 5, %f6 # encoding: [0xb3,0x57,0x50,0x46]
-#CHECK: fiebr %f15, 0, %f0 # encoding: [0xb3,0x57,0x00,0xf0]
-
- fiebr %f0, 0, %f0
- fiebr %f0, 0, %f15
- fiebr %f0, 15, %f0
- fiebr %f4, 5, %f6
- fiebr %f15, 0, %f0
diff --git a/test/MC/SystemZ/insn-fiebr-02.s b/test/MC/SystemZ/insn-fiebr-02.s
deleted file mode 100644
index 2ecdd4d1bc..0000000000
--- a/test/MC/SystemZ/insn-fiebr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: fiebr %r0, 0, %f0
-#CHECK: error: invalid register
-#CHECK: fiebr %f0, 0, %r0
-#CHECK: error: invalid operand
-#CHECK: fiebr %f0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: fiebr %f0, 16, %f0
-
- fiebr %r0, 0, %f0
- fiebr %f0, 0, %r0
- fiebr %f0, -1, %f0
- fiebr %f0, 16, %f0
diff --git a/test/MC/SystemZ/insn-fixbr-01.s b/test/MC/SystemZ/insn-fixbr-01.s
deleted file mode 100644
index 02676ed76d..0000000000
--- a/test/MC/SystemZ/insn-fixbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: fixbr %f0, 0, %f0 # encoding: [0xb3,0x47,0x00,0x00]
-#CHECK: fixbr %f0, 0, %f13 # encoding: [0xb3,0x47,0x00,0x0d]
-#CHECK: fixbr %f0, 15, %f0 # encoding: [0xb3,0x47,0xf0,0x00]
-#CHECK: fixbr %f4, 5, %f8 # encoding: [0xb3,0x47,0x50,0x48]
-#CHECK: fixbr %f13, 0, %f0 # encoding: [0xb3,0x47,0x00,0xd0]
-
- fixbr %f0, 0, %f0
- fixbr %f0, 0, %f13
- fixbr %f0, 15, %f0
- fixbr %f4, 5, %f8
- fixbr %f13, 0, %f0
diff --git a/test/MC/SystemZ/insn-fixbr-02.s b/test/MC/SystemZ/insn-fixbr-02.s
deleted file mode 100644
index 3f68734292..0000000000
--- a/test/MC/SystemZ/insn-fixbr-02.s
+++ /dev/null
@@ -1,28 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: fixbr %r0, 0, %f0
-#CHECK: error: invalid register
-#CHECK: fixbr %f0, 0, %r0
-#CHECK: error: invalid operand
-#CHECK: fixbr %f0, -1, %f0
-#CHECK: error: invalid operand
-#CHECK: fixbr %f0, 16, %f0
-#CHECK: error: invalid register
-#CHECK: fixbr %f0, 0, %f2
-#CHECK: error: invalid register
-#CHECK: fixbr %f0, 0, %f14
-#CHECK: error: invalid register
-#CHECK: fixbr %f2, 0, %f0
-#CHECK: error: invalid register
-#CHECK: fixbr %f14, 0, %f0
-
- fixbr %r0, 0, %f0
- fixbr %f0, 0, %r0
- fixbr %f0, -1, %f0
- fixbr %f0, 16, %f0
- fixbr %f0, 0, %f2
- fixbr %f0, 0, %f14
- fixbr %f2, 0, %f0
- fixbr %f14, 0, %f0
diff --git a/test/MC/SystemZ/insn-flogr-01.s b/test/MC/SystemZ/insn-flogr-01.s
deleted file mode 100644
index f6031ce3b6..0000000000
--- a/test/MC/SystemZ/insn-flogr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: flogr %r14, %r0 # encoding: [0xb9,0x83,0x00,0xe0]
-
- flogr %r0, %r0
- flogr %r0, %r15
- flogr %r10, %r9
- flogr %r14, %r0
diff --git a/test/MC/SystemZ/insn-flogr-02.s b/test/MC/SystemZ/insn-flogr-02.s
deleted file mode 100644
index e0d117c3be..0000000000
--- a/test/MC/SystemZ/insn-flogr-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: flogr %r1, %r0
-#CHECK: error: invalid register
-#CHECK: flogr %r15, %r0
-
- flogr %r1, %r0
- flogr %r15, %r0
diff --git a/test/MC/SystemZ/insn-good.s b/test/MC/SystemZ/insn-good.s
new file mode 100644
index 0000000000..99548ab362
--- /dev/null
+++ b/test/MC/SystemZ/insn-good.s
@@ -0,0 +1,6077 @@
+# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
+
+#CHECK: a %r0, 0 # encoding: [0x5a,0x00,0x00,0x00]
+#CHECK: a %r0, 4095 # encoding: [0x5a,0x00,0x0f,0xff]
+#CHECK: a %r0, 0(%r1) # encoding: [0x5a,0x00,0x10,0x00]
+#CHECK: a %r0, 0(%r15) # encoding: [0x5a,0x00,0xf0,0x00]
+#CHECK: a %r0, 4095(%r1,%r15) # encoding: [0x5a,0x01,0xff,0xff]
+#CHECK: a %r0, 4095(%r15,%r1) # encoding: [0x5a,0x0f,0x1f,0xff]
+#CHECK: a %r15, 0 # encoding: [0x5a,0xf0,0x00,0x00]
+
+ a %r0, 0
+ a %r0, 4095
+ a %r0, 0(%r1)
+ a %r0, 0(%r15)
+ a %r0, 4095(%r1,%r15)
+ a %r0, 4095(%r15,%r1)
+ a %r15, 0
+
+#CHECK: adb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1a]
+#CHECK: adb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1a]
+#CHECK: adb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1a]
+#CHECK: adb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1a]
+#CHECK: adb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1a]
+#CHECK: adb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1a]
+#CHECK: adb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1a]
+
+ adb %f0, 0
+ adb %f0, 4095
+ adb %f0, 0(%r1)
+ adb %f0, 0(%r15)
+ adb %f0, 4095(%r1,%r15)
+ adb %f0, 4095(%r15,%r1)
+ adb %f15, 0
+
+#CHECK: adbr %f0, %f0 # encoding: [0xb3,0x1a,0x00,0x00]
+#CHECK: adbr %f0, %f15 # encoding: [0xb3,0x1a,0x00,0x0f]
+#CHECK: adbr %f7, %f8 # encoding: [0xb3,0x1a,0x00,0x78]
+#CHECK: adbr %f15, %f0 # encoding: [0xb3,0x1a,0x00,0xf0]
+
+ adbr %f0, %f0
+ adbr %f0, %f15
+ adbr %f7, %f8
+ adbr %f15, %f0
+
+#CHECK: aeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0a]
+#CHECK: aeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0a]
+#CHECK: aeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0a]
+#CHECK: aeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0a]
+#CHECK: aeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0a]
+#CHECK: aeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0a]
+#CHECK: aeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0a]
+
+ aeb %f0, 0
+ aeb %f0, 4095
+ aeb %f0, 0(%r1)
+ aeb %f0, 0(%r15)
+ aeb %f0, 4095(%r1,%r15)
+ aeb %f0, 4095(%r15,%r1)
+ aeb %f15, 0
+
+#CHECK: aebr %f0, %f0 # encoding: [0xb3,0x0a,0x00,0x00]
+#CHECK: aebr %f0, %f15 # encoding: [0xb3,0x0a,0x00,0x0f]
+#CHECK: aebr %f7, %f8 # encoding: [0xb3,0x0a,0x00,0x78]
+#CHECK: aebr %f15, %f0 # encoding: [0xb3,0x0a,0x00,0xf0]
+
+ aebr %f0, %f0
+ aebr %f0, %f15
+ aebr %f7, %f8
+ aebr %f15, %f0
+
+#CHECK: afi %r0, -2147483648 # encoding: [0xc2,0x09,0x80,0x00,0x00,0x00]
+#CHECK: afi %r0, -1 # encoding: [0xc2,0x09,0xff,0xff,0xff,0xff]
+#CHECK: afi %r0, 0 # encoding: [0xc2,0x09,0x00,0x00,0x00,0x00]
+#CHECK: afi %r0, 1 # encoding: [0xc2,0x09,0x00,0x00,0x00,0x01]
+#CHECK: afi %r0, 2147483647 # encoding: [0xc2,0x09,0x7f,0xff,0xff,0xff]
+#CHECK: afi %r15, 0 # encoding: [0xc2,0xf9,0x00,0x00,0x00,0x00]
+
+ afi %r0, -1 << 31
+ afi %r0, -1
+ afi %r0, 0
+ afi %r0, 1
+ afi %r0, (1 << 31) - 1
+ afi %r15, 0
+
+#CHECK: ag %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x08]
+#CHECK: ag %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x08]
+#CHECK: ag %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x08]
+#CHECK: ag %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x08]
+#CHECK: ag %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x08]
+#CHECK: ag %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x08]
+#CHECK: ag %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x08]
+#CHECK: ag %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x08]
+#CHECK: ag %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x08]
+#CHECK: ag %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x08]
+
+ ag %r0, -524288
+ ag %r0, -1
+ ag %r0, 0
+ ag %r0, 1
+ ag %r0, 524287
+ ag %r0, 0(%r1)
+ ag %r0, 0(%r15)
+ ag %r0, 524287(%r1,%r15)
+ ag %r0, 524287(%r15,%r1)
+ ag %r15, 0
+
+#CHECK: agf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x18]
+#CHECK: agf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x18]
+#CHECK: agf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x18]
+#CHECK: agf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x18]
+#CHECK: agf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x18]
+#CHECK: agf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x18]
+#CHECK: agf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x18]
+#CHECK: agf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x18]
+#CHECK: agf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x18]
+#CHECK: agf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x18]
+
+ agf %r0, -524288
+ agf %r0, -1
+ agf %r0, 0
+ agf %r0, 1
+ agf %r0, 524287
+ agf %r0, 0(%r1)
+ agf %r0, 0(%r15)
+ agf %r0, 524287(%r1,%r15)
+ agf %r0, 524287(%r15,%r1)
+ agf %r15, 0
+
+#CHECK: agfi %r0, -2147483648 # encoding: [0xc2,0x08,0x80,0x00,0x00,0x00]
+#CHECK: agfi %r0, -1 # encoding: [0xc2,0x08,0xff,0xff,0xff,0xff]
+#CHECK: agfi %r0, 0 # encoding: [0xc2,0x08,0x00,0x00,0x00,0x00]
+#CHECK: agfi %r0, 1 # encoding: [0xc2,0x08,0x00,0x00,0x00,0x01]
+#CHECK: agfi %r0, 2147483647 # encoding: [0xc2,0x08,0x7f,0xff,0xff,0xff]
+#CHECK: agfi %r15, 0 # encoding: [0xc2,0xf8,0x00,0x00,0x00,0x00]
+
+ agfi %r0, -1 << 31
+ agfi %r0, -1
+ agfi %r0, 0
+ agfi %r0, 1
+ agfi %r0, (1 << 31) - 1
+ agfi %r15, 0
+
+#CHECK: agfr %r0, %r0 # encoding: [0xb9,0x18,0x00,0x00]
+#CHECK: agfr %r0, %r15 # encoding: [0xb9,0x18,0x00,0x0f]
+#CHECK: agfr %r15, %r0 # encoding: [0xb9,0x18,0x00,0xf0]
+#CHECK: agfr %r7, %r8 # encoding: [0xb9,0x18,0x00,0x78]
+
+ agfr %r0,%r0
+ agfr %r0,%r15
+ agfr %r15,%r0
+ agfr %r7,%r8
+
+#CHECK: aghi %r0, -32768 # encoding: [0xa7,0x0b,0x80,0x00]
+#CHECK: aghi %r0, -1 # encoding: [0xa7,0x0b,0xff,0xff]
+#CHECK: aghi %r0, 0 # encoding: [0xa7,0x0b,0x00,0x00]
+#CHECK: aghi %r0, 1 # encoding: [0xa7,0x0b,0x00,0x01]
+#CHECK: aghi %r0, 32767 # encoding: [0xa7,0x0b,0x7f,0xff]
+#CHECK: aghi %r15, 0 # encoding: [0xa7,0xfb,0x00,0x00]
+
+ aghi %r0, -32768
+ aghi %r0, -1
+ aghi %r0, 0
+ aghi %r0, 1
+ aghi %r0, 32767
+ aghi %r15, 0
+
+#CHECK: agr %r0, %r0 # encoding: [0xb9,0x08,0x00,0x00]
+#CHECK: agr %r0, %r15 # encoding: [0xb9,0x08,0x00,0x0f]
+#CHECK: agr %r15, %r0 # encoding: [0xb9,0x08,0x00,0xf0]
+#CHECK: agr %r7, %r8 # encoding: [0xb9,0x08,0x00,0x78]
+
+ agr %r0,%r0
+ agr %r0,%r15
+ agr %r15,%r0
+ agr %r7,%r8
+
+#CHECK: agsi -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x7a]
+#CHECK: agsi -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x7a]
+#CHECK: agsi 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x7a]
+#CHECK: agsi 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x7a]
+#CHECK: agsi 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x7a]
+#CHECK: agsi 0, -128 # encoding: [0xeb,0x80,0x00,0x00,0x00,0x7a]
+#CHECK: agsi 0, -1 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x7a]
+#CHECK: agsi 0, 1 # encoding: [0xeb,0x01,0x00,0x00,0x00,0x7a]
+#CHECK: agsi 0, 127 # encoding: [0xeb,0x7f,0x00,0x00,0x00,0x7a]
+#CHECK: agsi 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x7a]
+#CHECK: agsi 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x7a]
+#CHECK: agsi 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x7a]
+#CHECK: agsi 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x7a]
+
+ agsi -524288, 0
+ agsi -1, 0
+ agsi 0, 0
+ agsi 1, 0
+ agsi 524287, 0
+ agsi 0, -128
+ agsi 0, -1
+ agsi 0, 1
+ agsi 0, 127
+ agsi 0(%r1), 42
+ agsi 0(%r15), 42
+ agsi 524287(%r1), 42
+ agsi 524287(%r15), 42
+
+#CHECK: ah %r0, 0 # encoding: [0x4a,0x00,0x00,0x00]
+#CHECK: ah %r0, 4095 # encoding: [0x4a,0x00,0x0f,0xff]
+#CHECK: ah %r0, 0(%r1) # encoding: [0x4a,0x00,0x10,0x00]
+#CHECK: ah %r0, 0(%r15) # encoding: [0x4a,0x00,0xf0,0x00]
+#CHECK: ah %r0, 4095(%r1,%r15) # encoding: [0x4a,0x01,0xff,0xff]
+#CHECK: ah %r0, 4095(%r15,%r1) # encoding: [0x4a,0x0f,0x1f,0xff]
+#CHECK: ah %r15, 0 # encoding: [0x4a,0xf0,0x00,0x00]
+
+ ah %r0, 0
+ ah %r0, 4095
+ ah %r0, 0(%r1)
+ ah %r0, 0(%r15)
+ ah %r0, 4095(%r1,%r15)
+ ah %r0, 4095(%r15,%r1)
+ ah %r15, 0
+
+#CHECK: ahi %r0, -32768 # encoding: [0xa7,0x0a,0x80,0x00]
+#CHECK: ahi %r0, -1 # encoding: [0xa7,0x0a,0xff,0xff]
+#CHECK: ahi %r0, 0 # encoding: [0xa7,0x0a,0x00,0x00]
+#CHECK: ahi %r0, 1 # encoding: [0xa7,0x0a,0x00,0x01]
+#CHECK: ahi %r0, 32767 # encoding: [0xa7,0x0a,0x7f,0xff]
+#CHECK: ahi %r15, 0 # encoding: [0xa7,0xfa,0x00,0x00]
+
+ ahi %r0, -32768
+ ahi %r0, -1
+ ahi %r0, 0
+ ahi %r0, 1
+ ahi %r0, 32767
+ ahi %r15, 0
+
+#CHECK: ahy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x7a]
+#CHECK: ahy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x7a]
+#CHECK: ahy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x7a]
+#CHECK: ahy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x7a]
+#CHECK: ahy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x7a]
+#CHECK: ahy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x7a]
+#CHECK: ahy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x7a]
+#CHECK: ahy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x7a]
+#CHECK: ahy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x7a]
+#CHECK: ahy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x7a]
+
+ ahy %r0, -524288
+ ahy %r0, -1
+ ahy %r0, 0
+ ahy %r0, 1
+ ahy %r0, 524287
+ ahy %r0, 0(%r1)
+ ahy %r0, 0(%r15)
+ ahy %r0, 524287(%r1,%r15)
+ ahy %r0, 524287(%r15,%r1)
+ ahy %r15, 0
+
+#CHECK: al %r0, 0 # encoding: [0x5e,0x00,0x00,0x00]
+#CHECK: al %r0, 4095 # encoding: [0x5e,0x00,0x0f,0xff]
+#CHECK: al %r0, 0(%r1) # encoding: [0x5e,0x00,0x10,0x00]
+#CHECK: al %r0, 0(%r15) # encoding: [0x5e,0x00,0xf0,0x00]
+#CHECK: al %r0, 4095(%r1,%r15) # encoding: [0x5e,0x01,0xff,0xff]
+#CHECK: al %r0, 4095(%r15,%r1) # encoding: [0x5e,0x0f,0x1f,0xff]
+#CHECK: al %r15, 0 # encoding: [0x5e,0xf0,0x00,0x00]
+
+ al %r0, 0
+ al %r0, 4095
+ al %r0, 0(%r1)
+ al %r0, 0(%r15)
+ al %r0, 4095(%r1,%r15)
+ al %r0, 4095(%r15,%r1)
+ al %r15, 0
+
+#CHECK: alc %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x98]
+#CHECK: alc %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x98]
+#CHECK: alc %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x98]
+#CHECK: alc %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x98]
+#CHECK: alc %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x98]
+#CHECK: alc %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x98]
+#CHECK: alc %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x98]
+#CHECK: alc %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x98]
+#CHECK: alc %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x98]
+#CHECK: alc %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x98]
+
+ alc %r0, -524288
+ alc %r0, -1
+ alc %r0, 0
+ alc %r0, 1
+ alc %r0, 524287
+ alc %r0, 0(%r1)
+ alc %r0, 0(%r15)
+ alc %r0, 524287(%r1,%r15)
+ alc %r0, 524287(%r15,%r1)
+ alc %r15, 0
+
+#CHECK: alcg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x88]
+#CHECK: alcg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x88]
+#CHECK: alcg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x88]
+#CHECK: alcg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x88]
+#CHECK: alcg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x88]
+#CHECK: alcg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x88]
+#CHECK: alcg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x88]
+#CHECK: alcg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x88]
+#CHECK: alcg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x88]
+#CHECK: alcg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x88]
+
+ alcg %r0, -524288
+ alcg %r0, -1
+ alcg %r0, 0
+ alcg %r0, 1
+ alcg %r0, 524287
+ alcg %r0, 0(%r1)
+ alcg %r0, 0(%r15)
+ alcg %r0, 524287(%r1,%r15)
+ alcg %r0, 524287(%r15,%r1)
+ alcg %r15, 0
+
+#CHECK: alcgr %r0, %r0 # encoding: [0xb9,0x88,0x00,0x00]
+#CHECK: alcgr %r0, %r15 # encoding: [0xb9,0x88,0x00,0x0f]
+#CHECK: alcgr %r15, %r0 # encoding: [0xb9,0x88,0x00,0xf0]
+#CHECK: alcgr %r7, %r8 # encoding: [0xb9,0x88,0x00,0x78]
+
+ alcgr %r0,%r0
+ alcgr %r0,%r15
+ alcgr %r15,%r0
+ alcgr %r7,%r8
+
+#CHECK: alcr %r0, %r0 # encoding: [0xb9,0x98,0x00,0x00]
+#CHECK: alcr %r0, %r15 # encoding: [0xb9,0x98,0x00,0x0f]
+#CHECK: alcr %r15, %r0 # encoding: [0xb9,0x98,0x00,0xf0]
+#CHECK: alcr %r7, %r8 # encoding: [0xb9,0x98,0x00,0x78]
+
+ alcr %r0,%r0
+ alcr %r0,%r15
+ alcr %r15,%r0
+ alcr %r7,%r8
+
+#CHECK: alfi %r0, 0 # encoding: [0xc2,0x0b,0x00,0x00,0x00,0x00]
+#CHECK: alfi %r0, 4294967295 # encoding: [0xc2,0x0b,0xff,0xff,0xff,0xff]
+#CHECK: alfi %r15, 0 # encoding: [0xc2,0xfb,0x00,0x00,0x00,0x00]
+
+ alfi %r0, 0
+ alfi %r0, (1 << 32) - 1
+ alfi %r15, 0
+
+#CHECK: alg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0a]
+#CHECK: alg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0a]
+#CHECK: alg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0a]
+#CHECK: alg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0a]
+#CHECK: alg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0a]
+#CHECK: alg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0a]
+#CHECK: alg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0a]
+#CHECK: alg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0a]
+#CHECK: alg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0a]
+#CHECK: alg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x0a]
+
+ alg %r0, -524288
+ alg %r0, -1
+ alg %r0, 0
+ alg %r0, 1
+ alg %r0, 524287
+ alg %r0, 0(%r1)
+ alg %r0, 0(%r15)
+ alg %r0, 524287(%r1,%r15)
+ alg %r0, 524287(%r15,%r1)
+ alg %r15, 0
+
+#CHECK: algf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1a]
+#CHECK: algf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1a]
+#CHECK: algf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1a]
+#CHECK: algf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1a]
+#CHECK: algf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1a]
+#CHECK: algf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1a]
+#CHECK: algf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1a]
+#CHECK: algf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1a]
+#CHECK: algf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1a]
+#CHECK: algf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1a]
+
+ algf %r0, -524288
+ algf %r0, -1
+ algf %r0, 0
+ algf %r0, 1
+ algf %r0, 524287
+ algf %r0, 0(%r1)
+ algf %r0, 0(%r15)
+ algf %r0, 524287(%r1,%r15)
+ algf %r0, 524287(%r15,%r1)
+ algf %r15, 0
+
+#CHECK: algfi %r0, 0 # encoding: [0xc2,0x0a,0x00,0x00,0x00,0x00]
+#CHECK: algfi %r0, 4294967295 # encoding: [0xc2,0x0a,0xff,0xff,0xff,0xff]
+#CHECK: algfi %r15, 0 # encoding: [0xc2,0xfa,0x00,0x00,0x00,0x00]
+
+ algfi %r0, 0
+ algfi %r0, (1 << 32) - 1
+ algfi %r15, 0
+
+#CHECK: algfr %r0, %r0 # encoding: [0xb9,0x1a,0x00,0x00]
+#CHECK: algfr %r0, %r15 # encoding: [0xb9,0x1a,0x00,0x0f]
+#CHECK: algfr %r15, %r0 # encoding: [0xb9,0x1a,0x00,0xf0]
+#CHECK: algfr %r7, %r8 # encoding: [0xb9,0x1a,0x00,0x78]
+
+ algfr %r0,%r0
+ algfr %r0,%r15
+ algfr %r15,%r0
+ algfr %r7,%r8
+
+#CHECK: algr %r0, %r0 # encoding: [0xb9,0x0a,0x00,0x00]
+#CHECK: algr %r0, %r15 # encoding: [0xb9,0x0a,0x00,0x0f]
+#CHECK: algr %r15, %r0 # encoding: [0xb9,0x0a,0x00,0xf0]
+#CHECK: algr %r7, %r8 # encoding: [0xb9,0x0a,0x00,0x78]
+
+ algr %r0,%r0
+ algr %r0,%r15
+ algr %r15,%r0
+ algr %r7,%r8
+
+#CHECK: alr %r0, %r0 # encoding: [0x1e,0x00]
+#CHECK: alr %r0, %r15 # encoding: [0x1e,0x0f]
+#CHECK: alr %r15, %r0 # encoding: [0x1e,0xf0]
+#CHECK: alr %r7, %r8 # encoding: [0x1e,0x78]
+
+ alr %r0,%r0
+ alr %r0,%r15
+ alr %r15,%r0
+ alr %r7,%r8
+
+#CHECK: aly %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x5e]
+#CHECK: aly %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x5e]
+#CHECK: aly %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x5e]
+#CHECK: aly %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x5e]
+#CHECK: aly %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x5e]
+#CHECK: aly %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x5e]
+#CHECK: aly %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x5e]
+#CHECK: aly %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x5e]
+#CHECK: aly %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x5e]
+#CHECK: aly %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x5e]
+
+ aly %r0, -524288
+ aly %r0, -1
+ aly %r0, 0
+ aly %r0, 1
+ aly %r0, 524287
+ aly %r0, 0(%r1)
+ aly %r0, 0(%r15)
+ aly %r0, 524287(%r1,%r15)
+ aly %r0, 524287(%r15,%r1)
+ aly %r15, 0
+
+#CHECK: ar %r0, %r0 # encoding: [0x1a,0x00]
+#CHECK: ar %r0, %r15 # encoding: [0x1a,0x0f]
+#CHECK: ar %r15, %r0 # encoding: [0x1a,0xf0]
+#CHECK: ar %r7, %r8 # encoding: [0x1a,0x78]
+
+ ar %r0,%r0
+ ar %r0,%r15
+ ar %r15,%r0
+ ar %r7,%r8
+
+#CHECK: asi -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x6a]
+#CHECK: asi -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x6a]
+#CHECK: asi 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x6a]
+#CHECK: asi 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x6a]
+#CHECK: asi 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x6a]
+#CHECK: asi 0, -128 # encoding: [0xeb,0x80,0x00,0x00,0x00,0x6a]
+#CHECK: asi 0, -1 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x6a]
+#CHECK: asi 0, 1 # encoding: [0xeb,0x01,0x00,0x00,0x00,0x6a]
+#CHECK: asi 0, 127 # encoding: [0xeb,0x7f,0x00,0x00,0x00,0x6a]
+#CHECK: asi 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x6a]
+#CHECK: asi 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x6a]
+#CHECK: asi 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x6a]
+#CHECK: asi 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x6a]
+
+ asi -524288, 0
+ asi -1, 0
+ asi 0, 0
+ asi 1, 0
+ asi 524287, 0
+ asi 0, -128
+ asi 0, -1
+ asi 0, 1
+ asi 0, 127
+ asi 0(%r1), 42
+ asi 0(%r15), 42
+ asi 524287(%r1), 42
+ asi 524287(%r15), 42
+
+#CHECK: axbr %f0, %f0 # encoding: [0xb3,0x4a,0x00,0x00]
+#CHECK: axbr %f0, %f13 # encoding: [0xb3,0x4a,0x00,0x0d]
+#CHECK: axbr %f8, %f8 # encoding: [0xb3,0x4a,0x00,0x88]
+#CHECK: axbr %f13, %f0 # encoding: [0xb3,0x4a,0x00,0xd0]
+
+ axbr %f0, %f0
+ axbr %f0, %f13
+ axbr %f8, %f8
+ axbr %f13, %f0
+
+#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]
+#CHECK: ay %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x5a]
+#CHECK: ay %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x5a]
+#CHECK: ay %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x5a]
+#CHECK: ay %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x5a]
+#CHECK: ay %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x5a]
+#CHECK: ay %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x5a]
+#CHECK: ay %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x5a]
+
+ ay %r0, -524288
+ ay %r0, -1
+ ay %r0, 0
+ ay %r0, 1
+ ay %r0, 524287
+ ay %r0, 0(%r1)
+ ay %r0, 0(%r15)
+ ay %r0, 524287(%r1,%r15)
+ ay %r0, 524287(%r15,%r1)
+ ay %r15, 0
+
+#CHECK: basr %r0, %r1 # encoding: [0x0d,0x01]
+#CHECK: basr %r0, %r15 # encoding: [0x0d,0x0f]
+#CHECK: basr %r14, %r9 # encoding: [0x0d,0xe9]
+#CHECK: basr %r15, %r1 # encoding: [0x0d,0xf1]
+
+ basr %r0,%r1
+ basr %r0,%r15
+ basr %r14,%r9
+ basr %r15,%r1
+
+
+#CHECK: br %r1 # encoding: [0x07,0xf1]
+#CHECK: br %r14 # encoding: [0x07,0xfe]
+#CHECK: br %r15 # encoding: [0x07,0xff]
+
+ br %r1
+ br %r14
+ br %r15
+
+#CHECK: bras %r0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
+ bras %r0, -0x10000
+#CHECK: bras %r0, .[[LAB:L.*]]-2 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
+ bras %r0, -2
+#CHECK: bras %r0, .[[LAB:L.*]] # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
+ bras %r0, 0
+#CHECK: bras %r0, .[[LAB:L.*]]+65534 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
+ bras %r0, 0xfffe
+
+#CHECK: bras %r0, foo # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: bras %r14, foo # encoding: [0xa7,0xe5,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: bras %r15, foo # encoding: [0xa7,0xf5,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ bras %r0,foo
+ bras %r14,foo
+ bras %r15,foo
+
+#CHECK: bras %r0, bar+100 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: bras %r14, bar+100 # encoding: [0xa7,0xe5,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: bras %r15, bar+100 # encoding: [0xa7,0xf5,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ bras %r0,bar+100
+ bras %r14,bar+100
+ bras %r15,bar+100
+
+#CHECK: bras %r0, bar@PLT # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+#CHECK: bras %r14, bar@PLT # encoding: [0xa7,0xe5,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+#CHECK: bras %r15, bar@PLT # encoding: [0xa7,0xf5,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ bras %r0,bar@PLT
+ bras %r14,bar@PLT
+ bras %r15,bar@PLT
+
+#CHECK: brasl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ brasl %r0, -0x100000000
+#CHECK: brasl %r0, .[[LAB:L.*]]-2 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ brasl %r0, -2
+#CHECK: brasl %r0, .[[LAB:L.*]] # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ brasl %r0, 0
+#CHECK: brasl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ brasl %r0, 0xfffffffe
+
+#CHECK: brasl %r0, foo # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r14, foo # encoding: [0xc0,0xe5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r15, foo # encoding: [0xc0,0xf5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brasl %r0,foo
+ brasl %r14,foo
+ brasl %r15,foo
+
+#CHECK: brasl %r0, bar+100 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r14, bar+100 # encoding: [0xc0,0xe5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r15, bar+100 # encoding: [0xc0,0xf5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ brasl %r0,bar+100
+ brasl %r14,bar+100
+ brasl %r15,bar+100
+
+#CHECK: brasl %r0, bar@PLT # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r14, bar@PLT # encoding: [0xc0,0xe5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r15, bar@PLT # encoding: [0xc0,0xf5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ brasl %r0,bar@PLT
+ brasl %r14,bar@PLT
+ brasl %r15,bar@PLT
+
+#CHECK: brc 0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
+ brc 0, -0x10000
+#CHECK: brc 0, .[[LAB:L.*]]-2 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
+ brc 0, -2
+#CHECK: brc 0, .[[LAB:L.*]] # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
+ brc 0, 0
+#CHECK: brc 0, .[[LAB:L.*]]+65534 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
+ brc 0, 0xfffe
+
+#CHECK: brc 0, foo # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 0, foo
+
+#CHECK: brc 1, foo # encoding: [0xa7,0x14,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jo foo # encoding: [0xa7,0x14,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 1, foo
+ jo foo
+
+#CHECK: brc 2, foo # encoding: [0xa7,0x24,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jh foo # encoding: [0xa7,0x24,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 2, foo
+ jh foo
+
+#CHECK: brc 3, foo # encoding: [0xa7,0x34,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnle foo # encoding: [0xa7,0x34,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 3, foo
+ jnle foo
+
+#CHECK: brc 4, foo # encoding: [0xa7,0x44,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jl foo # encoding: [0xa7,0x44,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 4, foo
+ jl foo
+
+#CHECK: brc 5, foo # encoding: [0xa7,0x54,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnhe foo # encoding: [0xa7,0x54,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 5, foo
+ jnhe foo
+
+#CHECK: brc 6, foo # encoding: [0xa7,0x64,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jlh foo # encoding: [0xa7,0x64,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 6, foo
+ jlh foo
+
+#CHECK: brc 7, foo # encoding: [0xa7,0x74,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jne foo # encoding: [0xa7,0x74,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 7, foo
+ jne foo
+
+#CHECK: brc 8, foo # encoding: [0xa7,0x84,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: je foo # encoding: [0xa7,0x84,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 8, foo
+ je foo
+
+#CHECK: brc 9, foo # encoding: [0xa7,0x94,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnlh foo # encoding: [0xa7,0x94,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 9, foo
+ jnlh foo
+
+#CHECK: brc 10, foo # encoding: [0xa7,0xa4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jhe foo # encoding: [0xa7,0xa4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 10, foo
+ jhe foo
+
+#CHECK: brc 11, foo # encoding: [0xa7,0xb4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnl foo # encoding: [0xa7,0xb4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 11, foo
+ jnl foo
+
+#CHECK: brc 12, foo # encoding: [0xa7,0xc4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jle foo # encoding: [0xa7,0xc4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 12, foo
+ jle foo
+
+#CHECK: brc 13, foo # encoding: [0xa7,0xd4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnh foo # encoding: [0xa7,0xd4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 13, foo
+ jnh foo
+
+#CHECK: brc 14, foo # encoding: [0xa7,0xe4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jno foo # encoding: [0xa7,0xe4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 14, foo
+ jno foo
+
+#CHECK: brc 15, foo # encoding: [0xa7,0xf4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: j foo # encoding: [0xa7,0xf4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+ brc 15, foo
+ j foo
+
+#CHECK: brc 0, bar+100 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ brc 0, bar+100
+
+#CHECK: jo bar+100 # encoding: [0xa7,0x14,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jo bar+100
+
+#CHECK: jh bar+100 # encoding: [0xa7,0x24,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jh bar+100
+
+#CHECK: jnle bar+100 # encoding: [0xa7,0x34,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jnle bar+100
+
+#CHECK: jl bar+100 # encoding: [0xa7,0x44,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jl bar+100
+
+#CHECK: jnhe bar+100 # encoding: [0xa7,0x54,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jnhe bar+100
+
+#CHECK: jlh bar+100 # encoding: [0xa7,0x64,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jlh bar+100
+
+#CHECK: jne bar+100 # encoding: [0xa7,0x74,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jne bar+100
+
+#CHECK: je bar+100 # encoding: [0xa7,0x84,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ je bar+100
+
+#CHECK: jnlh bar+100 # encoding: [0xa7,0x94,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jnlh bar+100
+
+#CHECK: jhe bar+100 # encoding: [0xa7,0xa4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jhe bar+100
+
+#CHECK: jnl bar+100 # encoding: [0xa7,0xb4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jnl bar+100
+
+#CHECK: jle bar+100 # encoding: [0xa7,0xc4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jle bar+100
+
+#CHECK: jnh bar+100 # encoding: [0xa7,0xd4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jnh bar+100
+
+#CHECK: jno bar+100 # encoding: [0xa7,0xe4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ jno bar+100
+
+#CHECK: j bar+100 # encoding: [0xa7,0xf4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+ j bar+100
+
+#CHECK: brc 0, bar@PLT # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ brc 0, bar@PLT
+
+#CHECK: jo bar@PLT # encoding: [0xa7,0x14,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jo bar@PLT
+
+#CHECK: jh bar@PLT # encoding: [0xa7,0x24,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jh bar@PLT
+
+#CHECK: jnle bar@PLT # encoding: [0xa7,0x34,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jnle bar@PLT
+
+#CHECK: jl bar@PLT # encoding: [0xa7,0x44,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jl bar@PLT
+
+#CHECK: jnhe bar@PLT # encoding: [0xa7,0x54,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jnhe bar@PLT
+
+#CHECK: jlh bar@PLT # encoding: [0xa7,0x64,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jlh bar@PLT
+
+#CHECK: jne bar@PLT # encoding: [0xa7,0x74,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jne bar@PLT
+
+#CHECK: je bar@PLT # encoding: [0xa7,0x84,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ je bar@PLT
+
+#CHECK: jnlh bar@PLT # encoding: [0xa7,0x94,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jnlh bar@PLT
+
+#CHECK: jhe bar@PLT # encoding: [0xa7,0xa4,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jhe bar@PLT
+
+#CHECK: jnl bar@PLT # encoding: [0xa7,0xb4,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jnl bar@PLT
+
+#CHECK: jle bar@PLT # encoding: [0xa7,0xc4,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jle bar@PLT
+
+#CHECK: jnh bar@PLT # encoding: [0xa7,0xd4,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jnh bar@PLT
+
+#CHECK: jno bar@PLT # encoding: [0xa7,0xe4,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ jno bar@PLT
+
+#CHECK: j bar@PLT # encoding: [0xa7,0xf4,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC16DBL
+ j bar@PLT
+
+#CHECK: brcl 0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ brcl 0, -0x100000000
+#CHECK: brcl 0, .[[LAB:L.*]]-2 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ brcl 0, -2
+#CHECK: brcl 0, .[[LAB:L.*]] # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ brcl 0, 0
+#CHECK: brcl 0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ brcl 0, 0xfffffffe
+
+#CHECK: brcl 0, foo # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 0, foo
+
+#CHECK: brcl 1, foo # encoding: [0xc0,0x14,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgo foo # encoding: [0xc0,0x14,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 1, foo
+ jgo foo
+
+#CHECK: brcl 2, foo # encoding: [0xc0,0x24,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgh foo # encoding: [0xc0,0x24,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 2, foo
+ jgh foo
+
+#CHECK: brcl 3, foo # encoding: [0xc0,0x34,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnle foo # encoding: [0xc0,0x34,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 3, foo
+ jgnle foo
+
+#CHECK: brcl 4, foo # encoding: [0xc0,0x44,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgl foo # encoding: [0xc0,0x44,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 4, foo
+ jgl foo
+
+#CHECK: brcl 5, foo # encoding: [0xc0,0x54,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnhe foo # encoding: [0xc0,0x54,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 5, foo
+ jgnhe foo
+
+#CHECK: brcl 6, foo # encoding: [0xc0,0x64,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jglh foo # encoding: [0xc0,0x64,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 6, foo
+ jglh foo
+
+#CHECK: brcl 7, foo # encoding: [0xc0,0x74,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgne foo # encoding: [0xc0,0x74,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 7, foo
+ jgne foo
+
+#CHECK: brcl 8, foo # encoding: [0xc0,0x84,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jge foo # encoding: [0xc0,0x84,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 8, foo
+ jge foo
+
+#CHECK: brcl 9, foo # encoding: [0xc0,0x94,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnlh foo # encoding: [0xc0,0x94,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 9, foo
+ jgnlh foo
+
+#CHECK: brcl 10, foo # encoding: [0xc0,0xa4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jghe foo # encoding: [0xc0,0xa4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 10, foo
+ jghe foo
+
+#CHECK: brcl 11, foo # encoding: [0xc0,0xb4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnl foo # encoding: [0xc0,0xb4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 11, foo
+ jgnl foo
+
+#CHECK: brcl 12, foo # encoding: [0xc0,0xc4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgle foo # encoding: [0xc0,0xc4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 12, foo
+ jgle foo
+
+#CHECK: brcl 13, foo # encoding: [0xc0,0xd4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnh foo # encoding: [0xc0,0xd4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 13, foo
+ jgnh foo
+
+#CHECK: brcl 14, foo # encoding: [0xc0,0xe4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgno foo # encoding: [0xc0,0xe4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 14, foo
+ jgno foo
+
+#CHECK: brcl 15, foo # encoding: [0xc0,0xf4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jg foo # encoding: [0xc0,0xf4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+ brcl 15, foo
+ jg foo
+
+#CHECK: brcl 0, bar+100 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ brcl 0, bar+100
+
+#CHECK: jgo bar+100 # encoding: [0xc0,0x14,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgo bar+100
+
+#CHECK: jgh bar+100 # encoding: [0xc0,0x24,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgh bar+100
+
+#CHECK: jgnle bar+100 # encoding: [0xc0,0x34,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgnle bar+100
+
+#CHECK: jgl bar+100 # encoding: [0xc0,0x44,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgl bar+100
+
+#CHECK: jgnhe bar+100 # encoding: [0xc0,0x54,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgnhe bar+100
+
+#CHECK: jglh bar+100 # encoding: [0xc0,0x64,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jglh bar+100
+
+#CHECK: jgne bar+100 # encoding: [0xc0,0x74,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgne bar+100
+
+#CHECK: jge bar+100 # encoding: [0xc0,0x84,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jge bar+100
+
+#CHECK: jgnlh bar+100 # encoding: [0xc0,0x94,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgnlh bar+100
+
+#CHECK: jghe bar+100 # encoding: [0xc0,0xa4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jghe bar+100
+
+#CHECK: jgnl bar+100 # encoding: [0xc0,0xb4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgnl bar+100
+
+#CHECK: jgle bar+100 # encoding: [0xc0,0xc4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgle bar+100
+
+#CHECK: jgnh bar+100 # encoding: [0xc0,0xd4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgnh bar+100
+
+#CHECK: jgno bar+100 # encoding: [0xc0,0xe4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jgno bar+100
+
+#CHECK: jg bar+100 # encoding: [0xc0,0xf4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+ jg bar+100
+
+#CHECK: brcl 0, bar@PLT # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ brcl 0, bar@PLT
+
+#CHECK: jgo bar@PLT # encoding: [0xc0,0x14,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgo bar@PLT
+
+#CHECK: jgh bar@PLT # encoding: [0xc0,0x24,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgh bar@PLT
+
+#CHECK: jgnle bar@PLT # encoding: [0xc0,0x34,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgnle bar@PLT
+
+#CHECK: jgl bar@PLT # encoding: [0xc0,0x44,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgl bar@PLT
+
+#CHECK: jgnhe bar@PLT # encoding: [0xc0,0x54,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgnhe bar@PLT
+
+#CHECK: jglh bar@PLT # encoding: [0xc0,0x64,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jglh bar@PLT
+
+#CHECK: jgne bar@PLT # encoding: [0xc0,0x74,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgne bar@PLT
+
+#CHECK: jge bar@PLT # encoding: [0xc0,0x84,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jge bar@PLT
+
+#CHECK: jgnlh bar@PLT # encoding: [0xc0,0x94,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgnlh bar@PLT
+
+#CHECK: jghe bar@PLT # encoding: [0xc0,0xa4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jghe bar@PLT
+
+#CHECK: jgnl bar@PLT # encoding: [0xc0,0xb4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgnl bar@PLT
+
+#CHECK: jgle bar@PLT # encoding: [0xc0,0xc4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgle bar@PLT
+
+#CHECK: jgnh bar@PLT # encoding: [0xc0,0xd4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgnh bar@PLT
+
+#CHECK: jgno bar@PLT # encoding: [0xc0,0xe4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jgno bar@PLT
+
+#CHECK: jg bar@PLT # encoding: [0xc0,0xf4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar@PLT+2, kind: FK_390_PC32DBL
+ jg bar@PLT
+
+#CHECK: c %r0, 0 # encoding: [0x59,0x00,0x00,0x00]
+#CHECK: c %r0, 4095 # encoding: [0x59,0x00,0x0f,0xff]
+#CHECK: c %r0, 0(%r1) # encoding: [0x59,0x00,0x10,0x00]
+#CHECK: c %r0, 0(%r15) # encoding: [0x59,0x00,0xf0,0x00]
+#CHECK: c %r0, 4095(%r1,%r15) # encoding: [0x59,0x01,0xff,0xff]
+#CHECK: c %r0, 4095(%r15,%r1) # encoding: [0x59,0x0f,0x1f,0xff]
+#CHECK: c %r15, 0 # encoding: [0x59,0xf0,0x00,0x00]
+
+ c %r0, 0
+ c %r0, 4095
+ c %r0, 0(%r1)
+ c %r0, 0(%r15)
+ c %r0, 4095(%r1,%r15)
+ c %r0, 4095(%r15,%r1)
+ c %r15, 0
+
+#CHECK: cdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x19]
+#CHECK: cdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x19]
+#CHECK: cdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x19]
+#CHECK: cdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x19]
+#CHECK: cdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x19]
+#CHECK: cdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x19]
+#CHECK: cdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x19]
+
+ cdb %f0, 0
+ cdb %f0, 4095
+ cdb %f0, 0(%r1)
+ cdb %f0, 0(%r15)
+ cdb %f0, 4095(%r1,%r15)
+ cdb %f0, 4095(%r15,%r1)
+ cdb %f15, 0
+
+#CHECK: cdbr %f0, %f0 # encoding: [0xb3,0x19,0x00,0x00]
+#CHECK: cdbr %f0, %f15 # encoding: [0xb3,0x19,0x00,0x0f]
+#CHECK: cdbr %f7, %f8 # encoding: [0xb3,0x19,0x00,0x78]
+#CHECK: cdbr %f15, %f0 # encoding: [0xb3,0x19,0x00,0xf0]
+
+ cdbr %f0, %f0
+ cdbr %f0, %f15
+ cdbr %f7, %f8
+ cdbr %f15, %f0
+
+#CHECK: cdfbr %f0, %r0 # encoding: [0xb3,0x95,0x00,0x00]
+#CHECK: cdfbr %f0, %r15 # encoding: [0xb3,0x95,0x00,0x0f]
+#CHECK: cdfbr %f15, %r0 # encoding: [0xb3,0x95,0x00,0xf0]
+#CHECK: cdfbr %f7, %r8 # encoding: [0xb3,0x95,0x00,0x78]
+#CHECK: cdfbr %f15, %r15 # encoding: [0xb3,0x95,0x00,0xff]
+
+ cdfbr %f0, %r0
+ cdfbr %f0, %r15
+ cdfbr %f15, %r0
+ cdfbr %f7, %r8
+ cdfbr %f15, %r15
+
+#CHECK: cdgbr %f0, %r0 # encoding: [0xb3,0xa5,0x00,0x00]
+#CHECK: cdgbr %f0, %r15 # encoding: [0xb3,0xa5,0x00,0x0f]
+#CHECK: cdgbr %f15, %r0 # encoding: [0xb3,0xa5,0x00,0xf0]
+#CHECK: cdgbr %f7, %r8 # encoding: [0xb3,0xa5,0x00,0x78]
+#CHECK: cdgbr %f15, %r15 # encoding: [0xb3,0xa5,0x00,0xff]
+
+ cdgbr %f0, %r0
+ cdgbr %f0, %r15
+ cdgbr %f15, %r0
+ cdgbr %f7, %r8
+ cdgbr %f15, %r15
+
+#CHECK: ceb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x09]
+#CHECK: ceb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x09]
+#CHECK: ceb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x09]
+#CHECK: ceb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x09]
+#CHECK: ceb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x09]
+#CHECK: ceb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x09]
+#CHECK: ceb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x09]
+
+ ceb %f0, 0
+ ceb %f0, 4095
+ ceb %f0, 0(%r1)
+ ceb %f0, 0(%r15)
+ ceb %f0, 4095(%r1,%r15)
+ ceb %f0, 4095(%r15,%r1)
+ ceb %f15, 0
+
+#CHECK: cebr %f0, %f0 # encoding: [0xb3,0x09,0x00,0x00]
+#CHECK: cebr %f0, %f15 # encoding: [0xb3,0x09,0x00,0x0f]
+#CHECK: cebr %f7, %f8 # encoding: [0xb3,0x09,0x00,0x78]
+#CHECK: cebr %f15, %f0 # encoding: [0xb3,0x09,0x00,0xf0]
+
+ cebr %f0, %f0
+ cebr %f0, %f15
+ cebr %f7, %f8
+ cebr %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]
+#CHECK: cefbr %f7, %r8 # encoding: [0xb3,0x94,0x00,0x78]
+#CHECK: cefbr %f15, %r15 # encoding: [0xb3,0x94,0x00,0xff]
+
+ cefbr %f0, %r0
+ cefbr %f0, %r15
+ cefbr %f15, %r0
+ cefbr %f7, %r8
+ cefbr %f15, %r15
+
+#CHECK: cegbr %f0, %r0 # encoding: [0xb3,0xa4,0x00,0x00]
+#CHECK: cegbr %f0, %r15 # encoding: [0xb3,0xa4,0x00,0x0f]
+#CHECK: cegbr %f15, %r0 # encoding: [0xb3,0xa4,0x00,0xf0]
+#CHECK: cegbr %f7, %r8 # encoding: [0xb3,0xa4,0x00,0x78]
+#CHECK: cegbr %f15, %r15 # encoding: [0xb3,0xa4,0x00,0xff]
+
+ cegbr %f0, %r0
+ cegbr %f0, %r15
+ cegbr %f15, %r0
+ cegbr %f7, %r8
+ cegbr %f15, %r15
+
+#CHECK: cfdbr %r0, 0, %f0 # encoding: [0xb3,0x99,0x00,0x00]
+#CHECK: cfdbr %r0, 0, %f15 # encoding: [0xb3,0x99,0x00,0x0f]
+#CHECK: cfdbr %r0, 15, %f0 # encoding: [0xb3,0x99,0xf0,0x00]
+#CHECK: cfdbr %r4, 5, %f6 # encoding: [0xb3,0x99,0x50,0x46]
+#CHECK: cfdbr %r15, 0, %f0 # encoding: [0xb3,0x99,0x00,0xf0]
+
+ cfdbr %r0, 0, %f0
+ cfdbr %r0, 0, %f15
+ cfdbr %r0, 15, %f0
+ cfdbr %r4, 5, %f6
+ cfdbr %r15, 0, %f0
+
+#CHECK: cfebr %r0, 0, %f0 # encoding: [0xb3,0x98,0x00,0x00]
+#CHECK: cfebr %r0, 0, %f15 # encoding: [0xb3,0x98,0x00,0x0f]
+#CHECK: cfebr %r0, 15, %f0 # encoding: [0xb3,0x98,0xf0,0x00]
+#CHECK: cfebr %r4, 5, %f6 # encoding: [0xb3,0x98,0x50,0x46]
+#CHECK: cfebr %r15, 0, %f0 # encoding: [0xb3,0x98,0x00,0xf0]
+
+ cfebr %r0, 0, %f0
+ cfebr %r0, 0, %f15
+ cfebr %r0, 15, %f0
+ cfebr %r4, 5, %f6
+ cfebr %r15, 0, %f0
+
+#CHECK: cfi %r0, -2147483648 # encoding: [0xc2,0x0d,0x80,0x00,0x00,0x00]
+#CHECK: cfi %r0, -1 # encoding: [0xc2,0x0d,0xff,0xff,0xff,0xff]
+#CHECK: cfi %r0, 0 # encoding: [0xc2,0x0d,0x00,0x00,0x00,0x00]
+#CHECK: cfi %r0, 1 # encoding: [0xc2,0x0d,0x00,0x00,0x00,0x01]
+#CHECK: cfi %r0, 2147483647 # encoding: [0xc2,0x0d,0x7f,0xff,0xff,0xff]
+#CHECK: cfi %r15, 0 # encoding: [0xc2,0xfd,0x00,0x00,0x00,0x00]
+
+ cfi %r0, -1 << 31
+ cfi %r0, -1
+ cfi %r0, 0
+ cfi %r0, 1
+ cfi %r0, (1 << 31) - 1
+ cfi %r15, 0
+
+#CHECK: cfxbr %r0, 0, %f0 # encoding: [0xb3,0x9a,0x00,0x00]
+#CHECK: cfxbr %r0, 0, %f13 # encoding: [0xb3,0x9a,0x00,0x0d]
+#CHECK: cfxbr %r0, 15, %f0 # encoding: [0xb3,0x9a,0xf0,0x00]
+#CHECK: cfxbr %r4, 5, %f8 # encoding: [0xb3,0x9a,0x50,0x48]
+#CHECK: cfxbr %r15, 0, %f0 # encoding: [0xb3,0x9a,0x00,0xf0]
+
+ cfxbr %r0, 0, %f0
+ cfxbr %r0, 0, %f13
+ cfxbr %r0, 15, %f0
+ cfxbr %r4, 5, %f8
+ cfxbr %r15, 0, %f0
+
+#CHECK: cg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x20]
+#CHECK: cg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x20]
+#CHECK: cg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x20]
+#CHECK: cg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x20]
+#CHECK: cg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x20]
+#CHECK: cg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x20]
+#CHECK: cg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x20]
+#CHECK: cg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x20]
+#CHECK: cg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x20]
+#CHECK: cg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x20]
+
+ cg %r0, -524288
+ cg %r0, -1
+ cg %r0, 0
+ cg %r0, 1
+ cg %r0, 524287
+ cg %r0, 0(%r1)
+ cg %r0, 0(%r15)
+ cg %r0, 524287(%r1,%r15)
+ cg %r0, 524287(%r15,%r1)
+ cg %r15, 0
+
+#CHECK: cgdbr %r0, 0, %f0 # encoding: [0xb3,0xa9,0x00,0x00]
+#CHECK: cgdbr %r0, 0, %f15 # encoding: [0xb3,0xa9,0x00,0x0f]
+#CHECK: cgdbr %r0, 15, %f0 # encoding: [0xb3,0xa9,0xf0,0x00]
+#CHECK: cgdbr %r4, 5, %f6 # encoding: [0xb3,0xa9,0x50,0x46]
+#CHECK: cgdbr %r15, 0, %f0 # encoding: [0xb3,0xa9,0x00,0xf0]
+
+ cgdbr %r0, 0, %f0
+ cgdbr %r0, 0, %f15
+ cgdbr %r0, 15, %f0
+ cgdbr %r4, 5, %f6
+ cgdbr %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]
+#CHECK: cgebr %r4, 5, %f6 # encoding: [0xb3,0xa8,0x50,0x46]
+#CHECK: cgebr %r15, 0, %f0 # encoding: [0xb3,0xa8,0x00,0xf0]
+
+ cgebr %r0, 0, %f0
+ cgebr %r0, 0, %f15
+ cgebr %r0, 15, %f0
+ cgebr %r4, 5, %f6
+ cgebr %r15, 0, %f0
+
+#CHECK: cgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x30]
+#CHECK: cgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x30]
+#CHECK: cgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x30]
+#CHECK: cgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x30]
+#CHECK: cgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x30]
+#CHECK: cgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x30]
+#CHECK: cgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x30]
+#CHECK: cgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x30]
+#CHECK: cgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x30]
+#CHECK: cgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x30]
+
+ cgf %r0, -524288
+ cgf %r0, -1
+ cgf %r0, 0
+ cgf %r0, 1
+ cgf %r0, 524287
+ cgf %r0, 0(%r1)
+ cgf %r0, 0(%r15)
+ cgf %r0, 524287(%r1,%r15)
+ cgf %r0, 524287(%r15,%r1)
+ cgf %r15, 0
+
+#CHECK: cgfi %r0, -2147483648 # encoding: [0xc2,0x0c,0x80,0x00,0x00,0x00]
+#CHECK: cgfi %r0, -1 # encoding: [0xc2,0x0c,0xff,0xff,0xff,0xff]
+#CHECK: cgfi %r0, 0 # encoding: [0xc2,0x0c,0x00,0x00,0x00,0x00]
+#CHECK: cgfi %r0, 1 # encoding: [0xc2,0x0c,0x00,0x00,0x00,0x01]
+#CHECK: cgfi %r0, 2147483647 # encoding: [0xc2,0x0c,0x7f,0xff,0xff,0xff]
+#CHECK: cgfi %r15, 0 # encoding: [0xc2,0xfc,0x00,0x00,0x00,0x00]
+
+ cgfi %r0, -1 << 31
+ cgfi %r0, -1
+ cgfi %r0, 0
+ cgfi %r0, 1
+ cgfi %r0, (1 << 31) - 1
+ cgfi %r15, 0
+
+#CHECK: cgfr %r0, %r0 # encoding: [0xb9,0x30,0x00,0x00]
+#CHECK: cgfr %r0, %r15 # encoding: [0xb9,0x30,0x00,0x0f]
+#CHECK: cgfr %r15, %r0 # encoding: [0xb9,0x30,0x00,0xf0]
+#CHECK: cgfr %r7, %r8 # encoding: [0xb9,0x30,0x00,0x78]
+
+ cgfr %r0,%r0
+ cgfr %r0,%r15
+ cgfr %r15,%r0
+ cgfr %r7,%r8
+
+#CHECK: cgfrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ cgfrl %r0, -0x100000000
+#CHECK: cgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ cgfrl %r0, -2
+#CHECK: cgfrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ cgfrl %r0, 0
+#CHECK: cgfrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ cgfrl %r0, 0xfffffffe
+
+#CHECK: cgfrl %r0, foo # encoding: [0xc6,0x0c,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: cgfrl %r15, foo # encoding: [0xc6,0xfc,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ cgfrl %r0,foo
+ cgfrl %r15,foo
+
+#CHECK: cgfrl %r3, bar+100 # encoding: [0xc6,0x3c,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: cgfrl %r4, bar+100 # encoding: [0xc6,0x4c,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ cgfrl %r3,bar+100
+ cgfrl %r4,bar+100
+
+#CHECK: cgfrl %r7, frob@PLT # encoding: [0xc6,0x7c,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: cgfrl %r8, frob@PLT # encoding: [0xc6,0x8c,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ cgfrl %r7,frob@PLT
+ cgfrl %r8,frob@PLT
+
+#CHECK: cgh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x34]
+#CHECK: cgh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x34]
+#CHECK: cgh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x34]
+#CHECK: cgh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x34]
+#CHECK: cgh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x34]
+#CHECK: cgh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x34]
+#CHECK: cgh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x34]
+#CHECK: cgh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x34]
+#CHECK: cgh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x34]
+#CHECK: cgh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x34]
+
+ cgh %r0, -524288
+ cgh %r0, -1
+ cgh %r0, 0
+ cgh %r0, 1
+ cgh %r0, 524287
+ cgh %r0, 0(%r1)
+ cgh %r0, 0(%r15)
+ cgh %r0, 524287(%r1,%r15)
+ cgh %r0, 524287(%r15,%r1)
+ cgh %r15, 0
+
+#CHECK: cghi %r0, -32768 # encoding: [0xa7,0x0f,0x80,0x00]
+#CHECK: cghi %r0, -1 # encoding: [0xa7,0x0f,0xff,0xff]
+#CHECK: cghi %r0, 0 # encoding: [0xa7,0x0f,0x00,0x00]
+#CHECK: cghi %r0, 1 # encoding: [0xa7,0x0f,0x00,0x01]
+#CHECK: cghi %r0, 32767 # encoding: [0xa7,0x0f,0x7f,0xff]
+#CHECK: cghi %r15, 0 # encoding: [0xa7,0xff,0x00,0x00]
+
+ cghi %r0, -32768
+ cghi %r0, -1
+ cghi %r0, 0
+ cghi %r0, 1
+ cghi %r0, 32767
+ cghi %r15, 0
+
+#CHECK: cghrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ cghrl %r0, -0x100000000
+#CHECK: cghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ cghrl %r0, -2
+#CHECK: cghrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ cghrl %r0, 0
+#CHECK: cghrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ cghrl %r0, 0xfffffffe
+
+#CHECK: cghrl %r0, foo # encoding: [0xc6,0x04,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: cghrl %r15, foo # encoding: [0xc6,0xf4,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ cghrl %r0,foo
+ cghrl %r15,foo
+
+#CHECK: cghrl %r3, bar+100 # encoding: [0xc6,0x34,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: cghrl %r4, bar+100 # encoding: [0xc6,0x44,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ cghrl %r3,bar+100
+ cghrl %r4,bar+100
+
+#CHECK: cghrl %r7, frob@PLT # encoding: [0xc6,0x74,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: cghrl %r8, frob@PLT # encoding: [0xc6,0x84,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ cghrl %r7,frob@PLT
+ cghrl %r8,frob@PLT
+
+#CHECK: cghsi 0, 0 # encoding: [0xe5,0x58,0x00,0x00,0x00,0x00]
+#CHECK: cghsi 4095, 0 # encoding: [0xe5,0x58,0x0f,0xff,0x00,0x00]
+#CHECK: cghsi 0, -32768 # encoding: [0xe5,0x58,0x00,0x00,0x80,0x00]
+#CHECK: cghsi 0, -1 # encoding: [0xe5,0x58,0x00,0x00,0xff,0xff]
+#CHECK: cghsi 0, 0 # encoding: [0xe5,0x58,0x00,0x00,0x00,0x00]
+#CHECK: cghsi 0, 1 # encoding: [0xe5,0x58,0x00,0x00,0x00,0x01]
+#CHECK: cghsi 0, 32767 # encoding: [0xe5,0x58,0x00,0x00,0x7f,0xff]
+#CHECK: cghsi 0(%r1), 42 # encoding: [0xe5,0x58,0x10,0x00,0x00,0x2a]
+#CHECK: cghsi 0(%r15), 42 # encoding: [0xe5,0x58,0xf0,0x00,0x00,0x2a]
+#CHECK: cghsi 4095(%r1), 42 # encoding: [0xe5,0x58,0x1f,0xff,0x00,0x2a]
+#CHECK: cghsi 4095(%r15), 42 # encoding: [0xe5,0x58,0xff,0xff,0x00,0x2a]
+
+ cghsi 0, 0
+ cghsi 4095, 0
+ cghsi 0, -32768
+ cghsi 0, -1
+ cghsi 0, 0
+ cghsi 0, 1
+ cghsi 0, 32767
+ cghsi 0(%r1), 42
+ cghsi 0(%r15), 42
+ cghsi 4095(%r1), 42
+ cghsi 4095(%r15), 42
+
+#CHECK: cgr %r0, %r0 # encoding: [0xb9,0x20,0x00,0x00]
+#CHECK: cgr %r0, %r15 # encoding: [0xb9,0x20,0x00,0x0f]
+#CHECK: cgr %r15, %r0 # encoding: [0xb9,0x20,0x00,0xf0]
+#CHECK: cgr %r7, %r8 # encoding: [0xb9,0x20,0x00,0x78]
+
+ cgr %r0,%r0
+ cgr %r0,%r15
+ cgr %r15,%r0
+ cgr %r7,%r8
+
+#CHECK: cgrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ cgrl %r0, -0x100000000
+#CHECK: cgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ cgrl %r0, -2
+#CHECK: cgrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ cgrl %r0, 0
+#CHECK: cgrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ cgrl %r0, 0xfffffffe
+
+#CHECK: cgrl %r0, foo # encoding: [0xc6,0x08,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: cgrl %r15, foo # encoding: [0xc6,0xf8,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ cgrl %r0,foo
+ cgrl %r15,foo
+
+#CHECK: cgrl %r3, bar+100 # encoding: [0xc6,0x38,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: cgrl %r4, bar+100 # encoding: [0xc6,0x48,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ cgrl %r3,bar+100
+ cgrl %r4,bar+100
+
+#CHECK: cgrl %r7, frob@PLT # encoding: [0xc6,0x78,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: cgrl %r8, frob@PLT # encoding: [0xc6,0x88,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ cgrl %r7,frob@PLT
+ cgrl %r8,frob@PLT
+
+#CHECK: cgxbr %r0, 0, %f0 # encoding: [0xb3,0xaa,0x00,0x00]
+#CHECK: cgxbr %r0, 0, %f13 # encoding: [0xb3,0xaa,0x00,0x0d]
+#CHECK: cgxbr %r0, 15, %f0 # encoding: [0xb3,0xaa,0xf0,0x00]
+#CHECK: cgxbr %r4, 5, %f8 # encoding: [0xb3,0xaa,0x50,0x48]
+#CHECK: cgxbr %r15, 0, %f0 # encoding: [0xb3,0xaa,0x00,0xf0]
+
+ cgxbr %r0, 0, %f0
+ cgxbr %r0, 0, %f13
+ cgxbr %r0, 15, %f0
+ cgxbr %r4, 5, %f8
+ cgxbr %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]
+#CHECK: ch %r0, 0(%r15) # encoding: [0x49,0x00,0xf0,0x00]
+#CHECK: ch %r0, 4095(%r1,%r15) # encoding: [0x49,0x01,0xff,0xff]
+#CHECK: ch %r0, 4095(%r15,%r1) # encoding: [0x49,0x0f,0x1f,0xff]
+#CHECK: ch %r15, 0 # encoding: [0x49,0xf0,0x00,0x00]
+
+ ch %r0, 0
+ ch %r0, 4095
+ ch %r0, 0(%r1)
+ ch %r0, 0(%r15)
+ ch %r0, 4095(%r1,%r15)
+ ch %r0, 4095(%r15,%r1)
+ ch %r15, 0
+
+#CHECK: chhsi 0, 0 # encoding: [0xe5,0x54,0x00,0x00,0x00,0x00]
+#CHECK: chhsi 4095, 0 # encoding: [0xe5,0x54,0x0f,0xff,0x00,0x00]
+#CHECK: chhsi 0, -32768 # encoding: [0xe5,0x54,0x00,0x00,0x80,0x00]
+#CHECK: chhsi 0, -1 # encoding: [0xe5,0x54,0x00,0x00,0xff,0xff]
+#CHECK: chhsi 0, 0 # encoding: [0xe5,0x54,0x00,0x00,0x00,0x00]
+#CHECK: chhsi 0, 1 # encoding: [0xe5,0x54,0x00,0x00,0x00,0x01]
+#CHECK: chhsi 0, 32767 # encoding: [0xe5,0x54,0x00,0x00,0x7f,0xff]
+#CHECK: chhsi 0(%r1), 42 # encoding: [0xe5,0x54,0x10,0x00,0x00,0x2a]
+#CHECK: chhsi 0(%r15), 42 # encoding: [0xe5,0x54,0xf0,0x00,0x00,0x2a]
+#CHECK: chhsi 4095(%r1), 42 # encoding: [0xe5,0x54,0x1f,0xff,0x00,0x2a]
+#CHECK: chhsi 4095(%r15), 42 # encoding: [0xe5,0x54,0xff,0xff,0x00,0x2a]
+
+ chhsi 0, 0
+ chhsi 4095, 0
+ chhsi 0, -32768
+ chhsi 0, -1
+ chhsi 0, 0
+ chhsi 0, 1
+ chhsi 0, 32767
+ chhsi 0(%r1), 42
+ chhsi 0(%r15), 42
+ chhsi 4095(%r1), 42
+ chhsi 4095(%r15), 42
+
+#CHECK: chi %r0, -32768 # encoding: [0xa7,0x0e,0x80,0x00]
+#CHECK: chi %r0, -1 # encoding: [0xa7,0x0e,0xff,0xff]
+#CHECK: chi %r0, 0 # encoding: [0xa7,0x0e,0x00,0x00]
+#CHECK: chi %r0, 1 # encoding: [0xa7,0x0e,0x00,0x01]
+#CHECK: chi %r0, 32767 # encoding: [0xa7,0x0e,0x7f,0xff]
+#CHECK: chi %r15, 0 # encoding: [0xa7,0xfe,0x00,0x00]
+
+ chi %r0, -32768
+ chi %r0, -1
+ chi %r0, 0
+ chi %r0, 1
+ chi %r0, 32767
+ chi %r15, 0
+
+#CHECK: chrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ chrl %r0, -0x100000000
+#CHECK: chrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ chrl %r0, -2
+#CHECK: chrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ chrl %r0, 0
+#CHECK: chrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ chrl %r0, 0xfffffffe
+
+#CHECK: chrl %r0, foo # encoding: [0xc6,0x05,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: chrl %r15, foo # encoding: [0xc6,0xf5,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ chrl %r0,foo
+ chrl %r15,foo
+
+#CHECK: chrl %r3, bar+100 # encoding: [0xc6,0x35,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: chrl %r4, bar+100 # encoding: [0xc6,0x45,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ chrl %r3,bar+100
+ chrl %r4,bar+100
+
+#CHECK: chrl %r7, frob@PLT # encoding: [0xc6,0x75,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: chrl %r8, frob@PLT # encoding: [0xc6,0x85,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ chrl %r7,frob@PLT
+ chrl %r8,frob@PLT
+
+#CHECK: chsi 0, 0 # encoding: [0xe5,0x5c,0x00,0x00,0x00,0x00]
+#CHECK: chsi 4095, 0 # encoding: [0xe5,0x5c,0x0f,0xff,0x00,0x00]
+#CHECK: chsi 0, -32768 # encoding: [0xe5,0x5c,0x00,0x00,0x80,0x00]
+#CHECK: chsi 0, -1 # encoding: [0xe5,0x5c,0x00,0x00,0xff,0xff]
+#CHECK: chsi 0, 0 # encoding: [0xe5,0x5c,0x00,0x00,0x00,0x00]
+#CHECK: chsi 0, 1 # encoding: [0xe5,0x5c,0x00,0x00,0x00,0x01]
+#CHECK: chsi 0, 32767 # encoding: [0xe5,0x5c,0x00,0x00,0x7f,0xff]
+#CHECK: chsi 0(%r1), 42 # encoding: [0xe5,0x5c,0x10,0x00,0x00,0x2a]
+#CHECK: chsi 0(%r15), 42 # encoding: [0xe5,0x5c,0xf0,0x00,0x00,0x2a]
+#CHECK: chsi 4095(%r1), 42 # encoding: [0xe5,0x5c,0x1f,0xff,0x00,0x2a]
+#CHECK: chsi 4095(%r15), 42 # encoding: [0xe5,0x5c,0xff,0xff,0x00,0x2a]
+
+ chsi 0, 0
+ chsi 4095, 0
+ chsi 0, -32768
+ chsi 0, -1
+ chsi 0, 0
+ chsi 0, 1
+ chsi 0, 32767
+ chsi 0(%r1), 42
+ chsi 0(%r15), 42
+ chsi 4095(%r1), 42
+ chsi 4095(%r15), 42
+
+#CHECK: chy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x79]
+#CHECK: chy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x79]
+#CHECK: chy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x79]
+#CHECK: chy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x79]
+#CHECK: chy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x79]
+#CHECK: chy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x79]
+#CHECK: chy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x79]
+#CHECK: chy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x79]
+#CHECK: chy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x79]
+#CHECK: chy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x79]
+
+ chy %r0, -524288
+ chy %r0, -1
+ chy %r0, 0
+ chy %r0, 1
+ chy %r0, 524287
+ chy %r0, 0(%r1)
+ chy %r0, 0(%r15)
+ chy %r0, 524287(%r1,%r15)
+ chy %r0, 524287(%r15,%r1)
+ chy %r15, 0
+
+#CHECK: cl %r0, 0 # encoding: [0x55,0x00,0x00,0x00]
+#CHECK: cl %r0, 4095 # encoding: [0x55,0x00,0x0f,0xff]
+#CHECK: cl %r0, 0(%r1) # encoding: [0x55,0x00,0x10,0x00]
+#CHECK: cl %r0, 0(%r15) # encoding: [0x55,0x00,0xf0,0x00]
+#CHECK: cl %r0, 4095(%r1,%r15) # encoding: [0x55,0x01,0xff,0xff]
+#CHECK: cl %r0, 4095(%r15,%r1) # encoding: [0x55,0x0f,0x1f,0xff]
+#CHECK: cl %r15, 0 # encoding: [0x55,0xf0,0x00,0x00]
+
+ cl %r0, 0
+ cl %r0, 4095
+ cl %r0, 0(%r1)
+ cl %r0, 0(%r15)
+ cl %r0, 4095(%r1,%r15)
+ cl %r0, 4095(%r15,%r1)
+ cl %r15, 0
+
+#CHECK: clfhsi 0, 0 # encoding: [0xe5,0x5d,0x00,0x00,0x00,0x00]
+#CHECK: clfhsi 4095, 0 # encoding: [0xe5,0x5d,0x0f,0xff,0x00,0x00]
+#CHECK: clfhsi 0, 65535 # encoding: [0xe5,0x5d,0x00,0x00,0xff,0xff]
+#CHECK: clfhsi 0(%r1), 42 # encoding: [0xe5,0x5d,0x10,0x00,0x00,0x2a]
+#CHECK: clfhsi 0(%r15), 42 # encoding: [0xe5,0x5d,0xf0,0x00,0x00,0x2a]
+#CHECK: clfhsi 4095(%r1), 42 # encoding: [0xe5,0x5d,0x1f,0xff,0x00,0x2a]
+#CHECK: clfhsi 4095(%r15), 42 # encoding: [0xe5,0x5d,0xff,0xff,0x00,0x2a]
+
+ clfhsi 0, 0
+ clfhsi 4095, 0
+ clfhsi 0, 65535
+ clfhsi 0(%r1), 42
+ clfhsi 0(%r15), 42
+ clfhsi 4095(%r1), 42
+ clfhsi 4095(%r15), 42
+
+#CHECK: clfi %r0, 0 # encoding: [0xc2,0x0f,0x00,0x00,0x00,0x00]
+#CHECK: clfi %r0, 4294967295 # encoding: [0xc2,0x0f,0xff,0xff,0xff,0xff]
+#CHECK: clfi %r15, 0 # encoding: [0xc2,0xff,0x00,0x00,0x00,0x00]
+
+ clfi %r0, 0
+ clfi %r0, (1 << 32) - 1
+ clfi %r15, 0
+
+#CHECK: clg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x21]
+#CHECK: clg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x21]
+#CHECK: clg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x21]
+#CHECK: clg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x21]
+#CHECK: clg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x21]
+#CHECK: clg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x21]
+#CHECK: clg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x21]
+#CHECK: clg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x21]
+#CHECK: clg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x21]
+#CHECK: clg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x21]
+
+ clg %r0, -524288
+ clg %r0, -1
+ clg %r0, 0
+ clg %r0, 1
+ clg %r0, 524287
+ clg %r0, 0(%r1)
+ clg %r0, 0(%r15)
+ clg %r0, 524287(%r1,%r15)
+ clg %r0, 524287(%r15,%r1)
+ clg %r15, 0
+
+#CHECK: clgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x31]
+#CHECK: clgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x31]
+#CHECK: clgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x31]
+#CHECK: clgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x31]
+#CHECK: clgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x31]
+#CHECK: clgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x31]
+#CHECK: clgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x31]
+#CHECK: clgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x31]
+#CHECK: clgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x31]
+#CHECK: clgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x31]
+
+ clgf %r0, -524288
+ clgf %r0, -1
+ clgf %r0, 0
+ clgf %r0, 1
+ clgf %r0, 524287
+ clgf %r0, 0(%r1)
+ clgf %r0, 0(%r15)
+ clgf %r0, 524287(%r1,%r15)
+ clgf %r0, 524287(%r15,%r1)
+ clgf %r15, 0
+
+#CHECK: clgfi %r0, 0 # encoding: [0xc2,0x0e,0x00,0x00,0x00,0x00]
+#CHECK: clgfi %r0, 4294967295 # encoding: [0xc2,0x0e,0xff,0xff,0xff,0xff]
+#CHECK: clgfi %r15, 0 # encoding: [0xc2,0xfe,0x00,0x00,0x00,0x00]
+
+ clgfi %r0, 0
+ clgfi %r0, (1 << 32) - 1
+ clgfi %r15, 0
+
+#CHECK: clgfr %r0, %r0 # encoding: [0xb9,0x31,0x00,0x00]
+#CHECK: clgfr %r0, %r15 # encoding: [0xb9,0x31,0x00,0x0f]
+#CHECK: clgfr %r15, %r0 # encoding: [0xb9,0x31,0x00,0xf0]
+#CHECK: clgfr %r7, %r8 # encoding: [0xb9,0x31,0x00,0x78]
+
+ clgfr %r0,%r0
+ clgfr %r0,%r15
+ clgfr %r15,%r0
+ clgfr %r7,%r8
+
+#CHECK: clgfrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clgfrl %r0, -0x100000000
+#CHECK: clgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clgfrl %r0, -2
+#CHECK: clgfrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clgfrl %r0, 0
+#CHECK: clgfrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clgfrl %r0, 0xfffffffe
+
+#CHECK: clgfrl %r0, foo # encoding: [0xc6,0x0e,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: clgfrl %r15, foo # encoding: [0xc6,0xfe,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ clgfrl %r0,foo
+ clgfrl %r15,foo
+
+#CHECK: clgfrl %r3, bar+100 # encoding: [0xc6,0x3e,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: clgfrl %r4, bar+100 # encoding: [0xc6,0x4e,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ clgfrl %r3,bar+100
+ clgfrl %r4,bar+100
+
+#CHECK: clgfrl %r7, frob@PLT # encoding: [0xc6,0x7e,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: clgfrl %r8, frob@PLT # encoding: [0xc6,0x8e,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ clgfrl %r7,frob@PLT
+ clgfrl %r8,frob@PLT
+
+#CHECK: clghrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clghrl %r0, -0x100000000
+#CHECK: clghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clghrl %r0, -2
+#CHECK: clghrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clghrl %r0, 0
+#CHECK: clghrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clghrl %r0, 0xfffffffe
+
+#CHECK: clghrl %r0, foo # encoding: [0xc6,0x06,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: clghrl %r15, foo # encoding: [0xc6,0xf6,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ clghrl %r0,foo
+ clghrl %r15,foo
+
+#CHECK: clghrl %r3, bar+100 # encoding: [0xc6,0x36,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: clghrl %r4, bar+100 # encoding: [0xc6,0x46,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ clghrl %r3,bar+100
+ clghrl %r4,bar+100
+
+#CHECK: clghrl %r7, frob@PLT # encoding: [0xc6,0x76,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: clghrl %r8, frob@PLT # encoding: [0xc6,0x86,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ clghrl %r7,frob@PLT
+ clghrl %r8,frob@PLT
+
+#CHECK: clghsi 0, 0 # encoding: [0xe5,0x59,0x00,0x00,0x00,0x00]
+#CHECK: clghsi 4095, 0 # encoding: [0xe5,0x59,0x0f,0xff,0x00,0x00]
+#CHECK: clghsi 0, 65535 # encoding: [0xe5,0x59,0x00,0x00,0xff,0xff]
+#CHECK: clghsi 0(%r1), 42 # encoding: [0xe5,0x59,0x10,0x00,0x00,0x2a]
+#CHECK: clghsi 0(%r15), 42 # encoding: [0xe5,0x59,0xf0,0x00,0x00,0x2a]
+#CHECK: clghsi 4095(%r1), 42 # encoding: [0xe5,0x59,0x1f,0xff,0x00,0x2a]
+#CHECK: clghsi 4095(%r15), 42 # encoding: [0xe5,0x59,0xff,0xff,0x00,0x2a]
+
+ clghsi 0, 0
+ clghsi 4095, 0
+ clghsi 0, 65535
+ clghsi 0(%r1), 42
+ clghsi 0(%r15), 42
+ clghsi 4095(%r1), 42
+ clghsi 4095(%r15), 42
+
+#CHECK: clgr %r0, %r0 # encoding: [0xb9,0x21,0x00,0x00]
+#CHECK: clgr %r0, %r15 # encoding: [0xb9,0x21,0x00,0x0f]
+#CHECK: clgr %r15, %r0 # encoding: [0xb9,0x21,0x00,0xf0]
+#CHECK: clgr %r7, %r8 # encoding: [0xb9,0x21,0x00,0x78]
+
+ clgr %r0,%r0
+ clgr %r0,%r15
+ clgr %r15,%r0
+ clgr %r7,%r8
+
+#CHECK: clgrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clgrl %r0, -0x100000000
+#CHECK: clgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clgrl %r0, -2
+#CHECK: clgrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clgrl %r0, 0
+#CHECK: clgrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clgrl %r0, 0xfffffffe
+
+#CHECK: clgrl %r0, foo # encoding: [0xc6,0x0a,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: clgrl %r15, foo # encoding: [0xc6,0xfa,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ clgrl %r0,foo
+ clgrl %r15,foo
+
+#CHECK: clgrl %r3, bar+100 # encoding: [0xc6,0x3a,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: clgrl %r4, bar+100 # encoding: [0xc6,0x4a,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ clgrl %r3,bar+100
+ clgrl %r4,bar+100
+
+#CHECK: clgrl %r7, frob@PLT # encoding: [0xc6,0x7a,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: clgrl %r8, frob@PLT # encoding: [0xc6,0x8a,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ clgrl %r7,frob@PLT
+ clgrl %r8,frob@PLT
+
+#CHECK: clhhsi 0, 0 # encoding: [0xe5,0x55,0x00,0x00,0x00,0x00]
+#CHECK: clhhsi 4095, 0 # encoding: [0xe5,0x55,0x0f,0xff,0x00,0x00]
+#CHECK: clhhsi 0, 65535 # encoding: [0xe5,0x55,0x00,0x00,0xff,0xff]
+#CHECK: clhhsi 0(%r1), 42 # encoding: [0xe5,0x55,0x10,0x00,0x00,0x2a]
+#CHECK: clhhsi 0(%r15), 42 # encoding: [0xe5,0x55,0xf0,0x00,0x00,0x2a]
+#CHECK: clhhsi 4095(%r1), 42 # encoding: [0xe5,0x55,0x1f,0xff,0x00,0x2a]
+#CHECK: clhhsi 4095(%r15), 42 # encoding: [0xe5,0x55,0xff,0xff,0x00,0x2a]
+
+ clhhsi 0, 0
+ clhhsi 4095, 0
+ clhhsi 0, 65535
+ clhhsi 0(%r1), 42
+ clhhsi 0(%r15), 42
+ clhhsi 4095(%r1), 42
+ clhhsi 4095(%r15), 42
+
+#CHECK: clhrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clhrl %r0, -0x100000000
+#CHECK: clhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clhrl %r0, -2
+#CHECK: clhrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clhrl %r0, 0
+#CHECK: clhrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clhrl %r0, 0xfffffffe
+
+#CHECK: clhrl %r0, foo # encoding: [0xc6,0x07,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: clhrl %r15, foo # encoding: [0xc6,0xf7,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ clhrl %r0,foo
+ clhrl %r15,foo
+
+#CHECK: clhrl %r3, bar+100 # encoding: [0xc6,0x37,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: clhrl %r4, bar+100 # encoding: [0xc6,0x47,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ clhrl %r3,bar+100
+ clhrl %r4,bar+100
+
+#CHECK: clhrl %r7, frob@PLT # encoding: [0xc6,0x77,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: clhrl %r8, frob@PLT # encoding: [0xc6,0x87,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ clhrl %r7,frob@PLT
+ clhrl %r8,frob@PLT
+
+#CHECK: cli 0, 0 # encoding: [0x95,0x00,0x00,0x00]
+#CHECK: cli 4095, 0 # encoding: [0x95,0x00,0x0f,0xff]
+#CHECK: cli 0, 255 # encoding: [0x95,0xff,0x00,0x00]
+#CHECK: cli 0(%r1), 42 # encoding: [0x95,0x2a,0x10,0x00]
+#CHECK: cli 0(%r15), 42 # encoding: [0x95,0x2a,0xf0,0x00]
+#CHECK: cli 4095(%r1), 42 # encoding: [0x95,0x2a,0x1f,0xff]
+#CHECK: cli 4095(%r15), 42 # encoding: [0x95,0x2a,0xff,0xff]
+
+ cli 0, 0
+ cli 4095, 0
+ cli 0, 255
+ cli 0(%r1), 42
+ cli 0(%r15), 42
+ cli 4095(%r1), 42
+ cli 4095(%r15), 42
+
+#CHECK: cliy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x55]
+#CHECK: cliy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x55]
+#CHECK: cliy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x55]
+#CHECK: cliy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x55]
+#CHECK: cliy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x55]
+#CHECK: cliy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x55]
+#CHECK: cliy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x55]
+#CHECK: cliy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x55]
+#CHECK: cliy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x55]
+#CHECK: cliy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x55]
+
+ cliy -524288, 0
+ cliy -1, 0
+ cliy 0, 0
+ cliy 1, 0
+ cliy 524287, 0
+ cliy 0, 255
+ cliy 0(%r1), 42
+ cliy 0(%r15), 42
+ cliy 524287(%r1), 42
+ cliy 524287(%r15), 42
+
+#CHECK: clr %r0, %r0 # encoding: [0x15,0x00]
+#CHECK: clr %r0, %r15 # encoding: [0x15,0x0f]
+#CHECK: clr %r15, %r0 # encoding: [0x15,0xf0]
+#CHECK: clr %r7, %r8 # encoding: [0x15,0x78]
+
+ clr %r0,%r0
+ clr %r0,%r15
+ clr %r15,%r0
+ clr %r7,%r8
+
+#CHECK: clrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clrl %r0, -0x100000000
+#CHECK: clrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clrl %r0, -2
+#CHECK: clrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clrl %r0, 0
+#CHECK: clrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clrl %r0, 0xfffffffe
+
+#CHECK: clrl %r0, foo # encoding: [0xc6,0x0f,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: clrl %r15, foo # encoding: [0xc6,0xff,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ clrl %r0,foo
+ clrl %r15,foo
+
+#CHECK: clrl %r3, bar+100 # encoding: [0xc6,0x3f,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: clrl %r4, bar+100 # encoding: [0xc6,0x4f,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ clrl %r3,bar+100
+ clrl %r4,bar+100
+
+#CHECK: clrl %r7, frob@PLT # encoding: [0xc6,0x7f,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: clrl %r8, frob@PLT # encoding: [0xc6,0x8f,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ clrl %r7,frob@PLT
+ clrl %r8,frob@PLT
+
+#CHECK: cly %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x55]
+#CHECK: cly %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x55]
+#CHECK: cly %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x55]
+#CHECK: cly %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x55]
+#CHECK: cly %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x55]
+#CHECK: cly %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x55]
+#CHECK: cly %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x55]
+#CHECK: cly %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x55]
+#CHECK: cly %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x55]
+#CHECK: cly %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x55]
+
+ cly %r0, -524288
+ cly %r0, -1
+ cly %r0, 0
+ cly %r0, 1
+ cly %r0, 524287
+ cly %r0, 0(%r1)
+ cly %r0, 0(%r15)
+ cly %r0, 524287(%r1,%r15)
+ cly %r0, 524287(%r15,%r1)
+ cly %r15, 0
+
+#CHECK: cpsdr %f0, %f0, %f0 # encoding: [0xb3,0x72,0x00,0x00]
+#CHECK: cpsdr %f0, %f0, %f15 # encoding: [0xb3,0x72,0x00,0x0f]
+#CHECK: cpsdr %f0, %f15, %f0 # encoding: [0xb3,0x72,0xf0,0x00]
+#CHECK: cpsdr %f15, %f0, %f0 # encoding: [0xb3,0x72,0x00,0xf0]
+#CHECK: cpsdr %f1, %f2, %f3 # encoding: [0xb3,0x72,0x20,0x13]
+#CHECK: cpsdr %f15, %f15, %f15 # encoding: [0xb3,0x72,0xf0,0xff]
+
+ cpsdr %f0, %f0, %f0
+ cpsdr %f0, %f0, %f15
+ cpsdr %f0, %f15, %f0
+ cpsdr %f15, %f0, %f0
+ cpsdr %f1, %f2, %f3
+ cpsdr %f15, %f15, %f15
+
+
+#CHECK: cr %r0, %r0 # encoding: [0x19,0x00]
+#CHECK: cr %r0, %r15 # encoding: [0x19,0x0f]
+#CHECK: cr %r15, %r0 # encoding: [0x19,0xf0]
+#CHECK: cr %r7, %r8 # encoding: [0x19,0x78]
+
+ cr %r0,%r0
+ cr %r0,%r15
+ cr %r15,%r0
+ cr %r7,%r8
+
+#CHECK: crl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ crl %r0, -0x100000000
+#CHECK: crl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ crl %r0, -2
+#CHECK: crl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ crl %r0, 0
+#CHECK: crl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ crl %r0, 0xfffffffe
+
+#CHECK: crl %r0, foo # encoding: [0xc6,0x0d,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: crl %r15, foo # encoding: [0xc6,0xfd,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ crl %r0,foo
+ crl %r15,foo
+
+#CHECK: crl %r3, bar+100 # encoding: [0xc6,0x3d,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: crl %r4, bar+100 # encoding: [0xc6,0x4d,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ crl %r3,bar+100
+ crl %r4,bar+100
+
+#CHECK: crl %r7, frob@PLT # encoding: [0xc6,0x7d,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: crl %r8, frob@PLT # encoding: [0xc6,0x8d,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ crl %r7,frob@PLT
+ crl %r8,frob@PLT
+
+#CHECK: cs %r0, %r0, 0 # encoding: [0xba,0x00,0x00,0x00]
+#CHECK: cs %r0, %r0, 4095 # encoding: [0xba,0x00,0x0f,0xff]
+#CHECK: cs %r0, %r0, 0(%r1) # encoding: [0xba,0x00,0x10,0x00]
+#CHECK: cs %r0, %r0, 0(%r15) # encoding: [0xba,0x00,0xf0,0x00]
+#CHECK: cs %r0, %r0, 4095(%r1) # encoding: [0xba,0x00,0x1f,0xff]
+#CHECK: cs %r0, %r0, 4095(%r15) # encoding: [0xba,0x00,0xff,0xff]
+#CHECK: cs %r0, %r15, 0 # encoding: [0xba,0x0f,0x00,0x00]
+#CHECK: cs %r15, %r0, 0 # encoding: [0xba,0xf0,0x00,0x00]
+
+ cs %r0, %r0, 0
+ cs %r0, %r0, 4095
+ cs %r0, %r0, 0(%r1)
+ cs %r0, %r0, 0(%r15)
+ cs %r0, %r0, 4095(%r1)
+ cs %r0, %r0, 4095(%r15)
+ cs %r0, %r15, 0
+ cs %r15, %r0, 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]
+#CHECK: csg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x30]
+#CHECK: csg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x30]
+#CHECK: csg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x30]
+#CHECK: csg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x30]
+#CHECK: csg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x30]
+#CHECK: csg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x30]
+#CHECK: csg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x30]
+#CHECK: csg %r15, %r0, 0 # encoding: [0xeb,0xf0,0x00,0x00,0x00,0x30]
+
+ csg %r0, %r0, -524288
+ csg %r0, %r0, -1
+ csg %r0, %r0, 0
+ csg %r0, %r0, 1
+ csg %r0, %r0, 524287
+ csg %r0, %r0, 0(%r1)
+ csg %r0, %r0, 0(%r15)
+ csg %r0, %r0, 524287(%r1)
+ csg %r0, %r0, 524287(%r15)
+ csg %r0, %r15, 0
+ csg %r15, %r0, 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]
+#CHECK: csy %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x14]
+#CHECK: csy %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x14]
+#CHECK: csy %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x14]
+#CHECK: csy %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x14]
+#CHECK: csy %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x14]
+#CHECK: csy %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x14]
+#CHECK: csy %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x14]
+#CHECK: csy %r15, %r0, 0 # encoding: [0xeb,0xf0,0x00,0x00,0x00,0x14]
+
+ csy %r0, %r0, -524288
+ csy %r0, %r0, -1
+ csy %r0, %r0, 0
+ csy %r0, %r0, 1
+ csy %r0, %r0, 524287
+ csy %r0, %r0, 0(%r1)
+ csy %r0, %r0, 0(%r15)
+ csy %r0, %r0, 524287(%r1)
+ csy %r0, %r0, 524287(%r15)
+ csy %r0, %r15, 0
+ csy %r15, %r0, 0
+
+#CHECK: cxbr %f0, %f0 # encoding: [0xb3,0x49,0x00,0x00]
+#CHECK: cxbr %f0, %f13 # encoding: [0xb3,0x49,0x00,0x0d]
+#CHECK: cxbr %f8, %f8 # encoding: [0xb3,0x49,0x00,0x88]
+#CHECK: cxbr %f13, %f0 # encoding: [0xb3,0x49,0x00,0xd0]
+
+ cxbr %f0, %f0
+ cxbr %f0, %f13
+ cxbr %f8, %f8
+ cxbr %f13, %f0
+
+#CHECK: cxfbr %f0, %r0 # encoding: [0xb3,0x96,0x00,0x00]
+#CHECK: cxfbr %f0, %r15 # encoding: [0xb3,0x96,0x00,0x0f]
+#CHECK: cxfbr %f13, %r0 # encoding: [0xb3,0x96,0x00,0xd0]
+#CHECK: cxfbr %f8, %r7 # encoding: [0xb3,0x96,0x00,0x87]
+#CHECK: cxfbr %f13, %r15 # encoding: [0xb3,0x96,0x00,0xdf]
+
+ cxfbr %f0, %r0
+ cxfbr %f0, %r15
+ cxfbr %f13, %r0
+ cxfbr %f8, %r7
+ cxfbr %f13, %r15
+
+#CHECK: cxgbr %f0, %r0 # encoding: [0xb3,0xa6,0x00,0x00]
+#CHECK: cxgbr %f0, %r15 # encoding: [0xb3,0xa6,0x00,0x0f]
+#CHECK: cxgbr %f13, %r0 # encoding: [0xb3,0xa6,0x00,0xd0]
+#CHECK: cxgbr %f8, %r7 # encoding: [0xb3,0xa6,0x00,0x87]
+#CHECK: cxgbr %f13, %r15 # encoding: [0xb3,0xa6,0x00,0xdf]
+
+ cxgbr %f0, %r0
+ cxgbr %f0, %r15
+ cxgbr %f13, %r0
+ cxgbr %f8, %r7
+ cxgbr %f13, %r15
+
+#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]
+#CHECK: cy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x59]
+#CHECK: cy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x59]
+#CHECK: cy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x59]
+#CHECK: cy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x59]
+#CHECK: cy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x59]
+#CHECK: cy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x59]
+#CHECK: cy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x59]
+
+ cy %r0, -524288
+ cy %r0, -1
+ cy %r0, 0
+ cy %r0, 1
+ cy %r0, 524287
+ cy %r0, 0(%r1)
+ cy %r0, 0(%r15)
+ cy %r0, 524287(%r1,%r15)
+ cy %r0, 524287(%r15,%r1)
+ cy %r15, 0
+
+#CHECK: ddb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1d]
+#CHECK: ddb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1d]
+#CHECK: ddb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1d]
+#CHECK: ddb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1d]
+#CHECK: ddb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1d]
+#CHECK: ddb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1d]
+#CHECK: ddb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1d]
+
+ ddb %f0, 0
+ ddb %f0, 4095
+ ddb %f0, 0(%r1)
+ ddb %f0, 0(%r15)
+ ddb %f0, 4095(%r1,%r15)
+ ddb %f0, 4095(%r15,%r1)
+ ddb %f15, 0
+
+#CHECK: ddbr %f0, %f0 # encoding: [0xb3,0x1d,0x00,0x00]
+#CHECK: ddbr %f0, %f15 # encoding: [0xb3,0x1d,0x00,0x0f]
+#CHECK: ddbr %f7, %f8 # encoding: [0xb3,0x1d,0x00,0x78]
+#CHECK: ddbr %f15, %f0 # encoding: [0xb3,0x1d,0x00,0xf0]
+
+ ddbr %f0, %f0
+ ddbr %f0, %f15
+ ddbr %f7, %f8
+ ddbr %f15, %f0
+
+#CHECK: deb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0d]
+#CHECK: deb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0d]
+#CHECK: deb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0d]
+#CHECK: deb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0d]
+#CHECK: deb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0d]
+#CHECK: deb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0d]
+#CHECK: deb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0d]
+
+ deb %f0, 0
+ deb %f0, 4095
+ deb %f0, 0(%r1)
+ deb %f0, 0(%r15)
+ deb %f0, 4095(%r1,%r15)
+ deb %f0, 4095(%r15,%r1)
+ deb %f15, 0
+
+#CHECK: debr %f0, %f0 # encoding: [0xb3,0x0d,0x00,0x00]
+#CHECK: debr %f0, %f15 # encoding: [0xb3,0x0d,0x00,0x0f]
+#CHECK: debr %f7, %f8 # encoding: [0xb3,0x0d,0x00,0x78]
+#CHECK: debr %f15, %f0 # encoding: [0xb3,0x0d,0x00,0xf0]
+
+ debr %f0, %f0
+ debr %f0, %f15
+ debr %f7, %f8
+ debr %f15, %f0
+
+#CHECK: dl %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x97]
+#CHECK: dl %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x97]
+#CHECK: dl %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x97]
+#CHECK: dl %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x97]
+#CHECK: dl %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x97]
+#CHECK: dl %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x97]
+#CHECK: dl %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x97]
+#CHECK: dl %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x97]
+#CHECK: dl %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x97]
+#CHECK: dl %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x97]
+
+ dl %r0, -524288
+ dl %r0, -1
+ dl %r0, 0
+ dl %r0, 1
+ dl %r0, 524287
+ dl %r0, 0(%r1)
+ dl %r0, 0(%r15)
+ dl %r0, 524287(%r1,%r15)
+ dl %r0, 524287(%r15,%r1)
+ dl %r14, 0
+
+#CHECK: dlg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x87]
+#CHECK: dlg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x87]
+#CHECK: dlg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x87]
+#CHECK: dlg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x87]
+#CHECK: dlg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x87]
+#CHECK: dlg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x87]
+#CHECK: dlg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x87]
+#CHECK: dlg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x87]
+#CHECK: dlg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x87]
+#CHECK: dlg %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x87]
+
+ dlg %r0, -524288
+ dlg %r0, -1
+ dlg %r0, 0
+ dlg %r0, 1
+ dlg %r0, 524287
+ dlg %r0, 0(%r1)
+ dlg %r0, 0(%r15)
+ dlg %r0, 524287(%r1,%r15)
+ dlg %r0, 524287(%r15,%r1)
+ dlg %r14, 0
+
+#CHECK: dlgr %r0, %r0 # encoding: [0xb9,0x87,0x00,0x00]
+#CHECK: dlgr %r0, %r15 # encoding: [0xb9,0x87,0x00,0x0f]
+#CHECK: dlgr %r14, %r0 # encoding: [0xb9,0x87,0x00,0xe0]
+#CHECK: dlgr %r6, %r9 # encoding: [0xb9,0x87,0x00,0x69]
+
+ dlgr %r0,%r0
+ dlgr %r0,%r15
+ dlgr %r14,%r0
+ dlgr %r6,%r9
+
+#CHECK: dlr %r0, %r0 # encoding: [0xb9,0x97,0x00,0x00]
+#CHECK: dlr %r0, %r15 # encoding: [0xb9,0x97,0x00,0x0f]
+#CHECK: dlr %r14, %r0 # encoding: [0xb9,0x97,0x00,0xe0]
+#CHECK: dlr %r6, %r9 # encoding: [0xb9,0x97,0x00,0x69]
+
+ dlr %r0,%r0
+ dlr %r0,%r15
+ dlr %r14,%r0
+ dlr %r6,%r9
+
+#CHECK: dsg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0d]
+#CHECK: dsg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0d]
+#CHECK: dsg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0d]
+#CHECK: dsg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0d]
+#CHECK: dsg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0d]
+#CHECK: dsg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0d]
+#CHECK: dsg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0d]
+#CHECK: dsg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0d]
+#CHECK: dsg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0d]
+#CHECK: dsg %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x0d]
+
+ dsg %r0, -524288
+ dsg %r0, -1
+ dsg %r0, 0
+ dsg %r0, 1
+ dsg %r0, 524287
+ dsg %r0, 0(%r1)
+ dsg %r0, 0(%r15)
+ dsg %r0, 524287(%r1,%r15)
+ dsg %r0, 524287(%r15,%r1)
+ dsg %r14, 0
+
+#CHECK: dsgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1d]
+#CHECK: dsgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1d]
+#CHECK: dsgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1d]
+#CHECK: dsgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1d]
+#CHECK: dsgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1d]
+#CHECK: dsgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1d]
+#CHECK: dsgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1d]
+#CHECK: dsgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1d]
+#CHECK: dsgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1d]
+#CHECK: dsgf %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x1d]
+
+ dsgf %r0, -524288
+ dsgf %r0, -1
+ dsgf %r0, 0
+ dsgf %r0, 1
+ dsgf %r0, 524287
+ dsgf %r0, 0(%r1)
+ dsgf %r0, 0(%r15)
+ dsgf %r0, 524287(%r1,%r15)
+ dsgf %r0, 524287(%r15,%r1)
+ dsgf %r14, 0
+
+#CHECK: dsgfr %r0, %r0 # encoding: [0xb9,0x1d,0x00,0x00]
+#CHECK: dsgfr %r0, %r15 # encoding: [0xb9,0x1d,0x00,0x0f]
+#CHECK: dsgfr %r14, %r0 # encoding: [0xb9,0x1d,0x00,0xe0]
+#CHECK: dsgfr %r6, %r9 # encoding: [0xb9,0x1d,0x00,0x69]
+
+ dsgfr %r0,%r0
+ dsgfr %r0,%r15
+ dsgfr %r14,%r0
+ dsgfr %r6,%r9
+
+#CHECK: dsgr %r0, %r0 # encoding: [0xb9,0x0d,0x00,0x00]
+#CHECK: dsgr %r0, %r15 # encoding: [0xb9,0x0d,0x00,0x0f]
+#CHECK: dsgr %r14, %r0 # encoding: [0xb9,0x0d,0x00,0xe0]
+#CHECK: dsgr %r6, %r9 # encoding: [0xb9,0x0d,0x00,0x69]
+
+ dsgr %r0,%r0
+ dsgr %r0,%r15
+ dsgr %r14,%r0
+ dsgr %r6,%r9
+
+#CHECK: dxbr %f0, %f0 # encoding: [0xb3,0x4d,0x00,0x00]
+#CHECK: dxbr %f0, %f13 # encoding: [0xb3,0x4d,0x00,0x0d]
+#CHECK: dxbr %f8, %f8 # encoding: [0xb3,0x4d,0x00,0x88]
+#CHECK: dxbr %f13, %f0 # encoding: [0xb3,0x4d,0x00,0xd0]
+
+ dxbr %f0, %f0
+ dxbr %f0, %f13
+ dxbr %f8, %f8
+ dxbr %f13, %f0
+
+#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]
+#CHECK: ear %r7, %a8 # encoding: [0xb2,0x4f,0x00,0x78]
+#CHECK: ear %r15, %a15 # encoding: [0xb2,0x4f,0x00,0xff]
+
+ ear %r0, %a0
+ ear %r0, %a15
+ ear %r15, %a0
+ ear %r7, %a8
+ ear %r15, %a15
+
+#CHECK: fidbr %f0, 0, %f0 # encoding: [0xb3,0x5f,0x00,0x00]
+#CHECK: fidbr %f0, 0, %f15 # encoding: [0xb3,0x5f,0x00,0x0f]
+#CHECK: fidbr %f0, 15, %f0 # encoding: [0xb3,0x5f,0xf0,0x00]
+#CHECK: fidbr %f4, 5, %f6 # encoding: [0xb3,0x5f,0x50,0x46]
+#CHECK: fidbr %f15, 0, %f0 # encoding: [0xb3,0x5f,0x00,0xf0]
+
+ fidbr %f0, 0, %f0
+ fidbr %f0, 0, %f15
+ fidbr %f0, 15, %f0
+ fidbr %f4, 5, %f6
+ fidbr %f15, 0, %f0
+
+#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]
+#CHECK: fiebr %f4, 5, %f6 # encoding: [0xb3,0x57,0x50,0x46]
+#CHECK: fiebr %f15, 0, %f0 # encoding: [0xb3,0x57,0x00,0xf0]
+
+ fiebr %f0, 0, %f0
+ fiebr %f0, 0, %f15
+ fiebr %f0, 15, %f0
+ fiebr %f4, 5, %f6
+ fiebr %f15, 0, %f0
+
+#CHECK: fixbr %f0, 0, %f0 # encoding: [0xb3,0x47,0x00,0x00]
+#CHECK: fixbr %f0, 0, %f13 # encoding: [0xb3,0x47,0x00,0x0d]
+#CHECK: fixbr %f0, 15, %f0 # encoding: [0xb3,0x47,0xf0,0x00]
+#CHECK: fixbr %f4, 5, %f8 # encoding: [0xb3,0x47,0x50,0x48]
+#CHECK: fixbr %f13, 0, %f0 # encoding: [0xb3,0x47,0x00,0xd0]
+
+ fixbr %f0, 0, %f0
+ fixbr %f0, 0, %f13
+ fixbr %f0, 15, %f0
+ fixbr %f4, 5, %f8
+ fixbr %f13, 0, %f0
+
+#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]
+#CHECK: flogr %r14, %r0 # encoding: [0xb9,0x83,0x00,0xe0]
+
+ flogr %r0, %r0
+ flogr %r0, %r15
+ flogr %r10, %r9
+ flogr %r14, %r0
+
+#CHECK: ic %r0, 0 # encoding: [0x43,0x00,0x00,0x00]
+#CHECK: ic %r0, 4095 # encoding: [0x43,0x00,0x0f,0xff]
+#CHECK: ic %r0, 0(%r1) # encoding: [0x43,0x00,0x10,0x00]
+#CHECK: ic %r0, 0(%r15) # encoding: [0x43,0x00,0xf0,0x00]
+#CHECK: ic %r0, 4095(%r1,%r15) # encoding: [0x43,0x01,0xff,0xff]
+#CHECK: ic %r0, 4095(%r15,%r1) # encoding: [0x43,0x0f,0x1f,0xff]
+#CHECK: ic %r15, 0 # encoding: [0x43,0xf0,0x00,0x00]
+
+ ic %r0, 0
+ ic %r0, 4095
+ ic %r0, 0(%r1)
+ ic %r0, 0(%r15)
+ ic %r0, 4095(%r1,%r15)
+ ic %r0, 4095(%r15,%r1)
+ ic %r15, 0
+
+#CHECK: icy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x73]
+#CHECK: icy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x73]
+#CHECK: icy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x73]
+#CHECK: icy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x73]
+#CHECK: icy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x73]
+#CHECK: icy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x73]
+#CHECK: icy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x73]
+#CHECK: icy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x73]
+#CHECK: icy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x73]
+#CHECK: icy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x73]
+
+ icy %r0, -524288
+ icy %r0, -1
+ icy %r0, 0
+ icy %r0, 1
+ icy %r0, 524287
+ icy %r0, 0(%r1)
+ icy %r0, 0(%r15)
+ icy %r0, 524287(%r1,%r15)
+ icy %r0, 524287(%r15,%r1)
+ icy %r15, 0
+
+#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]
+
+ iihf %r0, 0
+ iihf %r0, 0xffffffff
+ iihf %r15, 0
+
+#CHECK: iihh %r0, 0 # encoding: [0xa5,0x00,0x00,0x00]
+#CHECK: iihh %r0, 32768 # encoding: [0xa5,0x00,0x80,0x00]
+#CHECK: iihh %r0, 65535 # encoding: [0xa5,0x00,0xff,0xff]
+#CHECK: iihh %r15, 0 # encoding: [0xa5,0xf0,0x00,0x00]
+
+ iihh %r0, 0
+ iihh %r0, 0x8000
+ iihh %r0, 0xffff
+ iihh %r15, 0
+
+#CHECK: iihl %r0, 0 # encoding: [0xa5,0x01,0x00,0x00]
+#CHECK: iihl %r0, 32768 # encoding: [0xa5,0x01,0x80,0x00]
+#CHECK: iihl %r0, 65535 # encoding: [0xa5,0x01,0xff,0xff]
+#CHECK: iihl %r15, 0 # encoding: [0xa5,0xf1,0x00,0x00]
+
+ iihl %r0, 0
+ iihl %r0, 0x8000
+ iihl %r0, 0xffff
+ iihl %r15, 0
+
+#CHECK: iilf %r0, 0 # encoding: [0xc0,0x09,0x00,0x00,0x00,0x00]
+#CHECK: iilf %r0, 4294967295 # encoding: [0xc0,0x09,0xff,0xff,0xff,0xff]
+#CHECK: iilf %r15, 0 # encoding: [0xc0,0xf9,0x00,0x00,0x00,0x00]
+
+ iilf %r0, 0
+ iilf %r0, 0xffffffff
+ iilf %r15, 0
+
+#CHECK: iilh %r0, 0 # encoding: [0xa5,0x02,0x00,0x00]
+#CHECK: iilh %r0, 32768 # encoding: [0xa5,0x02,0x80,0x00]
+#CHECK: iilh %r0, 65535 # encoding: [0xa5,0x02,0xff,0xff]
+#CHECK: iilh %r15, 0 # encoding: [0xa5,0xf2,0x00,0x00]
+
+ iilh %r0, 0
+ iilh %r0, 0x8000
+ iilh %r0, 0xffff
+ iilh %r15, 0
+
+#CHECK: iill %r0, 0 # encoding: [0xa5,0x03,0x00,0x00]
+#CHECK: iill %r0, 32768 # encoding: [0xa5,0x03,0x80,0x00]
+#CHECK: iill %r0, 65535 # encoding: [0xa5,0x03,0xff,0xff]
+#CHECK: iill %r15, 0 # encoding: [0xa5,0xf3,0x00,0x00]
+
+ iill %r0, 0
+ iill %r0, 0x8000
+ iill %r0, 0xffff
+ iill %r15, 0
+
+#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]
+#CHECK: l %r0, 0(%r15) # encoding: [0x58,0x00,0xf0,0x00]
+#CHECK: l %r0, 4095(%r1,%r15) # encoding: [0x58,0x01,0xff,0xff]
+#CHECK: l %r0, 4095(%r15,%r1) # encoding: [0x58,0x0f,0x1f,0xff]
+#CHECK: l %r15, 0 # encoding: [0x58,0xf0,0x00,0x00]
+
+ l %r0, 0
+ l %r0, 4095
+ l %r0, 0(%r1)
+ l %r0, 0(%r15)
+ l %r0, 4095(%r1,%r15)
+ l %r0, 4095(%r15,%r1)
+ l %r15, 0
+
+#CHECK: la %r0, 0 # encoding: [0x41,0x00,0x00,0x00]
+#CHECK: la %r0, 4095 # encoding: [0x41,0x00,0x0f,0xff]
+#CHECK: la %r0, 0(%r1) # encoding: [0x41,0x00,0x10,0x00]
+#CHECK: la %r0, 0(%r15) # encoding: [0x41,0x00,0xf0,0x00]
+#CHECK: la %r0, 4095(%r1,%r15) # encoding: [0x41,0x01,0xff,0xff]
+#CHECK: la %r0, 4095(%r15,%r1) # encoding: [0x41,0x0f,0x1f,0xff]
+#CHECK: la %r15, 0 # encoding: [0x41,0xf0,0x00,0x00]
+
+ la %r0, 0
+ la %r0, 4095
+ la %r0, 0(%r1)
+ la %r0, 0(%r15)
+ la %r0, 4095(%r1,%r15)
+ la %r0, 4095(%r15,%r1)
+ la %r15, 0
+
+#CHECK: larl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ larl %r0, -0x100000000
+#CHECK: larl %r0, .[[LAB:L.*]]-2 # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ larl %r0, -2
+#CHECK: larl %r0, .[[LAB:L.*]] # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ larl %r0, 0
+#CHECK: larl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ larl %r0, 0xfffffffe
+
+#CHECK: larl %r0, foo # encoding: [0xc0,0x00,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: larl %r15, foo # encoding: [0xc0,0xf0,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ larl %r0,foo
+ larl %r15,foo
+
+#CHECK: larl %r3, bar+100 # encoding: [0xc0,0x30,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: larl %r4, bar+100 # encoding: [0xc0,0x40,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ larl %r3,bar+100
+ larl %r4,bar+100
+
+#CHECK: larl %r7, frob@PLT # encoding: [0xc0,0x70,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: larl %r8, frob@PLT # encoding: [0xc0,0x80,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ larl %r7,frob@PLT
+ larl %r8,frob@PLT
+
+#CHECK: lay %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x71]
+#CHECK: lay %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x71]
+#CHECK: lay %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x71]
+#CHECK: lay %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x71]
+#CHECK: lay %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x71]
+#CHECK: lay %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x71]
+#CHECK: lay %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x71]
+#CHECK: lay %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x71]
+#CHECK: lay %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x71]
+#CHECK: lay %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x71]
+
+ lay %r0, -524288
+ lay %r0, -1
+ lay %r0, 0
+ lay %r0, 1
+ lay %r0, 524287
+ lay %r0, 0(%r1)
+ lay %r0, 0(%r15)
+ lay %r0, 524287(%r1,%r15)
+ lay %r0, 524287(%r15,%r1)
+ lay %r15, 0
+
+#CHECK: lb %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x76]
+#CHECK: lb %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x76]
+#CHECK: lb %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x76]
+#CHECK: lb %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x76]
+#CHECK: lb %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x76]
+#CHECK: lb %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x76]
+#CHECK: lb %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x76]
+#CHECK: lb %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x76]
+#CHECK: lb %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x76]
+#CHECK: lb %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x76]
+
+ lb %r0, -524288
+ lb %r0, -1
+ lb %r0, 0
+ lb %r0, 1
+ lb %r0, 524287
+ lb %r0, 0(%r1)
+ lb %r0, 0(%r15)
+ lb %r0, 524287(%r1,%r15)
+ lb %r0, 524287(%r15,%r1)
+ lb %r15, 0
+
+#CHECK: lbr %r0, %r15 # encoding: [0xb9,0x26,0x00,0x0f]
+#CHECK: lbr %r7, %r8 # encoding: [0xb9,0x26,0x00,0x78]
+#CHECK: lbr %r15, %r0 # encoding: [0xb9,0x26,0x00,0xf0]
+
+ lbr %r0, %r15
+ lbr %r7, %r8
+ lbr %r15, %r0
+
+#CHECK: lcdbr %f0, %f9 # encoding: [0xb3,0x13,0x00,0x09]
+#CHECK: lcdbr %f0, %f15 # encoding: [0xb3,0x13,0x00,0x0f]
+#CHECK: lcdbr %f15, %f0 # encoding: [0xb3,0x13,0x00,0xf0]
+#CHECK: lcdbr %f15, %f9 # encoding: [0xb3,0x13,0x00,0xf9]
+
+ lcdbr %f0,%f9
+ lcdbr %f0,%f15
+ lcdbr %f15,%f0
+ lcdbr %f15,%f9
+
+#CHECK: lcebr %f0, %f9 # encoding: [0xb3,0x03,0x00,0x09]
+#CHECK: lcebr %f0, %f15 # encoding: [0xb3,0x03,0x00,0x0f]
+#CHECK: lcebr %f15, %f0 # encoding: [0xb3,0x03,0x00,0xf0]
+#CHECK: lcebr %f15, %f9 # encoding: [0xb3,0x03,0x00,0xf9]
+
+ lcebr %f0,%f9
+ lcebr %f0,%f15
+ lcebr %f15,%f0
+ lcebr %f15,%f9
+
+#CHECK: lcgfr %r0, %r0 # encoding: [0xb9,0x13,0x00,0x00]
+#CHECK: lcgfr %r0, %r15 # encoding: [0xb9,0x13,0x00,0x0f]
+#CHECK: lcgfr %r15, %r0 # encoding: [0xb9,0x13,0x00,0xf0]
+#CHECK: lcgfr %r7, %r8 # encoding: [0xb9,0x13,0x00,0x78]
+
+ lcgfr %r0,%r0
+ lcgfr %r0,%r15
+ lcgfr %r15,%r0
+ lcgfr %r7,%r8
+
+#CHECK: lcgr %r0, %r0 # encoding: [0xb9,0x03,0x00,0x00]
+#CHECK: lcgr %r0, %r15 # encoding: [0xb9,0x03,0x00,0x0f]
+#CHECK: lcgr %r15, %r0 # encoding: [0xb9,0x03,0x00,0xf0]
+#CHECK: lcgr %r7, %r8 # encoding: [0xb9,0x03,0x00,0x78]
+
+ lcgr %r0,%r0
+ lcgr %r0,%r15
+ lcgr %r15,%r0
+ lcgr %r7,%r8
+
+#CHECK: lcr %r0, %r0 # encoding: [0x13,0x00]
+#CHECK: lcr %r0, %r15 # encoding: [0x13,0x0f]
+#CHECK: lcr %r15, %r0 # encoding: [0x13,0xf0]
+#CHECK: lcr %r7, %r8 # encoding: [0x13,0x78]
+
+ lcr %r0,%r0
+ lcr %r0,%r15
+ lcr %r15,%r0
+ lcr %r7,%r8
+
+#CHECK: lcxbr %f0, %f8 # encoding: [0xb3,0x43,0x00,0x08]
+#CHECK: lcxbr %f0, %f13 # encoding: [0xb3,0x43,0x00,0x0d]
+#CHECK: lcxbr %f13, %f0 # encoding: [0xb3,0x43,0x00,0xd0]
+#CHECK: lcxbr %f13, %f9 # encoding: [0xb3,0x43,0x00,0xd9]
+
+ lcxbr %f0,%f8
+ lcxbr %f0,%f13
+ lcxbr %f13,%f0
+ lcxbr %f13,%f9
+
+#CHECK: ld %f0, 0 # encoding: [0x68,0x00,0x00,0x00]
+#CHECK: ld %f0, 4095 # encoding: [0x68,0x00,0x0f,0xff]
+#CHECK: ld %f0, 0(%r1) # encoding: [0x68,0x00,0x10,0x00]
+#CHECK: ld %f0, 0(%r15) # encoding: [0x68,0x00,0xf0,0x00]
+#CHECK: ld %f0, 4095(%r1,%r15) # encoding: [0x68,0x01,0xff,0xff]
+#CHECK: ld %f0, 4095(%r15,%r1) # encoding: [0x68,0x0f,0x1f,0xff]
+#CHECK: ld %f15, 0 # encoding: [0x68,0xf0,0x00,0x00]
+
+ ld %f0, 0
+ ld %f0, 4095
+ ld %f0, 0(%r1)
+ ld %f0, 0(%r15)
+ ld %f0, 4095(%r1,%r15)
+ ld %f0, 4095(%r15,%r1)
+ ld %f15, 0
+
+#CHECK: ldeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x04]
+#CHECK: ldeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x04]
+#CHECK: ldeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x04]
+#CHECK: ldeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x04]
+#CHECK: ldeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x04]
+#CHECK: ldeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x04]
+#CHECK: ldeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x04]
+
+ ldeb %f0, 0
+ ldeb %f0, 4095
+ ldeb %f0, 0(%r1)
+ ldeb %f0, 0(%r15)
+ ldeb %f0, 4095(%r1,%r15)
+ ldeb %f0, 4095(%r15,%r1)
+ ldeb %f15, 0
+
+#CHECK: ldebr %f0, %f15 # encoding: [0xb3,0x04,0x00,0x0f]
+#CHECK: ldebr %f7, %f8 # encoding: [0xb3,0x04,0x00,0x78]
+#CHECK: ldebr %f15, %f0 # encoding: [0xb3,0x04,0x00,0xf0]
+
+ ldebr %f0, %f15
+ ldebr %f7, %f8
+ ldebr %f15, %f0
+
+#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]
+#CHECK: ldgr %f7, %r9 # encoding: [0xb3,0xc1,0x00,0x79]
+#CHECK: ldgr %f15, %r15 # encoding: [0xb3,0xc1,0x00,0xff]
+
+ ldgr %f0,%r0
+ ldgr %f0,%r15
+ ldgr %f15,%r0
+ ldgr %f7,%r9
+ ldgr %f15,%r15
+
+#CHECK: ldr %f0, %f9 # encoding: [0x28,0x09]
+#CHECK: ldr %f0, %f15 # encoding: [0x28,0x0f]
+#CHECK: ldr %f15, %f0 # encoding: [0x28,0xf0]
+#CHECK: ldr %f15, %f9 # encoding: [0x28,0xf9]
+
+ ldr %f0,%f9
+ ldr %f0,%f15
+ ldr %f15,%f0
+ ldr %f15,%f9
+
+#CHECK: ldxbr %f0, %f0 # encoding: [0xb3,0x45,0x00,0x00]
+#CHECK: ldxbr %f0, %f13 # encoding: [0xb3,0x45,0x00,0x0d]
+#CHECK: ldxbr %f8, %f12 # encoding: [0xb3,0x45,0x00,0x8c]
+#CHECK: ldxbr %f13, %f0 # encoding: [0xb3,0x45,0x00,0xd0]
+#CHECK: ldxbr %f13, %f13 # encoding: [0xb3,0x45,0x00,0xdd]
+
+ ldxbr %f0, %f0
+ ldxbr %f0, %f13
+ ldxbr %f8, %f12
+ ldxbr %f13, %f0
+ ldxbr %f13, %f13
+
+#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]
+#CHECK: ldy %f0, 1 # encoding: [0xed,0x00,0x00,0x01,0x00,0x65]
+#CHECK: ldy %f0, 524287 # encoding: [0xed,0x00,0x0f,0xff,0x7f,0x65]
+#CHECK: ldy %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x65]
+#CHECK: ldy %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x65]
+#CHECK: ldy %f0, 524287(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x7f,0x65]
+#CHECK: ldy %f0, 524287(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x7f,0x65]
+#CHECK: ldy %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x65]
+
+ ldy %f0, -524288
+ ldy %f0, -1
+ ldy %f0, 0
+ ldy %f0, 1
+ ldy %f0, 524287
+ ldy %f0, 0(%r1)
+ ldy %f0, 0(%r15)
+ ldy %f0, 524287(%r1,%r15)
+ ldy %f0, 524287(%r15,%r1)
+ ldy %f15, 0
+
+#CHECK: le %f0, 0 # encoding: [0x78,0x00,0x00,0x00]
+#CHECK: le %f0, 4095 # encoding: [0x78,0x00,0x0f,0xff]
+#CHECK: le %f0, 0(%r1) # encoding: [0x78,0x00,0x10,0x00]
+#CHECK: le %f0, 0(%r15) # encoding: [0x78,0x00,0xf0,0x00]
+#CHECK: le %f0, 4095(%r1,%r15) # encoding: [0x78,0x01,0xff,0xff]
+#CHECK: le %f0, 4095(%r15,%r1) # encoding: [0x78,0x0f,0x1f,0xff]
+#CHECK: le %f15, 0 # encoding: [0x78,0xf0,0x00,0x00]
+
+ le %f0, 0
+ le %f0, 4095
+ le %f0, 0(%r1)
+ le %f0, 0(%r15)
+ le %f0, 4095(%r1,%r15)
+ le %f0, 4095(%r15,%r1)
+ le %f15, 0
+
+#CHECK: ledbr %f0, %f0 # encoding: [0xb3,0x44,0x00,0x00]
+#CHECK: ledbr %f0, %f15 # encoding: [0xb3,0x44,0x00,0x0f]
+#CHECK: ledbr %f7, %f8 # encoding: [0xb3,0x44,0x00,0x78]
+#CHECK: ledbr %f15, %f0 # encoding: [0xb3,0x44,0x00,0xf0]
+#CHECK: ledbr %f15, %f15 # encoding: [0xb3,0x44,0x00,0xff]
+
+ ledbr %f0, %f0
+ ledbr %f0, %f15
+ ledbr %f7, %f8
+ ledbr %f15, %f0
+ ledbr %f15, %f15
+
+#CHECK: ler %f0, %f9 # encoding: [0x38,0x09]
+#CHECK: ler %f0, %f15 # encoding: [0x38,0x0f]
+#CHECK: ler %f15, %f0 # encoding: [0x38,0xf0]
+#CHECK: ler %f15, %f9 # encoding: [0x38,0xf9]
+
+ ler %f0,%f9
+ ler %f0,%f15
+ ler %f15,%f0
+ ler %f15,%f9
+
+#CHECK: lexbr %f0, %f0 # encoding: [0xb3,0x46,0x00,0x00]
+#CHECK: lexbr %f0, %f13 # encoding: [0xb3,0x46,0x00,0x0d]
+#CHECK: lexbr %f8, %f12 # encoding: [0xb3,0x46,0x00,0x8c]
+#CHECK: lexbr %f13, %f0 # encoding: [0xb3,0x46,0x00,0xd0]
+#CHECK: lexbr %f13, %f13 # encoding: [0xb3,0x46,0x00,0xdd]
+
+ lexbr %f0, %f0
+ lexbr %f0, %f13
+ lexbr %f8, %f12
+ lexbr %f13, %f0
+ lexbr %f13, %f13
+
+#CHECK: ley %f0, -524288 # encoding: [0xed,0x00,0x00,0x00,0x80,0x64]
+#CHECK: ley %f0, -1 # encoding: [0xed,0x00,0x0f,0xff,0xff,0x64]
+#CHECK: ley %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x64]
+#CHECK: ley %f0, 1 # encoding: [0xed,0x00,0x00,0x01,0x00,0x64]
+#CHECK: ley %f0, 524287 # encoding: [0xed,0x00,0x0f,0xff,0x7f,0x64]
+#CHECK: ley %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x64]
+#CHECK: ley %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x64]
+#CHECK: ley %f0, 524287(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x7f,0x64]
+#CHECK: ley %f0, 524287(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x7f,0x64]
+#CHECK: ley %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x64]
+
+ ley %f0, -524288
+ ley %f0, -1
+ ley %f0, 0
+ ley %f0, 1
+ ley %f0, 524287
+ ley %f0, 0(%r1)
+ ley %f0, 0(%r15)
+ ley %f0, 524287(%r1,%r15)
+ ley %f0, 524287(%r15,%r1)
+ ley %f15, 0
+
+#CHECK: lg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x04]
+#CHECK: lg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x04]
+#CHECK: lg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x04]
+#CHECK: lg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x04]
+#CHECK: lg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x04]
+#CHECK: lg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x04]
+#CHECK: lg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x04]
+#CHECK: lg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x04]
+#CHECK: lg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x04]
+#CHECK: lg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x04]
+
+ lg %r0, -524288
+ lg %r0, -1
+ lg %r0, 0
+ lg %r0, 1
+ lg %r0, 524287
+ lg %r0, 0(%r1)
+ lg %r0, 0(%r15)
+ lg %r0, 524287(%r1,%r15)
+ lg %r0, 524287(%r15,%r1)
+ lg %r15, 0
+
+#CHECK: lgb %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x77]
+#CHECK: lgb %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x77]
+#CHECK: lgb %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x77]
+#CHECK: lgb %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x77]
+#CHECK: lgb %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x77]
+#CHECK: lgb %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x77]
+#CHECK: lgb %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x77]
+#CHECK: lgb %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x77]
+#CHECK: lgb %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x77]
+#CHECK: lgb %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x77]
+
+ lgb %r0, -524288
+ lgb %r0, -1
+ lgb %r0, 0
+ lgb %r0, 1
+ lgb %r0, 524287
+ lgb %r0, 0(%r1)
+ lgb %r0, 0(%r15)
+ lgb %r0, 524287(%r1,%r15)
+ lgb %r0, 524287(%r15,%r1)
+ lgb %r15, 0
+
+
+#CHECK: lgbr %r0, %r15 # encoding: [0xb9,0x06,0x00,0x0f]
+#CHECK: lgbr %r7, %r8 # encoding: [0xb9,0x06,0x00,0x78]
+#CHECK: lgbr %r15, %r0 # encoding: [0xb9,0x06,0x00,0xf0]
+
+ lgbr %r0, %r15
+ lgbr %r7, %r8
+ lgbr %r15, %r0
+
+#CHECK: lgdr %r0, %f0 # encoding: [0xb3,0xcd,0x00,0x00]
+#CHECK: lgdr %r0, %f15 # encoding: [0xb3,0xcd,0x00,0x0f]
+#CHECK: lgdr %r15, %f0 # encoding: [0xb3,0xcd,0x00,0xf0]
+#CHECK: lgdr %r8, %f8 # encoding: [0xb3,0xcd,0x00,0x88]
+#CHECK: lgdr %r15, %f15 # encoding: [0xb3,0xcd,0x00,0xff]
+
+ lgdr %r0,%f0
+ lgdr %r0,%f15
+ lgdr %r15,%f0
+ lgdr %r8,%f8
+ lgdr %r15,%f15
+
+#CHECK: lgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x14]
+#CHECK: lgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x14]
+#CHECK: lgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x14]
+#CHECK: lgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x14]
+#CHECK: lgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x14]
+#CHECK: lgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x14]
+#CHECK: lgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x14]
+#CHECK: lgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x14]
+#CHECK: lgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x14]
+#CHECK: lgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x14]
+
+ lgf %r0, -524288
+ lgf %r0, -1
+ lgf %r0, 0
+ lgf %r0, 1
+ lgf %r0, 524287
+ lgf %r0, 0(%r1)
+ lgf %r0, 0(%r15)
+ lgf %r0, 524287(%r1,%r15)
+ lgf %r0, 524287(%r15,%r1)
+ lgf %r15, 0
+
+
+#CHECK: lgfi %r0, -2147483648 # encoding: [0xc0,0x01,0x80,0x00,0x00,0x00]
+#CHECK: lgfi %r0, -1 # encoding: [0xc0,0x01,0xff,0xff,0xff,0xff]
+#CHECK: lgfi %r0, 0 # encoding: [0xc0,0x01,0x00,0x00,0x00,0x00]
+#CHECK: lgfi %r0, 1 # encoding: [0xc0,0x01,0x00,0x00,0x00,0x01]
+#CHECK: lgfi %r0, 2147483647 # encoding: [0xc0,0x01,0x7f,0xff,0xff,0xff]
+#CHECK: lgfi %r15, 0 # encoding: [0xc0,0xf1,0x00,0x00,0x00,0x00]
+
+ lgfi %r0, -1 << 31
+ lgfi %r0, -1
+ lgfi %r0, 0
+ lgfi %r0, 1
+ lgfi %r0, (1 << 31) - 1
+ lgfi %r15, 0
+
+#CHECK: lgfr %r0, %r15 # encoding: [0xb9,0x14,0x00,0x0f]
+#CHECK: lgfr %r7, %r8 # encoding: [0xb9,0x14,0x00,0x78]
+#CHECK: lgfr %r15, %r0 # encoding: [0xb9,0x14,0x00,0xf0]
+
+ lgfr %r0, %r15
+ lgfr %r7, %r8
+ lgfr %r15, %r0
+
+#CHECK: lgfrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lgfrl %r0, -0x100000000
+#CHECK: lgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lgfrl %r0, -2
+#CHECK: lgfrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lgfrl %r0, 0
+#CHECK: lgfrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lgfrl %r0, 0xfffffffe
+
+#CHECK: lgfrl %r0, foo # encoding: [0xc4,0x0c,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: lgfrl %r15, foo # encoding: [0xc4,0xfc,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ lgfrl %r0,foo
+ lgfrl %r15,foo
+
+#CHECK: lgfrl %r3, bar+100 # encoding: [0xc4,0x3c,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: lgfrl %r4, bar+100 # encoding: [0xc4,0x4c,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ lgfrl %r3,bar+100
+ lgfrl %r4,bar+100
+
+#CHECK: lgfrl %r7, frob@PLT # encoding: [0xc4,0x7c,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: lgfrl %r8, frob@PLT # encoding: [0xc4,0x8c,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ lgfrl %r7,frob@PLT
+ lgfrl %r8,frob@PLT
+
+#CHECK: lgh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x15]
+#CHECK: lgh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x15]
+#CHECK: lgh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x15]
+#CHECK: lgh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x15]
+#CHECK: lgh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x15]
+#CHECK: lgh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x15]
+#CHECK: lgh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x15]
+#CHECK: lgh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x15]
+#CHECK: lgh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x15]
+#CHECK: lgh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x15]
+
+ lgh %r0, -524288
+ lgh %r0, -1
+ lgh %r0, 0
+ lgh %r0, 1
+ lgh %r0, 524287
+ lgh %r0, 0(%r1)
+ lgh %r0, 0(%r15)
+ lgh %r0, 524287(%r1,%r15)
+ lgh %r0, 524287(%r15,%r1)
+ lgh %r15, 0
+
+
+#CHECK: lghi %r0, -32768 # encoding: [0xa7,0x09,0x80,0x00]
+#CHECK: lghi %r0, -1 # encoding: [0xa7,0x09,0xff,0xff]
+#CHECK: lghi %r0, 0 # encoding: [0xa7,0x09,0x00,0x00]
+#CHECK: lghi %r0, 1 # encoding: [0xa7,0x09,0x00,0x01]
+#CHECK: lghi %r0, 32767 # encoding: [0xa7,0x09,0x7f,0xff]
+#CHECK: lghi %r15, 0 # encoding: [0xa7,0xf9,0x00,0x00]
+
+ lghi %r0, -32768
+ lghi %r0, -1
+ lghi %r0, 0
+ lghi %r0, 1
+ lghi %r0, 32767
+ lghi %r15, 0
+
+#CHECK: lghr %r0, %r15 # encoding: [0xb9,0x07,0x00,0x0f]
+#CHECK: lghr %r7, %r8 # encoding: [0xb9,0x07,0x00,0x78]
+#CHECK: lghr %r15, %r0 # encoding: [0xb9,0x07,0x00,0xf0]
+
+ lghr %r0, %r15
+ lghr %r7, %r8
+ lghr %r15, %r0
+
+#CHECK: lghrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lghrl %r0, -0x100000000
+#CHECK: lghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lghrl %r0, -2
+#CHECK: lghrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lghrl %r0, 0
+#CHECK: lghrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lghrl %r0, 0xfffffffe
+
+#CHECK: lghrl %r0, foo # encoding: [0xc4,0x04,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: lghrl %r15, foo # encoding: [0xc4,0xf4,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ lghrl %r0,foo
+ lghrl %r15,foo
+
+#CHECK: lghrl %r3, bar+100 # encoding: [0xc4,0x34,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: lghrl %r4, bar+100 # encoding: [0xc4,0x44,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ lghrl %r3,bar+100
+ lghrl %r4,bar+100
+
+#CHECK: lghrl %r7, frob@PLT # encoding: [0xc4,0x74,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: lghrl %r8, frob@PLT # encoding: [0xc4,0x84,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ lghrl %r7,frob@PLT
+ lghrl %r8,frob@PLT
+
+#CHECK: lgr %r0, %r9 # encoding: [0xb9,0x04,0x00,0x09]
+#CHECK: lgr %r0, %r15 # encoding: [0xb9,0x04,0x00,0x0f]
+#CHECK: lgr %r15, %r0 # encoding: [0xb9,0x04,0x00,0xf0]
+#CHECK: lgr %r15, %r9 # encoding: [0xb9,0x04,0x00,0xf9]
+
+ lgr %r0,%r9
+ lgr %r0,%r15
+ lgr %r15,%r0
+ lgr %r15,%r9
+
+#CHECK: lgrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lgrl %r0, -0x100000000
+#CHECK: lgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lgrl %r0, -2
+#CHECK: lgrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lgrl %r0, 0
+#CHECK: lgrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lgrl %r0, 0xfffffffe
+
+#CHECK: lgrl %r0, foo # encoding: [0xc4,0x08,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: lgrl %r15, foo # encoding: [0xc4,0xf8,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ lgrl %r0,foo
+ lgrl %r15,foo
+
+#CHECK: lgrl %r3, bar+100 # encoding: [0xc4,0x38,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: lgrl %r4, bar+100 # encoding: [0xc4,0x48,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ lgrl %r3,bar+100
+ lgrl %r4,bar+100
+
+#CHECK: lgrl %r7, frob@PLT # encoding: [0xc4,0x78,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: lgrl %r8, frob@PLT # encoding: [0xc4,0x88,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ lgrl %r7,frob@PLT
+ lgrl %r8,frob@PLT
+
+#CHECK: lh %r0, 0 # encoding: [0x48,0x00,0x00,0x00]
+#CHECK: lh %r0, 4095 # encoding: [0x48,0x00,0x0f,0xff]
+#CHECK: lh %r0, 0(%r1) # encoding: [0x48,0x00,0x10,0x00]
+#CHECK: lh %r0, 0(%r15) # encoding: [0x48,0x00,0xf0,0x00]
+#CHECK: lh %r0, 4095(%r1,%r15) # encoding: [0x48,0x01,0xff,0xff]
+#CHECK: lh %r0, 4095(%r15,%r1) # encoding: [0x48,0x0f,0x1f,0xff]
+#CHECK: lh %r15, 0 # encoding: [0x48,0xf0,0x00,0x00]
+
+ lh %r0, 0
+ lh %r0, 4095
+ lh %r0, 0(%r1)
+ lh %r0, 0(%r15)
+ lh %r0, 4095(%r1,%r15)
+ lh %r0, 4095(%r15,%r1)
+ lh %r15, 0
+
+#CHECK: lhi %r0, -32768 # encoding: [0xa7,0x08,0x80,0x00]
+#CHECK: lhi %r0, -1 # encoding: [0xa7,0x08,0xff,0xff]
+#CHECK: lhi %r0, 0 # encoding: [0xa7,0x08,0x00,0x00]
+#CHECK: lhi %r0, 1 # encoding: [0xa7,0x08,0x00,0x01]
+#CHECK: lhi %r0, 32767 # encoding: [0xa7,0x08,0x7f,0xff]
+#CHECK: lhi %r15, 0 # encoding: [0xa7,0xf8,0x00,0x00]
+
+ lhi %r0, -32768
+ lhi %r0, -1
+ lhi %r0, 0
+ lhi %r0, 1
+ lhi %r0, 32767
+ lhi %r15, 0
+
+#CHECK: lhr %r0, %r15 # encoding: [0xb9,0x27,0x00,0x0f]
+#CHECK: lhr %r7, %r8 # encoding: [0xb9,0x27,0x00,0x78]
+#CHECK: lhr %r15, %r0 # encoding: [0xb9,0x27,0x00,0xf0]
+
+ lhr %r0, %r15
+ lhr %r7, %r8
+ lhr %r15, %r0
+
+#CHECK: lhrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lhrl %r0, -0x100000000
+#CHECK: lhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lhrl %r0, -2
+#CHECK: lhrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lhrl %r0, 0
+#CHECK: lhrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lhrl %r0, 0xfffffffe
+
+#CHECK: lhrl %r0, foo # encoding: [0xc4,0x05,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: lhrl %r15, foo # encoding: [0xc4,0xf5,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ lhrl %r0,foo
+ lhrl %r15,foo
+
+#CHECK: lhrl %r3, bar+100 # encoding: [0xc4,0x35,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: lhrl %r4, bar+100 # encoding: [0xc4,0x45,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ lhrl %r3,bar+100
+ lhrl %r4,bar+100
+
+#CHECK: lhrl %r7, frob@PLT # encoding: [0xc4,0x75,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: lhrl %r8, frob@PLT # encoding: [0xc4,0x85,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ lhrl %r7,frob@PLT
+ lhrl %r8,frob@PLT
+
+#CHECK: lhy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x78]
+#CHECK: lhy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x78]
+#CHECK: lhy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x78]
+#CHECK: lhy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x78]
+#CHECK: lhy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x78]
+#CHECK: lhy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x78]
+#CHECK: lhy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x78]
+#CHECK: lhy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x78]
+#CHECK: lhy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x78]
+#CHECK: lhy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x78]
+
+ lhy %r0, -524288
+ lhy %r0, -1
+ lhy %r0, 0
+ lhy %r0, 1
+ lhy %r0, 524287
+ lhy %r0, 0(%r1)
+ lhy %r0, 0(%r15)
+ lhy %r0, 524287(%r1,%r15)
+ lhy %r0, 524287(%r15,%r1)
+ lhy %r15, 0
+
+#CHECK: llc %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x94]
+#CHECK: llc %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x94]
+#CHECK: llc %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x94]
+#CHECK: llc %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x94]
+#CHECK: llc %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x94]
+#CHECK: llc %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x94]
+#CHECK: llc %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x94]
+#CHECK: llc %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x94]
+#CHECK: llc %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x94]
+#CHECK: llc %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x94]
+
+ llc %r0, -524288
+ llc %r0, -1
+ llc %r0, 0
+ llc %r0, 1
+ llc %r0, 524287
+ llc %r0, 0(%r1)
+ llc %r0, 0(%r15)
+ llc %r0, 524287(%r1,%r15)
+ llc %r0, 524287(%r15,%r1)
+ llc %r15, 0
+
+#CHECK: llcr %r0, %r15 # encoding: [0xb9,0x94,0x00,0x0f]
+#CHECK: llcr %r7, %r8 # encoding: [0xb9,0x94,0x00,0x78]
+#CHECK: llcr %r15, %r0 # encoding: [0xb9,0x94,0x00,0xf0]
+
+ llcr %r0, %r15
+ llcr %r7, %r8
+ llcr %r15, %r0
+
+#CHECK: llgc %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x90]
+#CHECK: llgc %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x90]
+#CHECK: llgc %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x90]
+#CHECK: llgc %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x90]
+#CHECK: llgc %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x90]
+#CHECK: llgc %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x90]
+#CHECK: llgc %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x90]
+#CHECK: llgc %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x90]
+#CHECK: llgc %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x90]
+#CHECK: llgc %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x90]
+
+ llgc %r0, -524288
+ llgc %r0, -1
+ llgc %r0, 0
+ llgc %r0, 1
+ llgc %r0, 524287
+ llgc %r0, 0(%r1)
+ llgc %r0, 0(%r15)
+ llgc %r0, 524287(%r1,%r15)
+ llgc %r0, 524287(%r15,%r1)
+ llgc %r15, 0
+
+
+#CHECK: llgcr %r0, %r15 # encoding: [0xb9,0x84,0x00,0x0f]
+#CHECK: llgcr %r7, %r8 # encoding: [0xb9,0x84,0x00,0x78]
+#CHECK: llgcr %r15, %r0 # encoding: [0xb9,0x84,0x00,0xf0]
+
+ llgcr %r0, %r15
+ llgcr %r7, %r8
+ llgcr %r15, %r0
+
+#CHECK: llgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x16]
+#CHECK: llgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x16]
+#CHECK: llgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x16]
+#CHECK: llgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x16]
+#CHECK: llgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x16]
+#CHECK: llgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x16]
+#CHECK: llgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x16]
+#CHECK: llgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x16]
+#CHECK: llgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x16]
+#CHECK: llgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x16]
+
+ llgf %r0, -524288
+ llgf %r0, -1
+ llgf %r0, 0
+ llgf %r0, 1
+ llgf %r0, 524287
+ llgf %r0, 0(%r1)
+ llgf %r0, 0(%r15)
+ llgf %r0, 524287(%r1,%r15)
+ llgf %r0, 524287(%r15,%r1)
+ llgf %r15, 0
+
+
+#CHECK: llgfr %r0, %r15 # encoding: [0xb9,0x16,0x00,0x0f]
+#CHECK: llgfr %r7, %r8 # encoding: [0xb9,0x16,0x00,0x78]
+#CHECK: llgfr %r15, %r0 # encoding: [0xb9,0x16,0x00,0xf0]
+
+ llgfr %r0, %r15
+ llgfr %r7, %r8
+ llgfr %r15, %r0
+
+#CHECK: llgfrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ llgfrl %r0, -0x100000000
+#CHECK: llgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ llgfrl %r0, -2
+#CHECK: llgfrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ llgfrl %r0, 0
+#CHECK: llgfrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ llgfrl %r0, 0xfffffffe
+
+#CHECK: llgfrl %r0, foo # encoding: [0xc4,0x0e,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: llgfrl %r15, foo # encoding: [0xc4,0xfe,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ llgfrl %r0,foo
+ llgfrl %r15,foo
+
+#CHECK: llgfrl %r3, bar+100 # encoding: [0xc4,0x3e,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: llgfrl %r4, bar+100 # encoding: [0xc4,0x4e,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ llgfrl %r3,bar+100
+ llgfrl %r4,bar+100
+
+#CHECK: llgfrl %r7, frob@PLT # encoding: [0xc4,0x7e,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: llgfrl %r8, frob@PLT # encoding: [0xc4,0x8e,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ llgfrl %r7,frob@PLT
+ llgfrl %r8,frob@PLT
+
+#CHECK: llgh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x91]
+#CHECK: llgh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x91]
+#CHECK: llgh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x91]
+#CHECK: llgh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x91]
+#CHECK: llgh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x91]
+#CHECK: llgh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x91]
+#CHECK: llgh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x91]
+#CHECK: llgh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x91]
+#CHECK: llgh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x91]
+#CHECK: llgh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x91]
+
+ llgh %r0, -524288
+ llgh %r0, -1
+ llgh %r0, 0
+ llgh %r0, 1
+ llgh %r0, 524287
+ llgh %r0, 0(%r1)
+ llgh %r0, 0(%r15)
+ llgh %r0, 524287(%r1,%r15)
+ llgh %r0, 524287(%r15,%r1)
+ llgh %r15, 0
+
+
+#CHECK: llghr %r0, %r15 # encoding: [0xb9,0x85,0x00,0x0f]
+#CHECK: llghr %r7, %r8 # encoding: [0xb9,0x85,0x00,0x78]
+#CHECK: llghr %r15, %r0 # encoding: [0xb9,0x85,0x00,0xf0]
+
+ llghr %r0, %r15
+ llghr %r7, %r8
+ llghr %r15, %r0
+
+#CHECK: llghrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ llghrl %r0, -0x100000000
+#CHECK: llghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ llghrl %r0, -2
+#CHECK: llghrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ llghrl %r0, 0
+#CHECK: llghrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ llghrl %r0, 0xfffffffe
+
+#CHECK: llghrl %r0, foo # encoding: [0xc4,0x06,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: llghrl %r15, foo # encoding: [0xc4,0xf6,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ llghrl %r0,foo
+ llghrl %r15,foo
+
+#CHECK: llghrl %r3, bar+100 # encoding: [0xc4,0x36,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: llghrl %r4, bar+100 # encoding: [0xc4,0x46,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ llghrl %r3,bar+100
+ llghrl %r4,bar+100
+
+#CHECK: llghrl %r7, frob@PLT # encoding: [0xc4,0x76,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: llghrl %r8, frob@PLT # encoding: [0xc4,0x86,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ llghrl %r7,frob@PLT
+ llghrl %r8,frob@PLT
+
+#CHECK: llh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x95]
+#CHECK: llh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x95]
+#CHECK: llh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x95]
+#CHECK: llh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x95]
+#CHECK: llh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x95]
+#CHECK: llh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x95]
+#CHECK: llh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x95]
+#CHECK: llh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x95]
+#CHECK: llh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x95]
+#CHECK: llh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x95]
+
+ llh %r0, -524288
+ llh %r0, -1
+ llh %r0, 0
+ llh %r0, 1
+ llh %r0, 524287
+ llh %r0, 0(%r1)
+ llh %r0, 0(%r15)
+ llh %r0, 524287(%r1,%r15)
+ llh %r0, 524287(%r15,%r1)
+ llh %r15, 0
+
+#CHECK: llhr %r0, %r15 # encoding: [0xb9,0x95,0x00,0x0f]
+#CHECK: llhr %r7, %r8 # encoding: [0xb9,0x95,0x00,0x78]
+#CHECK: llhr %r15, %r0 # encoding: [0xb9,0x95,0x00,0xf0]
+
+ llhr %r0, %r15
+ llhr %r7, %r8
+ llhr %r15, %r0
+
+#CHECK: llhrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ llhrl %r0, -0x100000000
+#CHECK: llhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ llhrl %r0, -2
+#CHECK: llhrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ llhrl %r0, 0
+#CHECK: llhrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ llhrl %r0, 0xfffffffe
+
+#CHECK: llhrl %r0, foo # encoding: [0xc4,0x02,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: llhrl %r15, foo # encoding: [0xc4,0xf2,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ llhrl %r0,foo
+ llhrl %r15,foo
+
+#CHECK: llhrl %r3, bar+100 # encoding: [0xc4,0x32,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: llhrl %r4, bar+100 # encoding: [0xc4,0x42,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ llhrl %r3,bar+100
+ llhrl %r4,bar+100
+
+#CHECK: llhrl %r7, frob@PLT # encoding: [0xc4,0x72,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: llhrl %r8, frob@PLT # encoding: [0xc4,0x82,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ llhrl %r7,frob@PLT
+ llhrl %r8,frob@PLT
+
+#CHECK: llihf %r0, 0 # encoding: [0xc0,0x0e,0x00,0x00,0x00,0x00]
+#CHECK: llihf %r0, 4294967295 # encoding: [0xc0,0x0e,0xff,0xff,0xff,0xff]
+#CHECK: llihf %r15, 0 # encoding: [0xc0,0xfe,0x00,0x00,0x00,0x00]
+
+ llihf %r0, 0
+ llihf %r0, 0xffffffff
+ llihf %r15, 0
+
+#CHECK: llihh %r0, 0 # encoding: [0xa5,0x0c,0x00,0x00]
+#CHECK: llihh %r0, 32768 # encoding: [0xa5,0x0c,0x80,0x00]
+#CHECK: llihh %r0, 65535 # encoding: [0xa5,0x0c,0xff,0xff]
+#CHECK: llihh %r15, 0 # encoding: [0xa5,0xfc,0x00,0x00]
+
+ llihh %r0, 0
+ llihh %r0, 0x8000
+ llihh %r0, 0xffff
+ llihh %r15, 0
+
+#CHECK: llihl %r0, 0 # encoding: [0xa5,0x0d,0x00,0x00]
+#CHECK: llihl %r0, 32768 # encoding: [0xa5,0x0d,0x80,0x00]
+#CHECK: llihl %r0, 65535 # encoding: [0xa5,0x0d,0xff,0xff]
+#CHECK: llihl %r15, 0 # encoding: [0xa5,0xfd,0x00,0x00]
+
+ llihl %r0, 0
+ llihl %r0, 0x8000
+ llihl %r0, 0xffff
+ llihl %r15, 0
+
+#CHECK: llilf %r0, 0 # encoding: [0xc0,0x0f,0x00,0x00,0x00,0x00]
+#CHECK: llilf %r0, 4294967295 # encoding: [0xc0,0x0f,0xff,0xff,0xff,0xff]
+#CHECK: llilf %r15, 0 # encoding: [0xc0,0xff,0x00,0x00,0x00,0x00]
+
+ llilf %r0, 0
+ llilf %r0, 0xffffffff
+ llilf %r15, 0
+
+#CHECK: llilh %r0, 0 # encoding: [0xa5,0x0e,0x00,0x00]
+#CHECK: llilh %r0, 32768 # encoding: [0xa5,0x0e,0x80,0x00]
+#CHECK: llilh %r0, 65535 # encoding: [0xa5,0x0e,0xff,0xff]
+#CHECK: llilh %r15, 0 # encoding: [0xa5,0xfe,0x00,0x00]
+
+ llilh %r0, 0
+ llilh %r0, 0x8000
+ llilh %r0, 0xffff
+ llilh %r15, 0
+
+#CHECK: llill %r0, 0 # encoding: [0xa5,0x0f,0x00,0x00]
+#CHECK: llill %r0, 32768 # encoding: [0xa5,0x0f,0x80,0x00]
+#CHECK: llill %r0, 65535 # encoding: [0xa5,0x0f,0xff,0xff]
+#CHECK: llill %r15, 0 # encoding: [0xa5,0xff,0x00,0x00]
+
+ llill %r0, 0
+ llill %r0, 0x8000
+ llill %r0, 0xffff
+ llill %r15, 0
+
+#CHECK: lmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x04]
+#CHECK: lmg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x04]
+#CHECK: lmg %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x04]
+#CHECK: lmg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x04]
+#CHECK: lmg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x04]
+#CHECK: lmg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x04]
+#CHECK: lmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x04]
+#CHECK: lmg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x04]
+#CHECK: lmg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x04]
+#CHECK: lmg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x04]
+#CHECK: lmg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x04]
+#CHECK: lmg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x04]
+#CHECK: lmg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x04]
+
+ lmg %r0,%r0,0
+ lmg %r0,%r15,0
+ lmg %r14,%r15,0
+ lmg %r15,%r15,0
+ lmg %r0,%r0,-524288
+ lmg %r0,%r0,-1
+ lmg %r0,%r0,0
+ lmg %r0,%r0,1
+ lmg %r0,%r0,524287
+ lmg %r0,%r0,0(%r1)
+ lmg %r0,%r0,0(%r15)
+ lmg %r0,%r0,524287(%r1)
+ lmg %r0,%r0,524287(%r15)
+
+#CHECK: lndbr %f0, %f9 # encoding: [0xb3,0x11,0x00,0x09]
+#CHECK: lndbr %f0, %f15 # encoding: [0xb3,0x11,0x00,0x0f]
+#CHECK: lndbr %f15, %f0 # encoding: [0xb3,0x11,0x00,0xf0]
+#CHECK: lndbr %f15, %f9 # encoding: [0xb3,0x11,0x00,0xf9]
+
+ lndbr %f0,%f9
+ lndbr %f0,%f15
+ lndbr %f15,%f0
+ lndbr %f15,%f9
+
+#CHECK: lnebr %f0, %f9 # encoding: [0xb3,0x01,0x00,0x09]
+#CHECK: lnebr %f0, %f15 # encoding: [0xb3,0x01,0x00,0x0f]
+#CHECK: lnebr %f15, %f0 # encoding: [0xb3,0x01,0x00,0xf0]
+#CHECK: lnebr %f15, %f9 # encoding: [0xb3,0x01,0x00,0xf9]
+
+ lnebr %f0,%f9
+ lnebr %f0,%f15
+ lnebr %f15,%f0
+ lnebr %f15,%f9
+
+#CHECK: lnxbr %f0, %f8 # encoding: [0xb3,0x41,0x00,0x08]
+#CHECK: lnxbr %f0, %f13 # encoding: [0xb3,0x41,0x00,0x0d]
+#CHECK: lnxbr %f13, %f0 # encoding: [0xb3,0x41,0x00,0xd0]
+#CHECK: lnxbr %f13, %f9 # encoding: [0xb3,0x41,0x00,0xd9]
+
+ lnxbr %f0,%f8
+ lnxbr %f0,%f13
+ lnxbr %f13,%f0
+ lnxbr %f13,%f9
+
+#CHECK: lpdbr %f0, %f9 # encoding: [0xb3,0x10,0x00,0x09]
+#CHECK: lpdbr %f0, %f15 # encoding: [0xb3,0x10,0x00,0x0f]
+#CHECK: lpdbr %f15, %f0 # encoding: [0xb3,0x10,0x00,0xf0]
+#CHECK: lpdbr %f15, %f9 # encoding: [0xb3,0x10,0x00,0xf9]
+
+ lpdbr %f0,%f9
+ lpdbr %f0,%f15
+ lpdbr %f15,%f0
+ lpdbr %f15,%f9
+
+#CHECK: lpebr %f0, %f9 # encoding: [0xb3,0x00,0x00,0x09]
+#CHECK: lpebr %f0, %f15 # encoding: [0xb3,0x00,0x00,0x0f]
+#CHECK: lpebr %f15, %f0 # encoding: [0xb3,0x00,0x00,0xf0]
+#CHECK: lpebr %f15, %f9 # encoding: [0xb3,0x00,0x00,0xf9]
+
+ lpebr %f0,%f9
+ lpebr %f0,%f15
+ lpebr %f15,%f0
+ lpebr %f15,%f9
+
+#CHECK: lpxbr %f0, %f8 # encoding: [0xb3,0x40,0x00,0x08]
+#CHECK: lpxbr %f0, %f13 # encoding: [0xb3,0x40,0x00,0x0d]
+#CHECK: lpxbr %f13, %f0 # encoding: [0xb3,0x40,0x00,0xd0]
+#CHECK: lpxbr %f13, %f9 # encoding: [0xb3,0x40,0x00,0xd9]
+
+ lpxbr %f0,%f8
+ lpxbr %f0,%f13
+ lpxbr %f13,%f0
+ lpxbr %f13,%f9
+
+#CHECK: lr %r0, %r9 # encoding: [0x18,0x09]
+#CHECK: lr %r0, %r15 # encoding: [0x18,0x0f]
+#CHECK: lr %r15, %r0 # encoding: [0x18,0xf0]
+#CHECK: lr %r15, %r9 # encoding: [0x18,0xf9]
+
+ lr %r0,%r9
+ lr %r0,%r15
+ lr %r15,%r0
+ lr %r15,%r9
+
+#CHECK: lrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lrl %r0, -0x100000000
+#CHECK: lrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lrl %r0, -2
+#CHECK: lrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lrl %r0, 0
+#CHECK: lrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lrl %r0, 0xfffffffe
+
+#CHECK: lrl %r0, foo # encoding: [0xc4,0x0d,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: lrl %r15, foo # encoding: [0xc4,0xfd,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ lrl %r0,foo
+ lrl %r15,foo
+
+#CHECK: lrl %r3, bar+100 # encoding: [0xc4,0x3d,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: lrl %r4, bar+100 # encoding: [0xc4,0x4d,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ lrl %r3,bar+100
+ lrl %r4,bar+100
+
+#CHECK: lrl %r7, frob@PLT # encoding: [0xc4,0x7d,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: lrl %r8, frob@PLT # encoding: [0xc4,0x8d,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ lrl %r7,frob@PLT
+ lrl %r8,frob@PLT
+
+#CHECK: lrv %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1e]
+#CHECK: lrv %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1e]
+#CHECK: lrv %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1e]
+#CHECK: lrv %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1e]
+#CHECK: lrv %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1e]
+#CHECK: lrv %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1e]
+#CHECK: lrv %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1e]
+#CHECK: lrv %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1e]
+#CHECK: lrv %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1e]
+#CHECK: lrv %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1e]
+
+ lrv %r0,-524288
+ lrv %r0,-1
+ lrv %r0,0
+ lrv %r0,1
+ lrv %r0,524287
+ lrv %r0,0(%r1)
+ lrv %r0,0(%r15)
+ lrv %r0,524287(%r1,%r15)
+ lrv %r0,524287(%r15,%r1)
+ lrv %r15,0
+
+#CHECK: lrvg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0f]
+#CHECK: lrvg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0f]
+#CHECK: lrvg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0f]
+#CHECK: lrvg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0f]
+#CHECK: lrvg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0f]
+#CHECK: lrvg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0f]
+#CHECK: lrvg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0f]
+#CHECK: lrvg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0f]
+#CHECK: lrvg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0f]
+#CHECK: lrvg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x0f]
+
+ lrvg %r0,-524288
+ lrvg %r0,-1
+ lrvg %r0,0
+ lrvg %r0,1
+ lrvg %r0,524287
+ lrvg %r0,0(%r1)
+ lrvg %r0,0(%r15)
+ lrvg %r0,524287(%r1,%r15)
+ lrvg %r0,524287(%r15,%r1)
+ lrvg %r15,0
+
+#CHECK: lrvgr %r0, %r0 # encoding: [0xb9,0x0f,0x00,0x00]
+#CHECK: lrvgr %r0, %r15 # encoding: [0xb9,0x0f,0x00,0x0f]
+#CHECK: lrvgr %r15, %r0 # encoding: [0xb9,0x0f,0x00,0xf0]
+#CHECK: lrvgr %r7, %r8 # encoding: [0xb9,0x0f,0x00,0x78]
+#CHECK: lrvgr %r15, %r15 # encoding: [0xb9,0x0f,0x00,0xff]
+
+ lrvgr %r0,%r0
+ lrvgr %r0,%r15
+ lrvgr %r15,%r0
+ lrvgr %r7,%r8
+ lrvgr %r15,%r15
+
+#CHECK: lrvr %r0, %r0 # encoding: [0xb9,0x1f,0x00,0x00]
+#CHECK: lrvr %r0, %r15 # encoding: [0xb9,0x1f,0x00,0x0f]
+#CHECK: lrvr %r15, %r0 # encoding: [0xb9,0x1f,0x00,0xf0]
+#CHECK: lrvr %r7, %r8 # encoding: [0xb9,0x1f,0x00,0x78]
+#CHECK: lrvr %r15, %r15 # encoding: [0xb9,0x1f,0x00,0xff]
+
+ lrvr %r0,%r0
+ lrvr %r0,%r15
+ lrvr %r15,%r0
+ lrvr %r7,%r8
+ lrvr %r15,%r15
+
+#CHECK: lxr %f0, %f8 # encoding: [0xb3,0x65,0x00,0x08]
+#CHECK: lxr %f0, %f13 # encoding: [0xb3,0x65,0x00,0x0d]
+#CHECK: lxr %f13, %f0 # encoding: [0xb3,0x65,0x00,0xd0]
+#CHECK: lxr %f13, %f9 # encoding: [0xb3,0x65,0x00,0xd9]
+
+ lxr %f0,%f8
+ lxr %f0,%f13
+ lxr %f13,%f0
+ lxr %f13,%f9
+
+#CHECK: ly %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x58]
+#CHECK: ly %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x58]
+#CHECK: ly %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x58]
+#CHECK: ly %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x58]
+#CHECK: ly %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x58]
+#CHECK: ly %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x58]
+#CHECK: ly %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x58]
+#CHECK: ly %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x58]
+#CHECK: ly %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x58]
+#CHECK: ly %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x58]
+
+ ly %r0, -524288
+ ly %r0, -1
+ ly %r0, 0
+ ly %r0, 1
+ ly %r0, 524287
+ ly %r0, 0(%r1)
+ ly %r0, 0(%r15)
+ ly %r0, 524287(%r1,%r15)
+ ly %r0, 524287(%r15,%r1)
+ ly %r15, 0
+
+#CHECK: lzdr %f0 # encoding: [0xb3,0x75,0x00,0x00]
+#CHECK: lzdr %f7 # encoding: [0xb3,0x75,0x00,0x70]
+#CHECK: lzdr %f15 # encoding: [0xb3,0x75,0x00,0xf0]
+
+ lzdr %f0
+ lzdr %f7
+ lzdr %f15
+
+#CHECK: lzer %f0 # encoding: [0xb3,0x74,0x00,0x00]
+#CHECK: lzer %f7 # encoding: [0xb3,0x74,0x00,0x70]
+#CHECK: lzer %f15 # encoding: [0xb3,0x74,0x00,0xf0]
+
+ lzer %f0
+ lzer %f7
+ lzer %f15
+
+#CHECK: lzxr %f0 # encoding: [0xb3,0x76,0x00,0x00]
+#CHECK: lzxr %f8 # encoding: [0xb3,0x76,0x00,0x80]
+#CHECK: lzxr %f13 # encoding: [0xb3,0x76,0x00,0xd0]
+
+ lzxr %f0
+ lzxr %f8
+ lzxr %f13
+
+#CHECK: madb %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1e]
+#CHECK: madb %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1e]
+#CHECK: madb %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1e]
+#CHECK: madb %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1e]
+#CHECK: madb %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1e]
+#CHECK: madb %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1e]
+#CHECK: madb %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1e]
+#CHECK: madb %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x1e]
+#CHECK: madb %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x1e]
+
+ madb %f0, %f0, 0
+ madb %f0, %f0, 4095
+ madb %f0, %f0, 0(%r1)
+ madb %f0, %f0, 0(%r15)
+ madb %f0, %f0, 4095(%r1,%r15)
+ madb %f0, %f0, 4095(%r15,%r1)
+ madb %f0, %f15, 0
+ madb %f15, %f0, 0
+ madb %f15, %f15, 0
+
+#CHECK: madbr %f0, %f0, %f0 # encoding: [0xb3,0x1e,0x00,0x00]
+#CHECK: madbr %f0, %f0, %f15 # encoding: [0xb3,0x1e,0x00,0x0f]
+#CHECK: madbr %f0, %f15, %f0 # encoding: [0xb3,0x1e,0x00,0xf0]
+#CHECK: madbr %f15, %f0, %f0 # encoding: [0xb3,0x1e,0xf0,0x00]
+#CHECK: madbr %f7, %f8, %f9 # encoding: [0xb3,0x1e,0x70,0x89]
+#CHECK: madbr %f15, %f15, %f15 # encoding: [0xb3,0x1e,0xf0,0xff]
+
+ madbr %f0, %f0, %f0
+ madbr %f0, %f0, %f15
+ madbr %f0, %f15, %f0
+ madbr %f15, %f0, %f0
+ madbr %f7, %f8, %f9
+ madbr %f15, %f15, %f15
+
+#CHECK: maeb %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0e]
+#CHECK: maeb %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0e]
+#CHECK: maeb %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0e]
+#CHECK: maeb %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0e]
+#CHECK: maeb %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0e]
+#CHECK: maeb %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0e]
+#CHECK: maeb %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0e]
+#CHECK: maeb %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x0e]
+#CHECK: maeb %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x0e]
+
+ maeb %f0, %f0, 0
+ maeb %f0, %f0, 4095
+ maeb %f0, %f0, 0(%r1)
+ maeb %f0, %f0, 0(%r15)
+ maeb %f0, %f0, 4095(%r1,%r15)
+ maeb %f0, %f0, 4095(%r15,%r1)
+ maeb %f0, %f15, 0
+ maeb %f15, %f0, 0
+ maeb %f15, %f15, 0
+
+#CHECK: maebr %f0, %f0, %f0 # encoding: [0xb3,0x0e,0x00,0x00]
+#CHECK: maebr %f0, %f0, %f15 # encoding: [0xb3,0x0e,0x00,0x0f]
+#CHECK: maebr %f0, %f15, %f0 # encoding: [0xb3,0x0e,0x00,0xf0]
+#CHECK: maebr %f15, %f0, %f0 # encoding: [0xb3,0x0e,0xf0,0x00]
+#CHECK: maebr %f7, %f8, %f9 # encoding: [0xb3,0x0e,0x70,0x89]
+#CHECK: maebr %f15, %f15, %f15 # encoding: [0xb3,0x0e,0xf0,0xff]
+
+ maebr %f0, %f0, %f0
+ maebr %f0, %f0, %f15
+ maebr %f0, %f15, %f0
+ maebr %f15, %f0, %f0
+ maebr %f7, %f8, %f9
+ maebr %f15, %f15, %f15
+
+#CHECK: mdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1c]
+#CHECK: mdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1c]
+#CHECK: mdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1c]
+#CHECK: mdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1c]
+#CHECK: mdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1c]
+#CHECK: mdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1c]
+#CHECK: mdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1c]
+
+ mdb %f0, 0
+ mdb %f0, 4095
+ mdb %f0, 0(%r1)
+ mdb %f0, 0(%r15)
+ mdb %f0, 4095(%r1,%r15)
+ mdb %f0, 4095(%r15,%r1)
+ mdb %f15, 0
+
+#CHECK: mdbr %f0, %f0 # encoding: [0xb3,0x1c,0x00,0x00]
+#CHECK: mdbr %f0, %f15 # encoding: [0xb3,0x1c,0x00,0x0f]
+#CHECK: mdbr %f7, %f8 # encoding: [0xb3,0x1c,0x00,0x78]
+#CHECK: mdbr %f15, %f0 # encoding: [0xb3,0x1c,0x00,0xf0]
+
+ mdbr %f0, %f0
+ mdbr %f0, %f15
+ mdbr %f7, %f8
+ mdbr %f15, %f0
+
+#CHECK: mdeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0c]
+#CHECK: mdeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0c]
+#CHECK: mdeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0c]
+#CHECK: mdeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0c]
+#CHECK: mdeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0c]
+#CHECK: mdeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0c]
+#CHECK: mdeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0c]
+
+ mdeb %f0, 0
+ mdeb %f0, 4095
+ mdeb %f0, 0(%r1)
+ mdeb %f0, 0(%r15)
+ mdeb %f0, 4095(%r1,%r15)
+ mdeb %f0, 4095(%r15,%r1)
+ mdeb %f15, 0
+
+#CHECK: mdebr %f0, %f0 # encoding: [0xb3,0x0c,0x00,0x00]
+#CHECK: mdebr %f0, %f15 # encoding: [0xb3,0x0c,0x00,0x0f]
+#CHECK: mdebr %f7, %f8 # encoding: [0xb3,0x0c,0x00,0x78]
+#CHECK: mdebr %f15, %f0 # encoding: [0xb3,0x0c,0x00,0xf0]
+
+ mdebr %f0, %f0
+ mdebr %f0, %f15
+ mdebr %f7, %f8
+ mdebr %f15, %f0
+
+#CHECK: meeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x17]
+#CHECK: meeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x17]
+#CHECK: meeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x17]
+#CHECK: meeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x17]
+#CHECK: meeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x17]
+#CHECK: meeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x17]
+#CHECK: meeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x17]
+
+ meeb %f0, 0
+ meeb %f0, 4095
+ meeb %f0, 0(%r1)
+ meeb %f0, 0(%r15)
+ meeb %f0, 4095(%r1,%r15)
+ meeb %f0, 4095(%r15,%r1)
+ meeb %f15, 0
+
+#CHECK: meebr %f0, %f0 # encoding: [0xb3,0x17,0x00,0x00]
+#CHECK: meebr %f0, %f15 # encoding: [0xb3,0x17,0x00,0x0f]
+#CHECK: meebr %f7, %f8 # encoding: [0xb3,0x17,0x00,0x78]
+#CHECK: meebr %f15, %f0 # encoding: [0xb3,0x17,0x00,0xf0]
+
+ meebr %f0, %f0
+ meebr %f0, %f15
+ meebr %f7, %f8
+ meebr %f15, %f0
+
+#CHECK: mghi %r0, -32768 # encoding: [0xa7,0x0d,0x80,0x00]
+#CHECK: mghi %r0, -1 # encoding: [0xa7,0x0d,0xff,0xff]
+#CHECK: mghi %r0, 0 # encoding: [0xa7,0x0d,0x00,0x00]
+#CHECK: mghi %r0, 1 # encoding: [0xa7,0x0d,0x00,0x01]
+#CHECK: mghi %r0, 32767 # encoding: [0xa7,0x0d,0x7f,0xff]
+#CHECK: mghi %r15, 0 # encoding: [0xa7,0xfd,0x00,0x00]
+
+ mghi %r0, -32768
+ mghi %r0, -1
+ mghi %r0, 0
+ mghi %r0, 1
+ mghi %r0, 32767
+ mghi %r15, 0
+
+#CHECK: mh %r0, 0 # encoding: [0x4c,0x00,0x00,0x00]
+#CHECK: mh %r0, 4095 # encoding: [0x4c,0x00,0x0f,0xff]
+#CHECK: mh %r0, 0(%r1) # encoding: [0x4c,0x00,0x10,0x00]
+#CHECK: mh %r0, 0(%r15) # encoding: [0x4c,0x00,0xf0,0x00]
+#CHECK: mh %r0, 4095(%r1,%r15) # encoding: [0x4c,0x01,0xff,0xff]
+#CHECK: mh %r0, 4095(%r15,%r1) # encoding: [0x4c,0x0f,0x1f,0xff]
+#CHECK: mh %r15, 0 # encoding: [0x4c,0xf0,0x00,0x00]
+
+ mh %r0, 0
+ mh %r0, 4095
+ mh %r0, 0(%r1)
+ mh %r0, 0(%r15)
+ mh %r0, 4095(%r1,%r15)
+ mh %r0, 4095(%r15,%r1)
+ mh %r15, 0
+
+#CHECK: mhi %r0, -32768 # encoding: [0xa7,0x0c,0x80,0x00]
+#CHECK: mhi %r0, -1 # encoding: [0xa7,0x0c,0xff,0xff]
+#CHECK: mhi %r0, 0 # encoding: [0xa7,0x0c,0x00,0x00]
+#CHECK: mhi %r0, 1 # encoding: [0xa7,0x0c,0x00,0x01]
+#CHECK: mhi %r0, 32767 # encoding: [0xa7,0x0c,0x7f,0xff]
+#CHECK: mhi %r15, 0 # encoding: [0xa7,0xfc,0x00,0x00]
+
+ mhi %r0, -32768
+ mhi %r0, -1
+ mhi %r0, 0
+ mhi %r0, 1
+ mhi %r0, 32767
+ mhi %r15, 0
+
+#CHECK: mhy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x7c]
+#CHECK: mhy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x7c]
+#CHECK: mhy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x7c]
+#CHECK: mhy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x7c]
+#CHECK: mhy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x7c]
+#CHECK: mhy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x7c]
+#CHECK: mhy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x7c]
+#CHECK: mhy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x7c]
+#CHECK: mhy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x7c]
+#CHECK: mhy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x7c]
+
+ mhy %r0, -524288
+ mhy %r0, -1
+ mhy %r0, 0
+ mhy %r0, 1
+ mhy %r0, 524287
+ mhy %r0, 0(%r1)
+ mhy %r0, 0(%r15)
+ mhy %r0, 524287(%r1,%r15)
+ mhy %r0, 524287(%r15,%r1)
+ mhy %r15, 0
+
+#CHECK: mlg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x86]
+#CHECK: mlg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x86]
+#CHECK: mlg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x86]
+#CHECK: mlg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x86]
+#CHECK: mlg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x86]
+#CHECK: mlg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x86]
+#CHECK: mlg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x86]
+#CHECK: mlg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x86]
+#CHECK: mlg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x86]
+#CHECK: mlg %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x86]
+
+ mlg %r0, -524288
+ mlg %r0, -1
+ mlg %r0, 0
+ mlg %r0, 1
+ mlg %r0, 524287
+ mlg %r0, 0(%r1)
+ mlg %r0, 0(%r15)
+ mlg %r0, 524287(%r1,%r15)
+ mlg %r0, 524287(%r15,%r1)
+ mlg %r14, 0
+
+#CHECK: mlgr %r0, %r0 # encoding: [0xb9,0x86,0x00,0x00]
+#CHECK: mlgr %r0, %r15 # encoding: [0xb9,0x86,0x00,0x0f]
+#CHECK: mlgr %r14, %r0 # encoding: [0xb9,0x86,0x00,0xe0]
+#CHECK: mlgr %r6, %r9 # encoding: [0xb9,0x86,0x00,0x69]
+
+ mlgr %r0,%r0
+ mlgr %r0,%r15
+ mlgr %r14,%r0
+ mlgr %r6,%r9
+
+#CHECK: ms %r0, 0 # encoding: [0x71,0x00,0x00,0x00]
+#CHECK: ms %r0, 4095 # encoding: [0x71,0x00,0x0f,0xff]
+#CHECK: ms %r0, 0(%r1) # encoding: [0x71,0x00,0x10,0x00]
+#CHECK: ms %r0, 0(%r15) # encoding: [0x71,0x00,0xf0,0x00]
+#CHECK: ms %r0, 4095(%r1,%r15) # encoding: [0x71,0x01,0xff,0xff]
+#CHECK: ms %r0, 4095(%r15,%r1) # encoding: [0x71,0x0f,0x1f,0xff]
+#CHECK: ms %r15, 0 # encoding: [0x71,0xf0,0x00,0x00]
+
+ ms %r0, 0
+ ms %r0, 4095
+ ms %r0, 0(%r1)
+ ms %r0, 0(%r15)
+ ms %r0, 4095(%r1,%r15)
+ ms %r0, 4095(%r15,%r1)
+ ms %r15, 0
+
+#CHECK: msdb %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1f]
+#CHECK: msdb %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1f]
+#CHECK: msdb %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1f]
+#CHECK: msdb %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1f]
+#CHECK: msdb %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1f]
+#CHECK: msdb %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1f]
+#CHECK: msdb %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1f]
+#CHECK: msdb %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x1f]
+#CHECK: msdb %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x1f]
+
+ msdb %f0, %f0, 0
+ msdb %f0, %f0, 4095
+ msdb %f0, %f0, 0(%r1)
+ msdb %f0, %f0, 0(%r15)
+ msdb %f0, %f0, 4095(%r1,%r15)
+ msdb %f0, %f0, 4095(%r15,%r1)
+ msdb %f0, %f15, 0
+ msdb %f15, %f0, 0
+ msdb %f15, %f15, 0
+
+#CHECK: msdbr %f0, %f0, %f0 # encoding: [0xb3,0x1f,0x00,0x00]
+#CHECK: msdbr %f0, %f0, %f15 # encoding: [0xb3,0x1f,0x00,0x0f]
+#CHECK: msdbr %f0, %f15, %f0 # encoding: [0xb3,0x1f,0x00,0xf0]
+#CHECK: msdbr %f15, %f0, %f0 # encoding: [0xb3,0x1f,0xf0,0x00]
+#CHECK: msdbr %f7, %f8, %f9 # encoding: [0xb3,0x1f,0x70,0x89]
+#CHECK: msdbr %f15, %f15, %f15 # encoding: [0xb3,0x1f,0xf0,0xff]
+
+ msdbr %f0, %f0, %f0
+ msdbr %f0, %f0, %f15
+ msdbr %f0, %f15, %f0
+ msdbr %f15, %f0, %f0
+ msdbr %f7, %f8, %f9
+ msdbr %f15, %f15, %f15
+
+#CHECK: mseb %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0f]
+#CHECK: mseb %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0f]
+#CHECK: mseb %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0f]
+#CHECK: mseb %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0f]
+#CHECK: mseb %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0f]
+#CHECK: mseb %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0f]
+#CHECK: mseb %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0f]
+#CHECK: mseb %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x0f]
+#CHECK: mseb %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x0f]
+
+ mseb %f0, %f0, 0
+ mseb %f0, %f0, 4095
+ mseb %f0, %f0, 0(%r1)
+ mseb %f0, %f0, 0(%r15)
+ mseb %f0, %f0, 4095(%r1,%r15)
+ mseb %f0, %f0, 4095(%r15,%r1)
+ mseb %f0, %f15, 0
+ mseb %f15, %f0, 0
+ mseb %f15, %f15, 0
+
+#CHECK: msebr %f0, %f0, %f0 # encoding: [0xb3,0x0f,0x00,0x00]
+#CHECK: msebr %f0, %f0, %f15 # encoding: [0xb3,0x0f,0x00,0x0f]
+#CHECK: msebr %f0, %f15, %f0 # encoding: [0xb3,0x0f,0x00,0xf0]
+#CHECK: msebr %f15, %f0, %f0 # encoding: [0xb3,0x0f,0xf0,0x00]
+#CHECK: msebr %f7, %f8, %f9 # encoding: [0xb3,0x0f,0x70,0x89]
+#CHECK: msebr %f15, %f15, %f15 # encoding: [0xb3,0x0f,0xf0,0xff]
+
+ msebr %f0, %f0, %f0
+ msebr %f0, %f0, %f15
+ msebr %f0, %f15, %f0
+ msebr %f15, %f0, %f0
+ msebr %f7, %f8, %f9
+ msebr %f15, %f15, %f15
+
+#CHECK: msfi %r0, -2147483648 # encoding: [0xc2,0x01,0x80,0x00,0x00,0x00]
+#CHECK: msfi %r0, -1 # encoding: [0xc2,0x01,0xff,0xff,0xff,0xff]
+#CHECK: msfi %r0, 0 # encoding: [0xc2,0x01,0x00,0x00,0x00,0x00]
+#CHECK: msfi %r0, 1 # encoding: [0xc2,0x01,0x00,0x00,0x00,0x01]
+#CHECK: msfi %r0, 2147483647 # encoding: [0xc2,0x01,0x7f,0xff,0xff,0xff]
+#CHECK: msfi %r15, 0 # encoding: [0xc2,0xf1,0x00,0x00,0x00,0x00]
+
+ msfi %r0, -1 << 31
+ msfi %r0, -1
+ msfi %r0, 0
+ msfi %r0, 1
+ msfi %r0, (1 << 31) - 1
+ msfi %r15, 0
+
+#CHECK: msg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0c]
+#CHECK: msg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0c]
+#CHECK: msg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0c]
+#CHECK: msg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0c]
+#CHECK: msg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0c]
+#CHECK: msg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0c]
+#CHECK: msg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0c]
+#CHECK: msg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0c]
+#CHECK: msg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0c]
+#CHECK: msg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x0c]
+
+ msg %r0, -524288
+ msg %r0, -1
+ msg %r0, 0
+ msg %r0, 1
+ msg %r0, 524287
+ msg %r0, 0(%r1)
+ msg %r0, 0(%r15)
+ msg %r0, 524287(%r1,%r15)
+ msg %r0, 524287(%r15,%r1)
+ msg %r15, 0
+
+#CHECK: msgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1c]
+#CHECK: msgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1c]
+#CHECK: msgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1c]
+#CHECK: msgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1c]
+#CHECK: msgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1c]
+#CHECK: msgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1c]
+#CHECK: msgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1c]
+#CHECK: msgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1c]
+#CHECK: msgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1c]
+#CHECK: msgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1c]
+
+ msgf %r0, -524288
+ msgf %r0, -1
+ msgf %r0, 0
+ msgf %r0, 1
+ msgf %r0, 524287
+ msgf %r0, 0(%r1)
+ msgf %r0, 0(%r15)
+ msgf %r0, 524287(%r1,%r15)
+ msgf %r0, 524287(%r15,%r1)
+ msgf %r15, 0
+
+#CHECK: msgfi %r0, -2147483648 # encoding: [0xc2,0x00,0x80,0x00,0x00,0x00]
+#CHECK: msgfi %r0, -1 # encoding: [0xc2,0x00,0xff,0xff,0xff,0xff]
+#CHECK: msgfi %r0, 0 # encoding: [0xc2,0x00,0x00,0x00,0x00,0x00]
+#CHECK: msgfi %r0, 1 # encoding: [0xc2,0x00,0x00,0x00,0x00,0x01]
+#CHECK: msgfi %r0, 2147483647 # encoding: [0xc2,0x00,0x7f,0xff,0xff,0xff]
+#CHECK: msgfi %r15, 0 # encoding: [0xc2,0xf0,0x00,0x00,0x00,0x00]
+
+ msgfi %r0, -1 << 31
+ msgfi %r0, -1
+ msgfi %r0, 0
+ msgfi %r0, 1
+ msgfi %r0, (1 << 31) - 1
+ msgfi %r15, 0
+
+#CHECK: msgfr %r0, %r0 # encoding: [0xb9,0x1c,0x00,0x00]
+#CHECK: msgfr %r0, %r15 # encoding: [0xb9,0x1c,0x00,0x0f]
+#CHECK: msgfr %r15, %r0 # encoding: [0xb9,0x1c,0x00,0xf0]
+#CHECK: msgfr %r7, %r8 # encoding: [0xb9,0x1c,0x00,0x78]
+
+ msgfr %r0,%r0
+ msgfr %r0,%r15
+ msgfr %r15,%r0
+ msgfr %r7,%r8
+
+#CHECK: msgr %r0, %r0 # encoding: [0xb9,0x0c,0x00,0x00]
+#CHECK: msgr %r0, %r15 # encoding: [0xb9,0x0c,0x00,0x0f]
+#CHECK: msgr %r15, %r0 # encoding: [0xb9,0x0c,0x00,0xf0]
+#CHECK: msgr %r7, %r8 # encoding: [0xb9,0x0c,0x00,0x78]
+
+ msgr %r0,%r0
+ msgr %r0,%r15
+ msgr %r15,%r0
+ msgr %r7,%r8
+
+#CHECK: msr %r0, %r0 # encoding: [0xb2,0x52,0x00,0x00]
+#CHECK: msr %r0, %r15 # encoding: [0xb2,0x52,0x00,0x0f]
+#CHECK: msr %r15, %r0 # encoding: [0xb2,0x52,0x00,0xf0]
+#CHECK: msr %r7, %r8 # encoding: [0xb2,0x52,0x00,0x78]
+
+ msr %r0,%r0
+ msr %r0,%r15
+ msr %r15,%r0
+ msr %r7,%r8
+
+#CHECK: msy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x51]
+#CHECK: msy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x51]
+#CHECK: msy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x51]
+#CHECK: msy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x51]
+#CHECK: msy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x51]
+#CHECK: msy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x51]
+#CHECK: msy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x51]
+#CHECK: msy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x51]
+#CHECK: msy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x51]
+#CHECK: msy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x51]
+
+ msy %r0, -524288
+ msy %r0, -1
+ msy %r0, 0
+ msy %r0, 1
+ msy %r0, 524287
+ msy %r0, 0(%r1)
+ msy %r0, 0(%r15)
+ msy %r0, 524287(%r1,%r15)
+ msy %r0, 524287(%r15,%r1)
+ msy %r15, 0
+
+#CHECK: mvghi 0, 0 # encoding: [0xe5,0x48,0x00,0x00,0x00,0x00]
+#CHECK: mvghi 4095, 0 # encoding: [0xe5,0x48,0x0f,0xff,0x00,0x00]
+#CHECK: mvghi 0, -32768 # encoding: [0xe5,0x48,0x00,0x00,0x80,0x00]
+#CHECK: mvghi 0, -1 # encoding: [0xe5,0x48,0x00,0x00,0xff,0xff]
+#CHECK: mvghi 0, 0 # encoding: [0xe5,0x48,0x00,0x00,0x00,0x00]
+#CHECK: mvghi 0, 1 # encoding: [0xe5,0x48,0x00,0x00,0x00,0x01]
+#CHECK: mvghi 0, 32767 # encoding: [0xe5,0x48,0x00,0x00,0x7f,0xff]
+#CHECK: mvghi 0(%r1), 42 # encoding: [0xe5,0x48,0x10,0x00,0x00,0x2a]
+#CHECK: mvghi 0(%r15), 42 # encoding: [0xe5,0x48,0xf0,0x00,0x00,0x2a]
+#CHECK: mvghi 4095(%r1), 42 # encoding: [0xe5,0x48,0x1f,0xff,0x00,0x2a]
+#CHECK: mvghi 4095(%r15), 42 # encoding: [0xe5,0x48,0xff,0xff,0x00,0x2a]
+
+ mvghi 0, 0
+ mvghi 4095, 0
+ mvghi 0, -32768
+ mvghi 0, -1
+ mvghi 0, 0
+ mvghi 0, 1
+ mvghi 0, 32767
+ mvghi 0(%r1), 42
+ mvghi 0(%r15), 42
+ mvghi 4095(%r1), 42
+ mvghi 4095(%r15), 42
+
+#CHECK: mvhhi 0, 0 # encoding: [0xe5,0x44,0x00,0x00,0x00,0x00]
+#CHECK: mvhhi 4095, 0 # encoding: [0xe5,0x44,0x0f,0xff,0x00,0x00]
+#CHECK: mvhhi 0, -32768 # encoding: [0xe5,0x44,0x00,0x00,0x80,0x00]
+#CHECK: mvhhi 0, -1 # encoding: [0xe5,0x44,0x00,0x00,0xff,0xff]
+#CHECK: mvhhi 0, 0 # encoding: [0xe5,0x44,0x00,0x00,0x00,0x00]
+#CHECK: mvhhi 0, 1 # encoding: [0xe5,0x44,0x00,0x00,0x00,0x01]
+#CHECK: mvhhi 0, 32767 # encoding: [0xe5,0x44,0x00,0x00,0x7f,0xff]
+#CHECK: mvhhi 0(%r1), 42 # encoding: [0xe5,0x44,0x10,0x00,0x00,0x2a]
+#CHECK: mvhhi 0(%r15), 42 # encoding: [0xe5,0x44,0xf0,0x00,0x00,0x2a]
+#CHECK: mvhhi 4095(%r1), 42 # encoding: [0xe5,0x44,0x1f,0xff,0x00,0x2a]
+#CHECK: mvhhi 4095(%r15), 42 # encoding: [0xe5,0x44,0xff,0xff,0x00,0x2a]
+
+ mvhhi 0, 0
+ mvhhi 4095, 0
+ mvhhi 0, -32768
+ mvhhi 0, -1
+ mvhhi 0, 0
+ mvhhi 0, 1
+ mvhhi 0, 32767
+ mvhhi 0(%r1), 42
+ mvhhi 0(%r15), 42
+ mvhhi 4095(%r1), 42
+ mvhhi 4095(%r15), 42
+
+#CHECK: mvhi 0, 0 # encoding: [0xe5,0x4c,0x00,0x00,0x00,0x00]
+#CHECK: mvhi 4095, 0 # encoding: [0xe5,0x4c,0x0f,0xff,0x00,0x00]
+#CHECK: mvhi 0, -32768 # encoding: [0xe5,0x4c,0x00,0x00,0x80,0x00]
+#CHECK: mvhi 0, -1 # encoding: [0xe5,0x4c,0x00,0x00,0xff,0xff]
+#CHECK: mvhi 0, 0 # encoding: [0xe5,0x4c,0x00,0x00,0x00,0x00]
+#CHECK: mvhi 0, 1 # encoding: [0xe5,0x4c,0x00,0x00,0x00,0x01]
+#CHECK: mvhi 0, 32767 # encoding: [0xe5,0x4c,0x00,0x00,0x7f,0xff]
+#CHECK: mvhi 0(%r1), 42 # encoding: [0xe5,0x4c,0x10,0x00,0x00,0x2a]
+#CHECK: mvhi 0(%r15), 42 # encoding: [0xe5,0x4c,0xf0,0x00,0x00,0x2a]
+#CHECK: mvhi 4095(%r1), 42 # encoding: [0xe5,0x4c,0x1f,0xff,0x00,0x2a]
+#CHECK: mvhi 4095(%r15), 42 # encoding: [0xe5,0x4c,0xff,0xff,0x00,0x2a]
+
+ mvhi 0, 0
+ mvhi 4095, 0
+ mvhi 0, -32768
+ mvhi 0, -1
+ mvhi 0, 0
+ mvhi 0, 1
+ mvhi 0, 32767
+ mvhi 0(%r1), 42
+ mvhi 0(%r15), 42
+ mvhi 4095(%r1), 42
+ mvhi 4095(%r15), 42
+
+#CHECK: mvi 0, 0 # encoding: [0x92,0x00,0x00,0x00]
+#CHECK: mvi 4095, 0 # encoding: [0x92,0x00,0x0f,0xff]
+#CHECK: mvi 0, 255 # encoding: [0x92,0xff,0x00,0x00]
+#CHECK: mvi 0(%r1), 42 # encoding: [0x92,0x2a,0x10,0x00]
+#CHECK: mvi 0(%r15), 42 # encoding: [0x92,0x2a,0xf0,0x00]
+#CHECK: mvi 4095(%r1), 42 # encoding: [0x92,0x2a,0x1f,0xff]
+#CHECK: mvi 4095(%r15), 42 # encoding: [0x92,0x2a,0xff,0xff]
+
+ mvi 0, 0
+ mvi 4095, 0
+ mvi 0, 255
+ mvi 0(%r1), 42
+ mvi 0(%r15), 42
+ mvi 4095(%r1), 42
+ mvi 4095(%r15), 42
+
+#CHECK: mviy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x52]
+#CHECK: mviy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x52]
+#CHECK: mviy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x52]
+#CHECK: mviy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x52]
+#CHECK: mviy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x52]
+#CHECK: mviy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x52]
+#CHECK: mviy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x52]
+#CHECK: mviy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x52]
+#CHECK: mviy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x52]
+#CHECK: mviy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x52]
+
+ mviy -524288, 0
+ mviy -1, 0
+ mviy 0, 0
+ mviy 1, 0
+ mviy 524287, 0
+ mviy 0, 255
+ mviy 0(%r1), 42
+ mviy 0(%r15), 42
+ mviy 524287(%r1), 42
+ mviy 524287(%r15), 42
+
+#CHECK: mxbr %f0, %f0 # encoding: [0xb3,0x4c,0x00,0x00]
+#CHECK: mxbr %f0, %f13 # encoding: [0xb3,0x4c,0x00,0x0d]
+#CHECK: mxbr %f8, %f5 # encoding: [0xb3,0x4c,0x00,0x85]
+#CHECK: mxbr %f13, %f13 # encoding: [0xb3,0x4c,0x00,0xdd]
+
+ mxbr %f0, %f0
+ mxbr %f0, %f13
+ mxbr %f8, %f5
+ mxbr %f13, %f13
+
+#CHECK: mxdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x07]
+#CHECK: mxdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x07]
+#CHECK: mxdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x07]
+#CHECK: mxdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x07]
+#CHECK: mxdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x07]
+#CHECK: mxdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x07]
+#CHECK: mxdb %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0x00,0x07]
+
+ mxdb %f0, 0
+ mxdb %f0, 4095
+ mxdb %f0, 0(%r1)
+ mxdb %f0, 0(%r15)
+ mxdb %f0, 4095(%r1,%r15)
+ mxdb %f0, 4095(%r15,%r1)
+ mxdb %f13, 0
+
+#CHECK: mxdbr %f0, %f0 # encoding: [0xb3,0x07,0x00,0x00]
+#CHECK: mxdbr %f0, %f15 # encoding: [0xb3,0x07,0x00,0x0f]
+#CHECK: mxdbr %f8, %f8 # encoding: [0xb3,0x07,0x00,0x88]
+#CHECK: mxdbr %f13, %f0 # encoding: [0xb3,0x07,0x00,0xd0]
+
+ mxdbr %f0, %f0
+ mxdbr %f0, %f15
+ mxdbr %f8, %f8
+ mxdbr %f13, %f0
+
+#CHECK: n %r0, 0 # encoding: [0x54,0x00,0x00,0x00]
+#CHECK: n %r0, 4095 # encoding: [0x54,0x00,0x0f,0xff]
+#CHECK: n %r0, 0(%r1) # encoding: [0x54,0x00,0x10,0x00]
+#CHECK: n %r0, 0(%r15) # encoding: [0x54,0x00,0xf0,0x00]
+#CHECK: n %r0, 4095(%r1,%r15) # encoding: [0x54,0x01,0xff,0xff]
+#CHECK: n %r0, 4095(%r15,%r1) # encoding: [0x54,0x0f,0x1f,0xff]
+#CHECK: n %r15, 0 # encoding: [0x54,0xf0,0x00,0x00]
+
+ n %r0, 0
+ n %r0, 4095
+ n %r0, 0(%r1)
+ n %r0, 0(%r15)
+ n %r0, 4095(%r1,%r15)
+ n %r0, 4095(%r15,%r1)
+ n %r15, 0
+
+#CHECK: ng %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x80]
+#CHECK: ng %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x80]
+#CHECK: ng %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x80]
+#CHECK: ng %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x80]
+#CHECK: ng %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x80]
+#CHECK: ng %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x80]
+#CHECK: ng %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x80]
+#CHECK: ng %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x80]
+#CHECK: ng %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x80]
+#CHECK: ng %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x80]
+
+ ng %r0, -524288
+ ng %r0, -1
+ ng %r0, 0
+ ng %r0, 1
+ ng %r0, 524287
+ ng %r0, 0(%r1)
+ ng %r0, 0(%r15)
+ ng %r0, 524287(%r1,%r15)
+ ng %r0, 524287(%r15,%r1)
+ ng %r15, 0
+
+#CHECK: ngr %r0, %r0 # encoding: [0xb9,0x80,0x00,0x00]
+#CHECK: ngr %r0, %r15 # encoding: [0xb9,0x80,0x00,0x0f]
+#CHECK: ngr %r15, %r0 # encoding: [0xb9,0x80,0x00,0xf0]
+#CHECK: ngr %r7, %r8 # encoding: [0xb9,0x80,0x00,0x78]
+
+ ngr %r0,%r0
+ ngr %r0,%r15
+ ngr %r15,%r0
+ ngr %r7,%r8
+
+#CHECK: ni 0, 0 # encoding: [0x94,0x00,0x00,0x00]
+#CHECK: ni 4095, 0 # encoding: [0x94,0x00,0x0f,0xff]
+#CHECK: ni 0, 255 # encoding: [0x94,0xff,0x00,0x00]
+#CHECK: ni 0(%r1), 42 # encoding: [0x94,0x2a,0x10,0x00]
+#CHECK: ni 0(%r15), 42 # encoding: [0x94,0x2a,0xf0,0x00]
+#CHECK: ni 4095(%r1), 42 # encoding: [0x94,0x2a,0x1f,0xff]
+#CHECK: ni 4095(%r15), 42 # encoding: [0x94,0x2a,0xff,0xff]
+
+ ni 0, 0
+ ni 4095, 0
+ ni 0, 255
+ ni 0(%r1), 42
+ ni 0(%r15), 42
+ ni 4095(%r1), 42
+ ni 4095(%r15), 42
+
+#CHECK: nihf %r0, 0 # encoding: [0xc0,0x0a,0x00,0x00,0x00,0x00]
+#CHECK: nihf %r0, 4294967295 # encoding: [0xc0,0x0a,0xff,0xff,0xff,0xff]
+#CHECK: nihf %r15, 0 # encoding: [0xc0,0xfa,0x00,0x00,0x00,0x00]
+
+ nihf %r0, 0
+ nihf %r0, 0xffffffff
+ nihf %r15, 0
+
+#CHECK: nihh %r0, 0 # encoding: [0xa5,0x04,0x00,0x00]
+#CHECK: nihh %r0, 32768 # encoding: [0xa5,0x04,0x80,0x00]
+#CHECK: nihh %r0, 65535 # encoding: [0xa5,0x04,0xff,0xff]
+#CHECK: nihh %r15, 0 # encoding: [0xa5,0xf4,0x00,0x00]
+
+ nihh %r0, 0
+ nihh %r0, 0x8000
+ nihh %r0, 0xffff
+ nihh %r15, 0
+
+#CHECK: nihl %r0, 0 # encoding: [0xa5,0x05,0x00,0x00]
+#CHECK: nihl %r0, 32768 # encoding: [0xa5,0x05,0x80,0x00]
+#CHECK: nihl %r0, 65535 # encoding: [0xa5,0x05,0xff,0xff]
+#CHECK: nihl %r15, 0 # encoding: [0xa5,0xf5,0x00,0x00]
+
+ nihl %r0, 0
+ nihl %r0, 0x8000
+ nihl %r0, 0xffff
+ nihl %r15, 0
+
+#CHECK: nilf %r0, 0 # encoding: [0xc0,0x0b,0x00,0x00,0x00,0x00]
+#CHECK: nilf %r0, 4294967295 # encoding: [0xc0,0x0b,0xff,0xff,0xff,0xff]
+#CHECK: nilf %r15, 0 # encoding: [0xc0,0xfb,0x00,0x00,0x00,0x00]
+
+ nilf %r0, 0
+ nilf %r0, 0xffffffff
+ nilf %r15, 0
+
+#CHECK: nilh %r0, 0 # encoding: [0xa5,0x06,0x00,0x00]
+#CHECK: nilh %r0, 32768 # encoding: [0xa5,0x06,0x80,0x00]
+#CHECK: nilh %r0, 65535 # encoding: [0xa5,0x06,0xff,0xff]
+#CHECK: nilh %r15, 0 # encoding: [0xa5,0xf6,0x00,0x00]
+
+ nilh %r0, 0
+ nilh %r0, 0x8000
+ nilh %r0, 0xffff
+ nilh %r15, 0
+
+#CHECK: nill %r0, 0 # encoding: [0xa5,0x07,0x00,0x00]
+#CHECK: nill %r0, 32768 # encoding: [0xa5,0x07,0x80,0x00]
+#CHECK: nill %r0, 65535 # encoding: [0xa5,0x07,0xff,0xff]
+#CHECK: nill %r15, 0 # encoding: [0xa5,0xf7,0x00,0x00]
+
+ nill %r0, 0
+ nill %r0, 0x8000
+ nill %r0, 0xffff
+ nill %r15, 0
+
+#CHECK: niy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x54]
+#CHECK: niy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x54]
+#CHECK: niy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x54]
+#CHECK: niy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x54]
+#CHECK: niy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x54]
+#CHECK: niy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x54]
+#CHECK: niy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x54]
+#CHECK: niy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x54]
+#CHECK: niy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x54]
+#CHECK: niy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x54]
+
+ niy -524288, 0
+ niy -1, 0
+ niy 0, 0
+ niy 1, 0
+ niy 524287, 0
+ niy 0, 255
+ niy 0(%r1), 42
+ niy 0(%r15), 42
+ niy 524287(%r1), 42
+ niy 524287(%r15), 42
+
+#CHECK: nr %r0, %r0 # encoding: [0x14,0x00]
+#CHECK: nr %r0, %r15 # encoding: [0x14,0x0f]
+#CHECK: nr %r15, %r0 # encoding: [0x14,0xf0]
+#CHECK: nr %r7, %r8 # encoding: [0x14,0x78]
+
+ nr %r0,%r0
+ nr %r0,%r15
+ nr %r15,%r0
+ nr %r7,%r8
+
+#CHECK: ny %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x54]
+#CHECK: ny %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x54]
+#CHECK: ny %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x54]
+#CHECK: ny %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x54]
+#CHECK: ny %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x54]
+#CHECK: ny %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x54]
+#CHECK: ny %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x54]
+#CHECK: ny %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x54]
+#CHECK: ny %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x54]
+#CHECK: ny %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x54]
+
+ ny %r0, -524288
+ ny %r0, -1
+ ny %r0, 0
+ ny %r0, 1
+ ny %r0, 524287
+ ny %r0, 0(%r1)
+ ny %r0, 0(%r15)
+ ny %r0, 524287(%r1,%r15)
+ ny %r0, 524287(%r15,%r1)
+ ny %r15, 0
+
+#CHECK: o %r0, 0 # encoding: [0x56,0x00,0x00,0x00]
+#CHECK: o %r0, 4095 # encoding: [0x56,0x00,0x0f,0xff]
+#CHECK: o %r0, 0(%r1) # encoding: [0x56,0x00,0x10,0x00]
+#CHECK: o %r0, 0(%r15) # encoding: [0x56,0x00,0xf0,0x00]
+#CHECK: o %r0, 4095(%r1,%r15) # encoding: [0x56,0x01,0xff,0xff]
+#CHECK: o %r0, 4095(%r15,%r1) # encoding: [0x56,0x0f,0x1f,0xff]
+#CHECK: o %r15, 0 # encoding: [0x56,0xf0,0x00,0x00]
+
+ o %r0, 0
+ o %r0, 4095
+ o %r0, 0(%r1)
+ o %r0, 0(%r15)
+ o %r0, 4095(%r1,%r15)
+ o %r0, 4095(%r15,%r1)
+ o %r15, 0
+
+#CHECK: og %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x81]
+#CHECK: og %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x81]
+#CHECK: og %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x81]
+#CHECK: og %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x81]
+#CHECK: og %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x81]
+#CHECK: og %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x81]
+#CHECK: og %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x81]
+#CHECK: og %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x81]
+#CHECK: og %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x81]
+#CHECK: og %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x81]
+
+ og %r0, -524288
+ og %r0, -1
+ og %r0, 0
+ og %r0, 1
+ og %r0, 524287
+ og %r0, 0(%r1)
+ og %r0, 0(%r15)
+ og %r0, 524287(%r1,%r15)
+ og %r0, 524287(%r15,%r1)
+ og %r15, 0
+
+#CHECK: ogr %r0, %r0 # encoding: [0xb9,0x81,0x00,0x00]
+#CHECK: ogr %r0, %r15 # encoding: [0xb9,0x81,0x00,0x0f]
+#CHECK: ogr %r15, %r0 # encoding: [0xb9,0x81,0x00,0xf0]
+#CHECK: ogr %r7, %r8 # encoding: [0xb9,0x81,0x00,0x78]
+
+ ogr %r0,%r0
+ ogr %r0,%r15
+ ogr %r15,%r0
+ ogr %r7,%r8
+
+#CHECK: oi 0, 0 # encoding: [0x96,0x00,0x00,0x00]
+#CHECK: oi 4095, 0 # encoding: [0x96,0x00,0x0f,0xff]
+#CHECK: oi 0, 255 # encoding: [0x96,0xff,0x00,0x00]
+#CHECK: oi 0(%r1), 42 # encoding: [0x96,0x2a,0x10,0x00]
+#CHECK: oi 0(%r15), 42 # encoding: [0x96,0x2a,0xf0,0x00]
+#CHECK: oi 4095(%r1), 42 # encoding: [0x96,0x2a,0x1f,0xff]
+#CHECK: oi 4095(%r15), 42 # encoding: [0x96,0x2a,0xff,0xff]
+
+ oi 0, 0
+ oi 4095, 0
+ oi 0, 255
+ oi 0(%r1), 42
+ oi 0(%r15), 42
+ oi 4095(%r1), 42
+ oi 4095(%r15), 42
+
+#CHECK: oihf %r0, 0 # encoding: [0xc0,0x0c,0x00,0x00,0x00,0x00]
+#CHECK: oihf %r0, 4294967295 # encoding: [0xc0,0x0c,0xff,0xff,0xff,0xff]
+#CHECK: oihf %r15, 0 # encoding: [0xc0,0xfc,0x00,0x00,0x00,0x00]
+
+ oihf %r0, 0
+ oihf %r0, 0xffffffff
+ oihf %r15, 0
+
+#CHECK: oihh %r0, 0 # encoding: [0xa5,0x08,0x00,0x00]
+#CHECK: oihh %r0, 32768 # encoding: [0xa5,0x08,0x80,0x00]
+#CHECK: oihh %r0, 65535 # encoding: [0xa5,0x08,0xff,0xff]
+#CHECK: oihh %r15, 0 # encoding: [0xa5,0xf8,0x00,0x00]
+
+ oihh %r0, 0
+ oihh %r0, 0x8000
+ oihh %r0, 0xffff
+ oihh %r15, 0
+
+#CHECK: oihl %r0, 0 # encoding: [0xa5,0x09,0x00,0x00]
+#CHECK: oihl %r0, 32768 # encoding: [0xa5,0x09,0x80,0x00]
+#CHECK: oihl %r0, 65535 # encoding: [0xa5,0x09,0xff,0xff]
+#CHECK: oihl %r15, 0 # encoding: [0xa5,0xf9,0x00,0x00]
+
+ oihl %r0, 0
+ oihl %r0, 0x8000
+ oihl %r0, 0xffff
+ oihl %r15, 0
+
+#CHECK: oilf %r0, 0 # encoding: [0xc0,0x0d,0x00,0x00,0x00,0x00]
+#CHECK: oilf %r0, 4294967295 # encoding: [0xc0,0x0d,0xff,0xff,0xff,0xff]
+#CHECK: oilf %r15, 0 # encoding: [0xc0,0xfd,0x00,0x00,0x00,0x00]
+
+ oilf %r0, 0
+ oilf %r0, 0xffffffff
+ oilf %r15, 0
+
+#CHECK: oilh %r0, 0 # encoding: [0xa5,0x0a,0x00,0x00]
+#CHECK: oilh %r0, 32768 # encoding: [0xa5,0x0a,0x80,0x00]
+#CHECK: oilh %r0, 65535 # encoding: [0xa5,0x0a,0xff,0xff]
+#CHECK: oilh %r15, 0 # encoding: [0xa5,0xfa,0x00,0x00]
+
+ oilh %r0, 0
+ oilh %r0, 0x8000
+ oilh %r0, 0xffff
+ oilh %r15, 0
+
+#CHECK: oill %r0, 0 # encoding: [0xa5,0x0b,0x00,0x00]
+#CHECK: oill %r0, 32768 # encoding: [0xa5,0x0b,0x80,0x00]
+#CHECK: oill %r0, 65535 # encoding: [0xa5,0x0b,0xff,0xff]
+#CHECK: oill %r15, 0 # encoding: [0xa5,0xfb,0x00,0x00]
+
+ oill %r0, 0
+ oill %r0, 0x8000
+ oill %r0, 0xffff
+ oill %r15, 0
+
+#CHECK: oiy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x56]
+#CHECK: oiy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x56]
+#CHECK: oiy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x56]
+#CHECK: oiy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x56]
+#CHECK: oiy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x56]
+#CHECK: oiy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x56]
+#CHECK: oiy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x56]
+#CHECK: oiy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x56]
+#CHECK: oiy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x56]
+#CHECK: oiy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x56]
+
+ oiy -524288, 0
+ oiy -1, 0
+ oiy 0, 0
+ oiy 1, 0
+ oiy 524287, 0
+ oiy 0, 255
+ oiy 0(%r1), 42
+ oiy 0(%r15), 42
+ oiy 524287(%r1), 42
+ oiy 524287(%r15), 42
+
+#CHECK: or %r0, %r0 # encoding: [0x16,0x00]
+#CHECK: or %r0, %r15 # encoding: [0x16,0x0f]
+#CHECK: or %r15, %r0 # encoding: [0x16,0xf0]
+#CHECK: or %r7, %r8 # encoding: [0x16,0x78]
+
+ or %r0,%r0
+ or %r0,%r15
+ or %r15,%r0
+ or %r7,%r8
+
+#CHECK: oy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x56]
+#CHECK: oy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x56]
+#CHECK: oy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x56]
+#CHECK: oy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x56]
+#CHECK: oy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x56]
+#CHECK: oy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x56]
+#CHECK: oy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x56]
+#CHECK: oy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x56]
+#CHECK: oy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x56]
+#CHECK: oy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x56]
+
+ oy %r0, -524288
+ oy %r0, -1
+ oy %r0, 0
+ oy %r0, 1
+ oy %r0, 524287
+ oy %r0, 0(%r1)
+ oy %r0, 0(%r15)
+ oy %r0, 524287(%r1,%r15)
+ oy %r0, 524287(%r15,%r1)
+ oy %r15, 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, 63, 0 # encoding: [0xec,0x00,0x00,0x3f,0x00,0x55]
+#CHECK: risbg %r0, %r0, 63, 0, 0 # encoding: [0xec,0x00,0x3f,0x00,0x00,0x55]
+#CHECK: risbg %r0, %r15, 0, 0, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0x55]
+#CHECK: risbg %r15, %r0, 0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0x55]
+#CHECK: risbg %r4, %r5, 6, 7, 8 # encoding: [0xec,0x45,0x06,0x07,0x08,0x55]
+
+ risbg %r0,%r0,0,0,0
+ risbg %r0,%r0,0,0,63
+ risbg %r0,%r0,0,63,0
+ risbg %r0,%r0,63,0,0
+ risbg %r0,%r15,0,0,0
+ risbg %r15,%r0,0,0,0
+ risbg %r4,%r5,6,7,8
+
+#CHECK: rll %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x1d]
+#CHECK: rll %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x1d]
+#CHECK: rll %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x1d]
+#CHECK: rll %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x1d]
+#CHECK: rll %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x1d]
+#CHECK: rll %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x1d]
+#CHECK: rll %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x1d]
+#CHECK: rll %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x1d]
+#CHECK: rll %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x1d]
+#CHECK: rll %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x1d]
+#CHECK: rll %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x1d]
+#CHECK: rll %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x1d]
+
+ rll %r0,%r0,0
+ rll %r15,%r1,0
+ rll %r1,%r15,0
+ rll %r15,%r15,0
+ rll %r0,%r0,-524288
+ rll %r0,%r0,-1
+ rll %r0,%r0,1
+ rll %r0,%r0,524287
+ rll %r0,%r0,0(%r1)
+ rll %r0,%r0,0(%r15)
+ rll %r0,%r0,524287(%r1)
+ rll %r0,%r0,524287(%r15)
+
+#CHECK: rllg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x1c]
+#CHECK: rllg %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x1c]
+#CHECK: rllg %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x1c]
+#CHECK: rllg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x1c]
+#CHECK: rllg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x1c]
+#CHECK: rllg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x1c]
+#CHECK: rllg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x1c]
+#CHECK: rllg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x1c]
+#CHECK: rllg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x1c]
+#CHECK: rllg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x1c]
+#CHECK: rllg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x1c]
+#CHECK: rllg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x1c]
+
+ rllg %r0,%r0,0
+ rllg %r15,%r1,0
+ rllg %r1,%r15,0
+ rllg %r15,%r15,0
+ rllg %r0,%r0,-524288
+ rllg %r0,%r0,-1
+ rllg %r0,%r0,1
+ rllg %r0,%r0,524287
+ rllg %r0,%r0,0(%r1)
+ rllg %r0,%r0,0(%r15)
+ rllg %r0,%r0,524287(%r1)
+ rllg %r0,%r0,524287(%r15)
+
+#CHECK: s %r0, 0 # encoding: [0x5b,0x00,0x00,0x00]
+#CHECK: s %r0, 4095 # encoding: [0x5b,0x00,0x0f,0xff]
+#CHECK: s %r0, 0(%r1) # encoding: [0x5b,0x00,0x10,0x00]
+#CHECK: s %r0, 0(%r15) # encoding: [0x5b,0x00,0xf0,0x00]
+#CHECK: s %r0, 4095(%r1,%r15) # encoding: [0x5b,0x01,0xff,0xff]
+#CHECK: s %r0, 4095(%r15,%r1) # encoding: [0x5b,0x0f,0x1f,0xff]
+#CHECK: s %r15, 0 # encoding: [0x5b,0xf0,0x00,0x00]
+
+ s %r0, 0
+ s %r0, 4095
+ s %r0, 0(%r1)
+ s %r0, 0(%r15)
+ s %r0, 4095(%r1,%r15)
+ s %r0, 4095(%r15,%r1)
+ s %r15, 0
+
+#CHECK: sdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1b]
+#CHECK: sdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1b]
+#CHECK: sdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1b]
+#CHECK: sdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1b]
+#CHECK: sdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1b]
+#CHECK: sdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1b]
+#CHECK: sdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1b]
+
+ sdb %f0, 0
+ sdb %f0, 4095
+ sdb %f0, 0(%r1)
+ sdb %f0, 0(%r15)
+ sdb %f0, 4095(%r1,%r15)
+ sdb %f0, 4095(%r15,%r1)
+ sdb %f15, 0
+
+#CHECK: sdbr %f0, %f0 # encoding: [0xb3,0x1b,0x00,0x00]
+#CHECK: sdbr %f0, %f15 # encoding: [0xb3,0x1b,0x00,0x0f]
+#CHECK: sdbr %f7, %f8 # encoding: [0xb3,0x1b,0x00,0x78]
+#CHECK: sdbr %f15, %f0 # encoding: [0xb3,0x1b,0x00,0xf0]
+
+ sdbr %f0, %f0
+ sdbr %f0, %f15
+ sdbr %f7, %f8
+ sdbr %f15, %f0
+
+#CHECK: seb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0b]
+#CHECK: seb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0b]
+#CHECK: seb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0b]
+#CHECK: seb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0b]
+#CHECK: seb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0b]
+#CHECK: seb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0b]
+#CHECK: seb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0b]
+
+ seb %f0, 0
+ seb %f0, 4095
+ seb %f0, 0(%r1)
+ seb %f0, 0(%r15)
+ seb %f0, 4095(%r1,%r15)
+ seb %f0, 4095(%r15,%r1)
+ seb %f15, 0
+
+#CHECK: sebr %f0, %f0 # encoding: [0xb3,0x0b,0x00,0x00]
+#CHECK: sebr %f0, %f15 # encoding: [0xb3,0x0b,0x00,0x0f]
+#CHECK: sebr %f7, %f8 # encoding: [0xb3,0x0b,0x00,0x78]
+#CHECK: sebr %f15, %f0 # encoding: [0xb3,0x0b,0x00,0xf0]
+
+ sebr %f0, %f0
+ sebr %f0, %f15
+ sebr %f7, %f8
+ sebr %f15, %f0
+
+#CHECK: sg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x09]
+#CHECK: sg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x09]
+#CHECK: sg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x09]
+#CHECK: sg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x09]
+#CHECK: sg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x09]
+#CHECK: sg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x09]
+#CHECK: sg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x09]
+#CHECK: sg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x09]
+#CHECK: sg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x09]
+#CHECK: sg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x09]
+
+ sg %r0, -524288
+ sg %r0, -1
+ sg %r0, 0
+ sg %r0, 1
+ sg %r0, 524287
+ sg %r0, 0(%r1)
+ sg %r0, 0(%r15)
+ sg %r0, 524287(%r1,%r15)
+ sg %r0, 524287(%r15,%r1)
+ sg %r15, 0
+
+#CHECK: sgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x19]
+#CHECK: sgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x19]
+#CHECK: sgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x19]
+#CHECK: sgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x19]
+#CHECK: sgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x19]
+#CHECK: sgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x19]
+#CHECK: sgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x19]
+#CHECK: sgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x19]
+#CHECK: sgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x19]
+#CHECK: sgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x19]
+
+ sgf %r0, -524288
+ sgf %r0, -1
+ sgf %r0, 0
+ sgf %r0, 1
+ sgf %r0, 524287
+ sgf %r0, 0(%r1)
+ sgf %r0, 0(%r15)
+ sgf %r0, 524287(%r1,%r15)
+ sgf %r0, 524287(%r15,%r1)
+ sgf %r15, 0
+
+#CHECK: sgfr %r0, %r0 # encoding: [0xb9,0x19,0x00,0x00]
+#CHECK: sgfr %r0, %r15 # encoding: [0xb9,0x19,0x00,0x0f]
+#CHECK: sgfr %r15, %r0 # encoding: [0xb9,0x19,0x00,0xf0]
+#CHECK: sgfr %r7, %r8 # encoding: [0xb9,0x19,0x00,0x78]
+
+ sgfr %r0,%r0
+ sgfr %r0,%r15
+ sgfr %r15,%r0
+ sgfr %r7,%r8
+
+#CHECK: sgr %r0, %r0 # encoding: [0xb9,0x09,0x00,0x00]
+#CHECK: sgr %r0, %r15 # encoding: [0xb9,0x09,0x00,0x0f]
+#CHECK: sgr %r15, %r0 # encoding: [0xb9,0x09,0x00,0xf0]
+#CHECK: sgr %r7, %r8 # encoding: [0xb9,0x09,0x00,0x78]
+
+ sgr %r0,%r0
+ sgr %r0,%r15
+ sgr %r15,%r0
+ sgr %r7,%r8
+
+#CHECK: sh %r0, 0 # encoding: [0x4b,0x00,0x00,0x00]
+#CHECK: sh %r0, 4095 # encoding: [0x4b,0x00,0x0f,0xff]
+#CHECK: sh %r0, 0(%r1) # encoding: [0x4b,0x00,0x10,0x00]
+#CHECK: sh %r0, 0(%r15) # encoding: [0x4b,0x00,0xf0,0x00]
+#CHECK: sh %r0, 4095(%r1,%r15) # encoding: [0x4b,0x01,0xff,0xff]
+#CHECK: sh %r0, 4095(%r15,%r1) # encoding: [0x4b,0x0f,0x1f,0xff]
+#CHECK: sh %r15, 0 # encoding: [0x4b,0xf0,0x00,0x00]
+
+ sh %r0, 0
+ sh %r0, 4095
+ sh %r0, 0(%r1)
+ sh %r0, 0(%r15)
+ sh %r0, 4095(%r1,%r15)
+ sh %r0, 4095(%r15,%r1)
+ sh %r15, 0
+
+#CHECK: shy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x7b]
+#CHECK: shy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x7b]
+#CHECK: shy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x7b]
+#CHECK: shy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x7b]
+#CHECK: shy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x7b]
+#CHECK: shy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x7b]
+#CHECK: shy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x7b]
+#CHECK: shy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x7b]
+#CHECK: shy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x7b]
+#CHECK: shy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x7b]
+
+ shy %r0, -524288
+ shy %r0, -1
+ shy %r0, 0
+ shy %r0, 1
+ shy %r0, 524287
+ shy %r0, 0(%r1)
+ shy %r0, 0(%r15)
+ shy %r0, 524287(%r1,%r15)
+ shy %r0, 524287(%r15,%r1)
+ shy %r15, 0
+
+#CHECK: sl %r0, 0 # encoding: [0x5f,0x00,0x00,0x00]
+#CHECK: sl %r0, 4095 # encoding: [0x5f,0x00,0x0f,0xff]
+#CHECK: sl %r0, 0(%r1) # encoding: [0x5f,0x00,0x10,0x00]
+#CHECK: sl %r0, 0(%r15) # encoding: [0x5f,0x00,0xf0,0x00]
+#CHECK: sl %r0, 4095(%r1,%r15) # encoding: [0x5f,0x01,0xff,0xff]
+#CHECK: sl %r0, 4095(%r15,%r1) # encoding: [0x5f,0x0f,0x1f,0xff]
+#CHECK: sl %r15, 0 # encoding: [0x5f,0xf0,0x00,0x00]
+
+ sl %r0, 0
+ sl %r0, 4095
+ sl %r0, 0(%r1)
+ sl %r0, 0(%r15)
+ sl %r0, 4095(%r1,%r15)
+ sl %r0, 4095(%r15,%r1)
+ sl %r15, 0
+
+#CHECK: slb %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x99]
+#CHECK: slb %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x99]
+#CHECK: slb %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x99]
+#CHECK: slb %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x99]
+#CHECK: slb %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x99]
+#CHECK: slb %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x99]
+#CHECK: slb %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x99]
+#CHECK: slb %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x99]
+#CHECK: slb %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x99]
+#CHECK: slb %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x99]
+
+ slb %r0, -524288
+ slb %r0, -1
+ slb %r0, 0
+ slb %r0, 1
+ slb %r0, 524287
+ slb %r0, 0(%r1)
+ slb %r0, 0(%r15)
+ slb %r0, 524287(%r1,%r15)
+ slb %r0, 524287(%r15,%r1)
+ slb %r15, 0
+
+#CHECK: slbg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x89]
+#CHECK: slbg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x89]
+#CHECK: slbg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x89]
+#CHECK: slbg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x89]
+#CHECK: slbg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x89]
+#CHECK: slbg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x89]
+#CHECK: slbg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x89]
+#CHECK: slbg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x89]
+#CHECK: slbg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x89]
+#CHECK: slbg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x89]
+
+ slbg %r0, -524288
+ slbg %r0, -1
+ slbg %r0, 0
+ slbg %r0, 1
+ slbg %r0, 524287
+ slbg %r0, 0(%r1)
+ slbg %r0, 0(%r15)
+ slbg %r0, 524287(%r1,%r15)
+ slbg %r0, 524287(%r15,%r1)
+ slbg %r15, 0
+
+#CHECK: slbgr %r0, %r0 # encoding: [0xb9,0x89,0x00,0x00]
+#CHECK: slbgr %r0, %r15 # encoding: [0xb9,0x89,0x00,0x0f]
+#CHECK: slbgr %r15, %r0 # encoding: [0xb9,0x89,0x00,0xf0]
+#CHECK: slbgr %r7, %r8 # encoding: [0xb9,0x89,0x00,0x78]
+
+ slbgr %r0,%r0
+ slbgr %r0,%r15
+ slbgr %r15,%r0
+ slbgr %r7,%r8
+
+#CHECK: slbr %r0, %r0 # encoding: [0xb9,0x99,0x00,0x00]
+#CHECK: slbr %r0, %r15 # encoding: [0xb9,0x99,0x00,0x0f]
+#CHECK: slbr %r15, %r0 # encoding: [0xb9,0x99,0x00,0xf0]
+#CHECK: slbr %r7, %r8 # encoding: [0xb9,0x99,0x00,0x78]
+
+ slbr %r0,%r0
+ slbr %r0,%r15
+ slbr %r15,%r0
+ slbr %r7,%r8
+
+#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]
+
+ slfi %r0, 0
+ slfi %r0, (1 << 32) - 1
+ slfi %r15, 0
+
+#CHECK: slg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0b]
+#CHECK: slg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0b]
+#CHECK: slg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0b]
+#CHECK: slg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0b]
+#CHECK: slg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0b]
+#CHECK: slg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0b]
+#CHECK: slg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0b]
+#CHECK: slg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0b]
+#CHECK: slg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0b]
+#CHECK: slg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x0b]
+
+ slg %r0, -524288
+ slg %r0, -1
+ slg %r0, 0
+ slg %r0, 1
+ slg %r0, 524287
+ slg %r0, 0(%r1)
+ slg %r0, 0(%r15)
+ slg %r0, 524287(%r1,%r15)
+ slg %r0, 524287(%r15,%r1)
+ slg %r15, 0
+
+#CHECK: slgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1b]
+#CHECK: slgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1b]
+#CHECK: slgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1b]
+#CHECK: slgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1b]
+#CHECK: slgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1b]
+#CHECK: slgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1b]
+#CHECK: slgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1b]
+#CHECK: slgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1b]
+#CHECK: slgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1b]
+#CHECK: slgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1b]
+
+ slgf %r0, -524288
+ slgf %r0, -1
+ slgf %r0, 0
+ slgf %r0, 1
+ slgf %r0, 524287
+ slgf %r0, 0(%r1)
+ slgf %r0, 0(%r15)
+ slgf %r0, 524287(%r1,%r15)
+ slgf %r0, 524287(%r15,%r1)
+ slgf %r15, 0
+
+#CHECK: slgfi %r0, 0 # encoding: [0xc2,0x04,0x00,0x00,0x00,0x00]
+#CHECK: slgfi %r0, 4294967295 # encoding: [0xc2,0x04,0xff,0xff,0xff,0xff]
+#CHECK: slgfi %r15, 0 # encoding: [0xc2,0xf4,0x00,0x00,0x00,0x00]
+
+ slgfi %r0, 0
+ slgfi %r0, (1 << 32) - 1
+ slgfi %r15, 0
+
+#CHECK: slgfr %r0, %r0 # encoding: [0xb9,0x1b,0x00,0x00]
+#CHECK: slgfr %r0, %r15 # encoding: [0xb9,0x1b,0x00,0x0f]
+#CHECK: slgfr %r15, %r0 # encoding: [0xb9,0x1b,0x00,0xf0]
+#CHECK: slgfr %r7, %r8 # encoding: [0xb9,0x1b,0x00,0x78]
+
+ slgfr %r0,%r0
+ slgfr %r0,%r15
+ slgfr %r15,%r0
+ slgfr %r7,%r8
+
+#CHECK: slgr %r0, %r0 # encoding: [0xb9,0x0b,0x00,0x00]
+#CHECK: slgr %r0, %r15 # encoding: [0xb9,0x0b,0x00,0x0f]
+#CHECK: slgr %r15, %r0 # encoding: [0xb9,0x0b,0x00,0xf0]
+#CHECK: slgr %r7, %r8 # encoding: [0xb9,0x0b,0x00,0x78]
+
+ slgr %r0,%r0
+ slgr %r0,%r15
+ slgr %r15,%r0
+ slgr %r7,%r8
+
+#CHECK: sll %r0, 0 # encoding: [0x89,0x00,0x00,0x00]
+#CHECK: sll %r7, 0 # encoding: [0x89,0x70,0x00,0x00]
+#CHECK: sll %r15, 0 # encoding: [0x89,0xf0,0x00,0x00]
+#CHECK: sll %r0, 4095 # encoding: [0x89,0x00,0x0f,0xff]
+#CHECK: sll %r0, 0(%r1) # encoding: [0x89,0x00,0x10,0x00]
+#CHECK: sll %r0, 0(%r15) # encoding: [0x89,0x00,0xf0,0x00]
+#CHECK: sll %r0, 4095(%r1) # encoding: [0x89,0x00,0x1f,0xff]
+#CHECK: sll %r0, 4095(%r15) # encoding: [0x89,0x00,0xff,0xff]
+
+ sll %r0,0
+ sll %r7,0
+ sll %r15,0
+ sll %r0,4095
+ sll %r0,0(%r1)
+ sll %r0,0(%r15)
+ sll %r0,4095(%r1)
+ sll %r0,4095(%r15)
+
+#CHECK: sllg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x0d]
+#CHECK: sllg %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x0d]
+#CHECK: sllg %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x0d]
+#CHECK: sllg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x0d]
+#CHECK: sllg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x0d]
+#CHECK: sllg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x0d]
+#CHECK: sllg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x0d]
+#CHECK: sllg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x0d]
+#CHECK: sllg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x0d]
+#CHECK: sllg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x0d]
+#CHECK: sllg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x0d]
+#CHECK: sllg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x0d]
+
+ sllg %r0,%r0,0
+ sllg %r15,%r1,0
+ sllg %r1,%r15,0
+ sllg %r15,%r15,0
+ sllg %r0,%r0,-524288
+ sllg %r0,%r0,-1
+ sllg %r0,%r0,1
+ sllg %r0,%r0,524287
+ sllg %r0,%r0,0(%r1)
+ sllg %r0,%r0,0(%r15)
+ sllg %r0,%r0,524287(%r1)
+ sllg %r0,%r0,524287(%r15)
+
+#CHECK: slr %r0, %r0 # encoding: [0x1f,0x00]
+#CHECK: slr %r0, %r15 # encoding: [0x1f,0x0f]
+#CHECK: slr %r15, %r0 # encoding: [0x1f,0xf0]
+#CHECK: slr %r7, %r8 # encoding: [0x1f,0x78]
+
+ slr %r0,%r0
+ slr %r0,%r15
+ slr %r15,%r0
+ slr %r7,%r8
+
+#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]
+#CHECK: sly %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x5f]
+#CHECK: sly %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x5f]
+#CHECK: sly %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x5f]
+#CHECK: sly %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x5f]
+#CHECK: sly %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x5f]
+#CHECK: sly %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x5f]
+#CHECK: sly %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x5f]
+
+ sly %r0, -524288
+ sly %r0, -1
+ sly %r0, 0
+ sly %r0, 1
+ sly %r0, 524287
+ sly %r0, 0(%r1)
+ sly %r0, 0(%r15)
+ sly %r0, 524287(%r1,%r15)
+ sly %r0, 524287(%r15,%r1)
+ sly %r15, 0
+
+#CHECK: sqdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x15]
+#CHECK: sqdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x15]
+#CHECK: sqdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x15]
+#CHECK: sqdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x15]
+#CHECK: sqdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x15]
+#CHECK: sqdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x15]
+#CHECK: sqdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x15]
+
+ sqdb %f0, 0
+ sqdb %f0, 4095
+ sqdb %f0, 0(%r1)
+ sqdb %f0, 0(%r15)
+ sqdb %f0, 4095(%r1,%r15)
+ sqdb %f0, 4095(%r15,%r1)
+ sqdb %f15, 0
+
+#CHECK: sqdbr %f0, %f0 # encoding: [0xb3,0x15,0x00,0x00]
+#CHECK: sqdbr %f0, %f15 # encoding: [0xb3,0x15,0x00,0x0f]
+#CHECK: sqdbr %f7, %f8 # encoding: [0xb3,0x15,0x00,0x78]
+#CHECK: sqdbr %f15, %f0 # encoding: [0xb3,0x15,0x00,0xf0]
+
+ sqdbr %f0, %f0
+ sqdbr %f0, %f15
+ sqdbr %f7, %f8
+ sqdbr %f15, %f0
+
+#CHECK: sqeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x14]
+#CHECK: sqeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x14]
+#CHECK: sqeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x14]
+#CHECK: sqeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x14]
+#CHECK: sqeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x14]
+#CHECK: sqeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x14]
+#CHECK: sqeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x14]
+
+ sqeb %f0, 0
+ sqeb %f0, 4095
+ sqeb %f0, 0(%r1)
+ sqeb %f0, 0(%r15)
+ sqeb %f0, 4095(%r1,%r15)
+ sqeb %f0, 4095(%r15,%r1)
+ sqeb %f15, 0
+
+#CHECK: sqebr %f0, %f0 # encoding: [0xb3,0x14,0x00,0x00]
+#CHECK: sqebr %f0, %f15 # encoding: [0xb3,0x14,0x00,0x0f]
+#CHECK: sqebr %f7, %f8 # encoding: [0xb3,0x14,0x00,0x78]
+#CHECK: sqebr %f15, %f0 # encoding: [0xb3,0x14,0x00,0xf0]
+
+ sqebr %f0, %f0
+ sqebr %f0, %f15
+ sqebr %f7, %f8
+ sqebr %f15, %f0
+
+#CHECK: sqxbr %f0, %f0 # encoding: [0xb3,0x16,0x00,0x00]
+#CHECK: sqxbr %f0, %f13 # encoding: [0xb3,0x16,0x00,0x0d]
+#CHECK: sqxbr %f8, %f8 # encoding: [0xb3,0x16,0x00,0x88]
+#CHECK: sqxbr %f13, %f0 # encoding: [0xb3,0x16,0x00,0xd0]
+
+ sqxbr %f0, %f0
+ sqxbr %f0, %f13
+ sqxbr %f8, %f8
+ sqxbr %f13, %f0
+
+#CHECK: sr %r0, %r0 # encoding: [0x1b,0x00]
+#CHECK: sr %r0, %r15 # encoding: [0x1b,0x0f]
+#CHECK: sr %r15, %r0 # encoding: [0x1b,0xf0]
+#CHECK: sr %r7, %r8 # encoding: [0x1b,0x78]
+
+ sr %r0,%r0
+ sr %r0,%r15
+ sr %r15,%r0
+ sr %r7,%r8
+
+#CHECK: sra %r0, 0 # encoding: [0x8a,0x00,0x00,0x00]
+#CHECK: sra %r7, 0 # encoding: [0x8a,0x70,0x00,0x00]
+#CHECK: sra %r15, 0 # encoding: [0x8a,0xf0,0x00,0x00]
+#CHECK: sra %r0, 4095 # encoding: [0x8a,0x00,0x0f,0xff]
+#CHECK: sra %r0, 0(%r1) # encoding: [0x8a,0x00,0x10,0x00]
+#CHECK: sra %r0, 0(%r15) # encoding: [0x8a,0x00,0xf0,0x00]
+#CHECK: sra %r0, 4095(%r1) # encoding: [0x8a,0x00,0x1f,0xff]
+#CHECK: sra %r0, 4095(%r15) # encoding: [0x8a,0x00,0xff,0xff]
+
+ sra %r0,0
+ sra %r7,0
+ sra %r15,0
+ sra %r0,4095
+ sra %r0,0(%r1)
+ sra %r0,0(%r15)
+ sra %r0,4095(%r1)
+ sra %r0,4095(%r15)
+
+#CHECK: srag %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x0a]
+#CHECK: srag %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x0a]
+#CHECK: srag %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x0a]
+#CHECK: srag %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x0a]
+#CHECK: srag %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x0a]
+#CHECK: srag %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x0a]
+#CHECK: srag %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x0a]
+#CHECK: srag %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x0a]
+#CHECK: srag %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x0a]
+#CHECK: srag %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x0a]
+#CHECK: srag %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x0a]
+#CHECK: srag %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x0a]
+
+ srag %r0,%r0,0
+ srag %r15,%r1,0
+ srag %r1,%r15,0
+ srag %r15,%r15,0
+ srag %r0,%r0,-524288
+ srag %r0,%r0,-1
+ srag %r0,%r0,1
+ srag %r0,%r0,524287
+ srag %r0,%r0,0(%r1)
+ srag %r0,%r0,0(%r15)
+ srag %r0,%r0,524287(%r1)
+ srag %r0,%r0,524287(%r15)
+
+#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]
+#CHECK: srl %r0, 4095 # encoding: [0x88,0x00,0x0f,0xff]
+#CHECK: srl %r0, 0(%r1) # encoding: [0x88,0x00,0x10,0x00]
+#CHECK: srl %r0, 0(%r15) # encoding: [0x88,0x00,0xf0,0x00]
+#CHECK: srl %r0, 4095(%r1) # encoding: [0x88,0x00,0x1f,0xff]
+#CHECK: srl %r0, 4095(%r15) # encoding: [0x88,0x00,0xff,0xff]
+
+ srl %r0,0
+ srl %r7,0
+ srl %r15,0
+ srl %r0,4095
+ srl %r0,0(%r1)
+ srl %r0,0(%r15)
+ srl %r0,4095(%r1)
+ srl %r0,4095(%r15)
+
+#CHECK: srlg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x0c]
+#CHECK: srlg %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x0c]
+#CHECK: srlg %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x0c]
+#CHECK: srlg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x0c]
+#CHECK: srlg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x0c]
+#CHECK: srlg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x0c]
+#CHECK: srlg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x0c]
+#CHECK: srlg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x0c]
+#CHECK: srlg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x0c]
+#CHECK: srlg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x0c]
+#CHECK: srlg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x0c]
+#CHECK: srlg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x0c]
+
+ srlg %r0,%r0,0
+ srlg %r15,%r1,0
+ srlg %r1,%r15,0
+ srlg %r15,%r15,0
+ srlg %r0,%r0,-524288
+ srlg %r0,%r0,-1
+ srlg %r0,%r0,1
+ srlg %r0,%r0,524287
+ srlg %r0,%r0,0(%r1)
+ srlg %r0,%r0,0(%r15)
+ srlg %r0,%r0,524287(%r1)
+ srlg %r0,%r0,524287(%r15)
+
+#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]
+#CHECK: st %r0, 0(%r15) # encoding: [0x50,0x00,0xf0,0x00]
+#CHECK: st %r0, 4095(%r1,%r15) # encoding: [0x50,0x01,0xff,0xff]
+#CHECK: st %r0, 4095(%r15,%r1) # encoding: [0x50,0x0f,0x1f,0xff]
+#CHECK: st %r15, 0 # encoding: [0x50,0xf0,0x00,0x00]
+
+ st %r0, 0
+ st %r0, 4095
+ st %r0, 0(%r1)
+ st %r0, 0(%r15)
+ st %r0, 4095(%r1,%r15)
+ st %r0, 4095(%r15,%r1)
+ st %r15, 0
+
+#CHECK: stc %r0, 0 # encoding: [0x42,0x00,0x00,0x00]
+#CHECK: stc %r0, 4095 # encoding: [0x42,0x00,0x0f,0xff]
+#CHECK: stc %r0, 0(%r1) # encoding: [0x42,0x00,0x10,0x00]
+#CHECK: stc %r0, 0(%r15) # encoding: [0x42,0x00,0xf0,0x00]
+#CHECK: stc %r0, 4095(%r1,%r15) # encoding: [0x42,0x01,0xff,0xff]
+#CHECK: stc %r0, 4095(%r15,%r1) # encoding: [0x42,0x0f,0x1f,0xff]
+#CHECK: stc %r15, 0 # encoding: [0x42,0xf0,0x00,0x00]
+
+ stc %r0, 0
+ stc %r0, 4095
+ stc %r0, 0(%r1)
+ stc %r0, 0(%r15)
+ stc %r0, 4095(%r1,%r15)
+ stc %r0, 4095(%r15,%r1)
+ stc %r15, 0
+
+#CHECK: stcy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x72]
+#CHECK: stcy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x72]
+#CHECK: stcy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x72]
+#CHECK: stcy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x72]
+#CHECK: stcy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x72]
+#CHECK: stcy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x72]
+#CHECK: stcy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x72]
+#CHECK: stcy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x72]
+#CHECK: stcy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x72]
+#CHECK: stcy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x72]
+
+ stcy %r0, -524288
+ stcy %r0, -1
+ stcy %r0, 0
+ stcy %r0, 1
+ stcy %r0, 524287
+ stcy %r0, 0(%r1)
+ stcy %r0, 0(%r15)
+ stcy %r0, 524287(%r1,%r15)
+ stcy %r0, 524287(%r15,%r1)
+ stcy %r15, 0
+
+#CHECK: std %f0, 0 # encoding: [0x60,0x00,0x00,0x00]
+#CHECK: std %f0, 4095 # encoding: [0x60,0x00,0x0f,0xff]
+#CHECK: std %f0, 0(%r1) # encoding: [0x60,0x00,0x10,0x00]
+#CHECK: std %f0, 0(%r15) # encoding: [0x60,0x00,0xf0,0x00]
+#CHECK: std %f0, 4095(%r1,%r15) # encoding: [0x60,0x01,0xff,0xff]
+#CHECK: std %f0, 4095(%r15,%r1) # encoding: [0x60,0x0f,0x1f,0xff]
+#CHECK: std %f15, 0 # encoding: [0x60,0xf0,0x00,0x00]
+
+ std %f0, 0
+ std %f0, 4095
+ std %f0, 0(%r1)
+ std %f0, 0(%r15)
+ std %f0, 4095(%r1,%r15)
+ std %f0, 4095(%r15,%r1)
+ std %f15, 0
+
+#CHECK: stdy %f0, -524288 # encoding: [0xed,0x00,0x00,0x00,0x80,0x67]
+#CHECK: stdy %f0, -1 # encoding: [0xed,0x00,0x0f,0xff,0xff,0x67]
+#CHECK: stdy %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x67]
+#CHECK: stdy %f0, 1 # encoding: [0xed,0x00,0x00,0x01,0x00,0x67]
+#CHECK: stdy %f0, 524287 # encoding: [0xed,0x00,0x0f,0xff,0x7f,0x67]
+#CHECK: stdy %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x67]
+#CHECK: stdy %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x67]
+#CHECK: stdy %f0, 524287(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x7f,0x67]
+#CHECK: stdy %f0, 524287(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x7f,0x67]
+#CHECK: stdy %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x67]
+
+ stdy %f0, -524288
+ stdy %f0, -1
+ stdy %f0, 0
+ stdy %f0, 1
+ stdy %f0, 524287
+ stdy %f0, 0(%r1)
+ stdy %f0, 0(%r15)
+ stdy %f0, 524287(%r1,%r15)
+ stdy %f0, 524287(%r15,%r1)
+ stdy %f15, 0
+
+#CHECK: ste %f0, 0 # encoding: [0x70,0x00,0x00,0x00]
+#CHECK: ste %f0, 4095 # encoding: [0x70,0x00,0x0f,0xff]
+#CHECK: ste %f0, 0(%r1) # encoding: [0x70,0x00,0x10,0x00]
+#CHECK: ste %f0, 0(%r15) # encoding: [0x70,0x00,0xf0,0x00]
+#CHECK: ste %f0, 4095(%r1,%r15) # encoding: [0x70,0x01,0xff,0xff]
+#CHECK: ste %f0, 4095(%r15,%r1) # encoding: [0x70,0x0f,0x1f,0xff]
+#CHECK: ste %f15, 0 # encoding: [0x70,0xf0,0x00,0x00]
+
+ ste %f0, 0
+ ste %f0, 4095
+ ste %f0, 0(%r1)
+ ste %f0, 0(%r15)
+ ste %f0, 4095(%r1,%r15)
+ ste %f0, 4095(%r15,%r1)
+ ste %f15, 0
+
+#CHECK: stey %f0, -524288 # encoding: [0xed,0x00,0x00,0x00,0x80,0x66]
+#CHECK: stey %f0, -1 # encoding: [0xed,0x00,0x0f,0xff,0xff,0x66]
+#CHECK: stey %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x66]
+#CHECK: stey %f0, 1 # encoding: [0xed,0x00,0x00,0x01,0x00,0x66]
+#CHECK: stey %f0, 524287 # encoding: [0xed,0x00,0x0f,0xff,0x7f,0x66]
+#CHECK: stey %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x66]
+#CHECK: stey %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x66]
+#CHECK: stey %f0, 524287(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x7f,0x66]
+#CHECK: stey %f0, 524287(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x7f,0x66]
+#CHECK: stey %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x66]
+
+ stey %f0, -524288
+ stey %f0, -1
+ stey %f0, 0
+ stey %f0, 1
+ stey %f0, 524287
+ stey %f0, 0(%r1)
+ stey %f0, 0(%r15)
+ stey %f0, 524287(%r1,%r15)
+ stey %f0, 524287(%r15,%r1)
+ stey %f15, 0
+
+#CHECK: stg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x24]
+#CHECK: stg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x24]
+#CHECK: stg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x24]
+#CHECK: stg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x24]
+#CHECK: stg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x24]
+#CHECK: stg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x24]
+#CHECK: stg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x24]
+#CHECK: stg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x24]
+#CHECK: stg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x24]
+#CHECK: stg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x24]
+
+ stg %r0, -524288
+ stg %r0, -1
+ stg %r0, 0
+ stg %r0, 1
+ stg %r0, 524287
+ stg %r0, 0(%r1)
+ stg %r0, 0(%r15)
+ stg %r0, 524287(%r1,%r15)
+ stg %r0, 524287(%r15,%r1)
+ stg %r15, 0
+
+#CHECK: stgrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ stgrl %r0, -0x100000000
+#CHECK: stgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ stgrl %r0, -2
+#CHECK: stgrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ stgrl %r0, 0
+#CHECK: stgrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ stgrl %r0, 0xfffffffe
+
+#CHECK: stgrl %r0, foo # encoding: [0xc4,0x0b,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: stgrl %r15, foo # encoding: [0xc4,0xfb,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ stgrl %r0,foo
+ stgrl %r15,foo
+
+#CHECK: stgrl %r3, bar+100 # encoding: [0xc4,0x3b,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: stgrl %r4, bar+100 # encoding: [0xc4,0x4b,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ stgrl %r3,bar+100
+ stgrl %r4,bar+100
+
+#CHECK: stgrl %r7, frob@PLT # encoding: [0xc4,0x7b,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: stgrl %r8, frob@PLT # encoding: [0xc4,0x8b,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ stgrl %r7,frob@PLT
+ stgrl %r8,frob@PLT
+
+#CHECK: sth %r0, 0 # encoding: [0x40,0x00,0x00,0x00]
+#CHECK: sth %r0, 4095 # encoding: [0x40,0x00,0x0f,0xff]
+#CHECK: sth %r0, 0(%r1) # encoding: [0x40,0x00,0x10,0x00]
+#CHECK: sth %r0, 0(%r15) # encoding: [0x40,0x00,0xf0,0x00]
+#CHECK: sth %r0, 4095(%r1,%r15) # encoding: [0x40,0x01,0xff,0xff]
+#CHECK: sth %r0, 4095(%r15,%r1) # encoding: [0x40,0x0f,0x1f,0xff]
+#CHECK: sth %r15, 0 # encoding: [0x40,0xf0,0x00,0x00]
+
+ sth %r0, 0
+ sth %r0, 4095
+ sth %r0, 0(%r1)
+ sth %r0, 0(%r15)
+ sth %r0, 4095(%r1,%r15)
+ sth %r0, 4095(%r15,%r1)
+ sth %r15, 0
+
+#CHECK: sthrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ sthrl %r0, -0x100000000
+#CHECK: sthrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ sthrl %r0, -2
+#CHECK: sthrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ sthrl %r0, 0
+#CHECK: sthrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ sthrl %r0, 0xfffffffe
+
+#CHECK: sthrl %r0, foo # encoding: [0xc4,0x07,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: sthrl %r15, foo # encoding: [0xc4,0xf7,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ sthrl %r0,foo
+ sthrl %r15,foo
+
+#CHECK: sthrl %r3, bar+100 # encoding: [0xc4,0x37,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: sthrl %r4, bar+100 # encoding: [0xc4,0x47,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ sthrl %r3,bar+100
+ sthrl %r4,bar+100
+
+#CHECK: sthrl %r7, frob@PLT # encoding: [0xc4,0x77,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: sthrl %r8, frob@PLT # encoding: [0xc4,0x87,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ sthrl %r7,frob@PLT
+ sthrl %r8,frob@PLT
+
+#CHECK: sthy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x70]
+#CHECK: sthy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x70]
+#CHECK: sthy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x70]
+#CHECK: sthy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x70]
+#CHECK: sthy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x70]
+#CHECK: sthy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x70]
+#CHECK: sthy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x70]
+#CHECK: sthy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x70]
+#CHECK: sthy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x70]
+#CHECK: sthy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x70]
+
+ sthy %r0, -524288
+ sthy %r0, -1
+ sthy %r0, 0
+ sthy %r0, 1
+ sthy %r0, 524287
+ sthy %r0, 0(%r1)
+ sthy %r0, 0(%r15)
+ sthy %r0, 524287(%r1,%r15)
+ sthy %r0, 524287(%r15,%r1)
+ sthy %r15, 0
+
+#CHECK: stmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x24]
+#CHECK: stmg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x24]
+#CHECK: stmg %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x24]
+#CHECK: stmg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x24]
+#CHECK: stmg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x24]
+#CHECK: stmg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x24]
+#CHECK: stmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x24]
+#CHECK: stmg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x24]
+#CHECK: stmg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x24]
+#CHECK: stmg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x24]
+#CHECK: stmg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x24]
+#CHECK: stmg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x24]
+#CHECK: stmg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x24]
+
+ stmg %r0,%r0,0
+ stmg %r0,%r15,0
+ stmg %r14,%r15,0
+ stmg %r15,%r15,0
+ stmg %r0,%r0,-524288
+ stmg %r0,%r0,-1
+ stmg %r0,%r0,0
+ stmg %r0,%r0,1
+ stmg %r0,%r0,524287
+ stmg %r0,%r0,0(%r1)
+ stmg %r0,%r0,0(%r15)
+ stmg %r0,%r0,524287(%r1)
+ stmg %r0,%r0,524287(%r15)
+
+#CHECK: strl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ strl %r0, -0x100000000
+#CHECK: strl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ strl %r0, -2
+#CHECK: strl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ strl %r0, 0
+#CHECK: strl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ strl %r0, 0xfffffffe
+
+#CHECK: strl %r0, foo # encoding: [0xc4,0x0f,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: strl %r15, foo # encoding: [0xc4,0xff,A,A,A,A]
+# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+
+ strl %r0,foo
+ strl %r15,foo
+
+#CHECK: strl %r3, bar+100 # encoding: [0xc4,0x3f,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: strl %r4, bar+100 # encoding: [0xc4,0x4f,A,A,A,A]
+# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+
+ strl %r3,bar+100
+ strl %r4,bar+100
+
+#CHECK: strl %r7, frob@PLT # encoding: [0xc4,0x7f,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+#CHECK: strl %r8, frob@PLT # encoding: [0xc4,0x8f,A,A,A,A]
+# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
+
+ strl %r7,frob@PLT
+ strl %r8,frob@PLT
+
+#CHECK: strv %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x3e]
+#CHECK: strv %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x3e]
+#CHECK: strv %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x3e]
+#CHECK: strv %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x3e]
+#CHECK: strv %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x3e]
+#CHECK: strv %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x3e]
+#CHECK: strv %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x3e]
+#CHECK: strv %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x3e]
+#CHECK: strv %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x3e]
+#CHECK: strv %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x3e]
+
+ strv %r0,-524288
+ strv %r0,-1
+ strv %r0,0
+ strv %r0,1
+ strv %r0,524287
+ strv %r0,0(%r1)
+ strv %r0,0(%r15)
+ strv %r0,524287(%r1,%r15)
+ strv %r0,524287(%r15,%r1)
+ strv %r15,0
+
+#CHECK: strvg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x2f]
+#CHECK: strvg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x2f]
+#CHECK: strvg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x2f]
+#CHECK: strvg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x2f]
+#CHECK: strvg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x2f]
+#CHECK: strvg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x2f]
+#CHECK: strvg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x2f]
+#CHECK: strvg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x2f]
+#CHECK: strvg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x2f]
+#CHECK: strvg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x2f]
+
+ strvg %r0,-524288
+ strvg %r0,-1
+ strvg %r0,0
+ strvg %r0,1
+ strvg %r0,524287
+ strvg %r0,0(%r1)
+ strvg %r0,0(%r15)
+ strvg %r0,524287(%r1,%r15)
+ strvg %r0,524287(%r15,%r1)
+ strvg %r15,0
+
+#CHECK: sty %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x50]
+#CHECK: sty %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x50]
+#CHECK: sty %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x50]
+#CHECK: sty %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x50]
+#CHECK: sty %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x50]
+#CHECK: sty %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x50]
+#CHECK: sty %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x50]
+#CHECK: sty %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x50]
+#CHECK: sty %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x50]
+#CHECK: sty %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x50]
+
+ sty %r0, -524288
+ sty %r0, -1
+ sty %r0, 0
+ sty %r0, 1
+ sty %r0, 524287
+ sty %r0, 0(%r1)
+ sty %r0, 0(%r15)
+ sty %r0, 524287(%r1,%r15)
+ sty %r0, 524287(%r15,%r1)
+ sty %r15, 0
+
+#CHECK: sxbr %f0, %f0 # encoding: [0xb3,0x4b,0x00,0x00]
+#CHECK: sxbr %f0, %f13 # encoding: [0xb3,0x4b,0x00,0x0d]
+#CHECK: sxbr %f8, %f8 # encoding: [0xb3,0x4b,0x00,0x88]
+#CHECK: sxbr %f13, %f0 # encoding: [0xb3,0x4b,0x00,0xd0]
+
+ sxbr %f0, %f0
+ sxbr %f0, %f13
+ sxbr %f8, %f8
+ sxbr %f13, %f0
+
+#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]
+#CHECK: sy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x5b]
+#CHECK: sy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x5b]
+#CHECK: sy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x5b]
+#CHECK: sy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x5b]
+#CHECK: sy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x5b]
+#CHECK: sy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x5b]
+#CHECK: sy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x5b]
+
+ sy %r0, -524288
+ sy %r0, -1
+ sy %r0, 0
+ sy %r0, 1
+ sy %r0, 524287
+ sy %r0, 0(%r1)
+ sy %r0, 0(%r15)
+ sy %r0, 524287(%r1,%r15)
+ sy %r0, 524287(%r15,%r1)
+ sy %r15, 0
+
+#CHECK: x %r0, 0 # encoding: [0x57,0x00,0x00,0x00]
+#CHECK: x %r0, 4095 # encoding: [0x57,0x00,0x0f,0xff]
+#CHECK: x %r0, 0(%r1) # encoding: [0x57,0x00,0x10,0x00]
+#CHECK: x %r0, 0(%r15) # encoding: [0x57,0x00,0xf0,0x00]
+#CHECK: x %r0, 4095(%r1,%r15) # encoding: [0x57,0x01,0xff,0xff]
+#CHECK: x %r0, 4095(%r15,%r1) # encoding: [0x57,0x0f,0x1f,0xff]
+#CHECK: x %r15, 0 # encoding: [0x57,0xf0,0x00,0x00]
+
+ x %r0, 0
+ x %r0, 4095
+ x %r0, 0(%r1)
+ x %r0, 0(%r15)
+ x %r0, 4095(%r1,%r15)
+ x %r0, 4095(%r15,%r1)
+ x %r15, 0
+
+#CHECK: xg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x82]
+#CHECK: xg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x82]
+#CHECK: xg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x82]
+#CHECK: xg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x82]
+#CHECK: xg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x82]
+#CHECK: xg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x82]
+#CHECK: xg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x82]
+#CHECK: xg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x82]
+#CHECK: xg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x82]
+#CHECK: xg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x82]
+
+ xg %r0, -524288
+ xg %r0, -1
+ xg %r0, 0
+ xg %r0, 1
+ xg %r0, 524287
+ xg %r0, 0(%r1)
+ xg %r0, 0(%r15)
+ xg %r0, 524287(%r1,%r15)
+ xg %r0, 524287(%r15,%r1)
+ xg %r15, 0
+
+#CHECK: xgr %r0, %r0 # encoding: [0xb9,0x82,0x00,0x00]
+#CHECK: xgr %r0, %r15 # encoding: [0xb9,0x82,0x00,0x0f]
+#CHECK: xgr %r15, %r0 # encoding: [0xb9,0x82,0x00,0xf0]
+#CHECK: xgr %r7, %r8 # encoding: [0xb9,0x82,0x00,0x78]
+
+ xgr %r0,%r0
+ xgr %r0,%r15
+ xgr %r15,%r0
+ xgr %r7,%r8
+
+#CHECK: xi 0, 0 # encoding: [0x97,0x00,0x00,0x00]
+#CHECK: xi 4095, 0 # encoding: [0x97,0x00,0x0f,0xff]
+#CHECK: xi 0, 255 # encoding: [0x97,0xff,0x00,0x00]
+#CHECK: xi 0(%r1), 42 # encoding: [0x97,0x2a,0x10,0x00]
+#CHECK: xi 0(%r15), 42 # encoding: [0x97,0x2a,0xf0,0x00]
+#CHECK: xi 4095(%r1), 42 # encoding: [0x97,0x2a,0x1f,0xff]
+#CHECK: xi 4095(%r15), 42 # encoding: [0x97,0x2a,0xff,0xff]
+
+ xi 0, 0
+ xi 4095, 0
+ xi 0, 255
+ xi 0(%r1), 42
+ xi 0(%r15), 42
+ xi 4095(%r1), 42
+ xi 4095(%r15), 42
+
+#CHECK: xihf %r0, 0 # encoding: [0xc0,0x06,0x00,0x00,0x00,0x00]
+#CHECK: xihf %r0, 4294967295 # encoding: [0xc0,0x06,0xff,0xff,0xff,0xff]
+#CHECK: xihf %r15, 0 # encoding: [0xc0,0xf6,0x00,0x00,0x00,0x00]
+
+ xihf %r0, 0
+ xihf %r0, 0xffffffff
+ xihf %r15, 0
+
+#CHECK: xilf %r0, 0 # encoding: [0xc0,0x07,0x00,0x00,0x00,0x00]
+#CHECK: xilf %r0, 4294967295 # encoding: [0xc0,0x07,0xff,0xff,0xff,0xff]
+#CHECK: xilf %r15, 0 # encoding: [0xc0,0xf7,0x00,0x00,0x00,0x00]
+
+ xilf %r0, 0
+ xilf %r0, 0xffffffff
+ xilf %r15, 0
+
+#CHECK: xiy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x57]
+#CHECK: xiy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x57]
+#CHECK: xiy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x57]
+#CHECK: xiy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x57]
+#CHECK: xiy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x57]
+#CHECK: xiy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x57]
+#CHECK: xiy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x57]
+#CHECK: xiy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x57]
+#CHECK: xiy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x57]
+#CHECK: xiy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x57]
+
+ xiy -524288, 0
+ xiy -1, 0
+ xiy 0, 0
+ xiy 1, 0
+ xiy 524287, 0
+ xiy 0, 255
+ xiy 0(%r1), 42
+ xiy 0(%r15), 42
+ xiy 524287(%r1), 42
+ xiy 524287(%r15), 42
+
+#CHECK: xr %r0, %r0 # encoding: [0x17,0x00]
+#CHECK: xr %r0, %r15 # encoding: [0x17,0x0f]
+#CHECK: xr %r15, %r0 # encoding: [0x17,0xf0]
+#CHECK: xr %r7, %r8 # encoding: [0x17,0x78]
+
+ xr %r0,%r0
+ xr %r0,%r15
+ xr %r15,%r0
+ xr %r7,%r8
+
+#CHECK: xy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x57]
+#CHECK: xy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x57]
+#CHECK: xy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x57]
+#CHECK: xy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x57]
+#CHECK: xy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x57]
+#CHECK: xy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x57]
+#CHECK: xy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x57]
+#CHECK: xy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x57]
+#CHECK: xy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x57]
+#CHECK: xy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x57]
+
+ xy %r0, -524288
+ xy %r0, -1
+ xy %r0, 0
+ xy %r0, 1
+ xy %r0, 524287
+ xy %r0, 0(%r1)
+ xy %r0, 0(%r15)
+ xy %r0, 524287(%r1,%r15)
+ xy %r0, 524287(%r15,%r1)
+ xy %r15, 0
diff --git a/test/MC/SystemZ/insn-ic-01.s b/test/MC/SystemZ/insn-ic-01.s
deleted file mode 100644
index 76772f9d1a..0000000000
--- a/test/MC/SystemZ/insn-ic-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ic %r0, 0 # encoding: [0x43,0x00,0x00,0x00]
-#CHECK: ic %r0, 4095 # encoding: [0x43,0x00,0x0f,0xff]
-#CHECK: ic %r0, 0(%r1) # encoding: [0x43,0x00,0x10,0x00]
-#CHECK: ic %r0, 0(%r15) # encoding: [0x43,0x00,0xf0,0x00]
-#CHECK: ic %r0, 4095(%r1,%r15) # encoding: [0x43,0x01,0xff,0xff]
-#CHECK: ic %r0, 4095(%r15,%r1) # encoding: [0x43,0x0f,0x1f,0xff]
-#CHECK: ic %r15, 0 # encoding: [0x43,0xf0,0x00,0x00]
-
- ic %r0, 0
- ic %r0, 4095
- ic %r0, 0(%r1)
- ic %r0, 0(%r15)
- ic %r0, 4095(%r1,%r15)
- ic %r0, 4095(%r15,%r1)
- ic %r15, 0
diff --git a/test/MC/SystemZ/insn-ic-02.s b/test/MC/SystemZ/insn-ic-02.s
deleted file mode 100644
index e70ef1c58d..0000000000
--- a/test/MC/SystemZ/insn-ic-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ic %r0, -1
-#CHECK: error: invalid operand
-#CHECK: ic %r0, 4096
-
- ic %r0, -1
- ic %r0, 4096
diff --git a/test/MC/SystemZ/insn-icy-01.s b/test/MC/SystemZ/insn-icy-01.s
deleted file mode 100644
index 079ae2142f..0000000000
--- a/test/MC/SystemZ/insn-icy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: icy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x73]
-#CHECK: icy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x73]
-#CHECK: icy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x73]
-#CHECK: icy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x73]
-#CHECK: icy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x73]
-#CHECK: icy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x73]
-#CHECK: icy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x73]
-#CHECK: icy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x73]
-#CHECK: icy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x73]
-#CHECK: icy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x73]
-
- icy %r0, -524288
- icy %r0, -1
- icy %r0, 0
- icy %r0, 1
- icy %r0, 524287
- icy %r0, 0(%r1)
- icy %r0, 0(%r15)
- icy %r0, 524287(%r1,%r15)
- icy %r0, 524287(%r15,%r1)
- icy %r15, 0
diff --git a/test/MC/SystemZ/insn-icy-02.s b/test/MC/SystemZ/insn-icy-02.s
deleted file mode 100644
index 321c86f9df..0000000000
--- a/test/MC/SystemZ/insn-icy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: icy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: icy %r0, 524288
-
- icy %r0, -524289
- icy %r0, 524288
diff --git a/test/MC/SystemZ/insn-iihf-01.s b/test/MC/SystemZ/insn-iihf-01.s
deleted file mode 100644
index bf8d48fbc6..0000000000
--- a/test/MC/SystemZ/insn-iihf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-
- iihf %r0, 0
- iihf %r0, 0xffffffff
- iihf %r15, 0
diff --git a/test/MC/SystemZ/insn-iihf-02.s b/test/MC/SystemZ/insn-iihf-02.s
deleted file mode 100644
index 1c7a69addf..0000000000
--- a/test/MC/SystemZ/insn-iihf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: iihf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: iihf %r0, 1 << 32
-
- iihf %r0, -1
- iihf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-iihh-01.s b/test/MC/SystemZ/insn-iihh-01.s
deleted file mode 100644
index a2ba9a33a4..0000000000
--- a/test/MC/SystemZ/insn-iihh-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: iihh %r0, 0 # encoding: [0xa5,0x00,0x00,0x00]
-#CHECK: iihh %r0, 32768 # encoding: [0xa5,0x00,0x80,0x00]
-#CHECK: iihh %r0, 65535 # encoding: [0xa5,0x00,0xff,0xff]
-#CHECK: iihh %r15, 0 # encoding: [0xa5,0xf0,0x00,0x00]
-
- iihh %r0, 0
- iihh %r0, 0x8000
- iihh %r0, 0xffff
- iihh %r15, 0
diff --git a/test/MC/SystemZ/insn-iihh-02.s b/test/MC/SystemZ/insn-iihh-02.s
deleted file mode 100644
index 2d8f8541dd..0000000000
--- a/test/MC/SystemZ/insn-iihh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: iihh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: iihh %r0, 0x10000
-
- iihh %r0, -1
- iihh %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-iihl-01.s b/test/MC/SystemZ/insn-iihl-01.s
deleted file mode 100644
index ff591e8b86..0000000000
--- a/test/MC/SystemZ/insn-iihl-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: iihl %r0, 0 # encoding: [0xa5,0x01,0x00,0x00]
-#CHECK: iihl %r0, 32768 # encoding: [0xa5,0x01,0x80,0x00]
-#CHECK: iihl %r0, 65535 # encoding: [0xa5,0x01,0xff,0xff]
-#CHECK: iihl %r15, 0 # encoding: [0xa5,0xf1,0x00,0x00]
-
- iihl %r0, 0
- iihl %r0, 0x8000
- iihl %r0, 0xffff
- iihl %r15, 0
diff --git a/test/MC/SystemZ/insn-iihl-02.s b/test/MC/SystemZ/insn-iihl-02.s
deleted file mode 100644
index 262955e38d..0000000000
--- a/test/MC/SystemZ/insn-iihl-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: iihl %r0, -1
-#CHECK: error: invalid operand
-#CHECK: iihl %r0, 0x10000
-
- iihl %r0, -1
- iihl %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-iilf-01.s b/test/MC/SystemZ/insn-iilf-01.s
deleted file mode 100644
index 228e147676..0000000000
--- a/test/MC/SystemZ/insn-iilf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: iilf %r0, 0 # encoding: [0xc0,0x09,0x00,0x00,0x00,0x00]
-#CHECK: iilf %r0, 4294967295 # encoding: [0xc0,0x09,0xff,0xff,0xff,0xff]
-#CHECK: iilf %r15, 0 # encoding: [0xc0,0xf9,0x00,0x00,0x00,0x00]
-
- iilf %r0, 0
- iilf %r0, 0xffffffff
- iilf %r15, 0
diff --git a/test/MC/SystemZ/insn-iilf-02.s b/test/MC/SystemZ/insn-iilf-02.s
deleted file mode 100644
index c7571e8f6d..0000000000
--- a/test/MC/SystemZ/insn-iilf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: iilf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: iilf %r0, 1 << 32
-
- iilf %r0, -1
- iilf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-iilh-01.s b/test/MC/SystemZ/insn-iilh-01.s
deleted file mode 100644
index 045ccfe80b..0000000000
--- a/test/MC/SystemZ/insn-iilh-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: iilh %r0, 0 # encoding: [0xa5,0x02,0x00,0x00]
-#CHECK: iilh %r0, 32768 # encoding: [0xa5,0x02,0x80,0x00]
-#CHECK: iilh %r0, 65535 # encoding: [0xa5,0x02,0xff,0xff]
-#CHECK: iilh %r15, 0 # encoding: [0xa5,0xf2,0x00,0x00]
-
- iilh %r0, 0
- iilh %r0, 0x8000
- iilh %r0, 0xffff
- iilh %r15, 0
diff --git a/test/MC/SystemZ/insn-iilh-02.s b/test/MC/SystemZ/insn-iilh-02.s
deleted file mode 100644
index af5bdacaff..0000000000
--- a/test/MC/SystemZ/insn-iilh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: iilh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: iilh %r0, 0x10000
-
- iilh %r0, -1
- iilh %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-iill-01.s b/test/MC/SystemZ/insn-iill-01.s
deleted file mode 100644
index bf50eeb0f6..0000000000
--- a/test/MC/SystemZ/insn-iill-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: iill %r0, 0 # encoding: [0xa5,0x03,0x00,0x00]
-#CHECK: iill %r0, 32768 # encoding: [0xa5,0x03,0x80,0x00]
-#CHECK: iill %r0, 65535 # encoding: [0xa5,0x03,0xff,0xff]
-#CHECK: iill %r15, 0 # encoding: [0xa5,0xf3,0x00,0x00]
-
- iill %r0, 0
- iill %r0, 0x8000
- iill %r0, 0xffff
- iill %r15, 0
diff --git a/test/MC/SystemZ/insn-iill-02.s b/test/MC/SystemZ/insn-iill-02.s
deleted file mode 100644
index fe31e44ee6..0000000000
--- a/test/MC/SystemZ/insn-iill-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: iill %r0, -1
-#CHECK: error: invalid operand
-#CHECK: iill %r0, 0x10000
-
- iill %r0, -1
- iill %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-l-01.s b/test/MC/SystemZ/insn-l-01.s
deleted file mode 100644
index a589116ebf..0000000000
--- a/test/MC/SystemZ/insn-l-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: l %r0, 0(%r15) # encoding: [0x58,0x00,0xf0,0x00]
-#CHECK: l %r0, 4095(%r1,%r15) # encoding: [0x58,0x01,0xff,0xff]
-#CHECK: l %r0, 4095(%r15,%r1) # encoding: [0x58,0x0f,0x1f,0xff]
-#CHECK: l %r15, 0 # encoding: [0x58,0xf0,0x00,0x00]
-
- l %r0, 0
- l %r0, 4095
- l %r0, 0(%r1)
- l %r0, 0(%r15)
- l %r0, 4095(%r1,%r15)
- l %r0, 4095(%r15,%r1)
- l %r15, 0
diff --git a/test/MC/SystemZ/insn-l-02.s b/test/MC/SystemZ/insn-l-02.s
deleted file mode 100644
index fad96ff6ce..0000000000
--- a/test/MC/SystemZ/insn-l-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: l %r0, -1
-#CHECK: error: invalid operand
-#CHECK: l %r0, 4096
-
- l %r0, -1
- l %r0, 4096
diff --git a/test/MC/SystemZ/insn-la-01.s b/test/MC/SystemZ/insn-la-01.s
deleted file mode 100644
index d4776ab585..0000000000
--- a/test/MC/SystemZ/insn-la-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: la %r0, 0 # encoding: [0x41,0x00,0x00,0x00]
-#CHECK: la %r0, 4095 # encoding: [0x41,0x00,0x0f,0xff]
-#CHECK: la %r0, 0(%r1) # encoding: [0x41,0x00,0x10,0x00]
-#CHECK: la %r0, 0(%r15) # encoding: [0x41,0x00,0xf0,0x00]
-#CHECK: la %r0, 4095(%r1,%r15) # encoding: [0x41,0x01,0xff,0xff]
-#CHECK: la %r0, 4095(%r15,%r1) # encoding: [0x41,0x0f,0x1f,0xff]
-#CHECK: la %r15, 0 # encoding: [0x41,0xf0,0x00,0x00]
-
- la %r0, 0
- la %r0, 4095
- la %r0, 0(%r1)
- la %r0, 0(%r15)
- la %r0, 4095(%r1,%r15)
- la %r0, 4095(%r15,%r1)
- la %r15, 0
diff --git a/test/MC/SystemZ/insn-la-02.s b/test/MC/SystemZ/insn-la-02.s
deleted file mode 100644
index 35c1ab04b5..0000000000
--- a/test/MC/SystemZ/insn-la-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: la %r0, -1
-#CHECK: error: invalid operand
-#CHECK: la %r0, 4096
-
- la %r0, -1
- la %r0, 4096
diff --git a/test/MC/SystemZ/insn-larl-01.s b/test/MC/SystemZ/insn-larl-01.s
deleted file mode 100644
index 3d0f98f562..0000000000
--- a/test/MC/SystemZ/insn-larl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: larl %r0, 2864434397 # encoding: [0xc0,0x00,0x55,0x5d,0xe6,0x6e]
-#CHECK: larl %r15, 2864434397 # encoding: [0xc0,0xf0,0x55,0x5d,0xe6,0x6e]
-
- larl %r0,0xaabbccdd
- larl %r15,0xaabbccdd
-
-#CHECK: larl %r0, foo # encoding: [0xc0,0x00,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: larl %r15, foo # encoding: [0xc0,0xf0,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- larl %r0,foo
- larl %r15,foo
-
-#CHECK: larl %r3, bar+100 # encoding: [0xc0,0x30,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: larl %r4, bar+100 # encoding: [0xc0,0x40,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- larl %r3,bar+100
- larl %r4,bar+100
-
-#CHECK: larl %r7, frob@PLT # encoding: [0xc0,0x70,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: larl %r8, frob@PLT # encoding: [0xc0,0x80,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- larl %r7,frob@PLT
- larl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-lay-01.s b/test/MC/SystemZ/insn-lay-01.s
deleted file mode 100644
index daa88288ab..0000000000
--- a/test/MC/SystemZ/insn-lay-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lay %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x71]
-#CHECK: lay %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x71]
-#CHECK: lay %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x71]
-#CHECK: lay %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x71]
-#CHECK: lay %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x71]
-#CHECK: lay %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x71]
-#CHECK: lay %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x71]
-#CHECK: lay %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x71]
-#CHECK: lay %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x71]
-#CHECK: lay %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x71]
-
- lay %r0, -524288
- lay %r0, -1
- lay %r0, 0
- lay %r0, 1
- lay %r0, 524287
- lay %r0, 0(%r1)
- lay %r0, 0(%r15)
- lay %r0, 524287(%r1,%r15)
- lay %r0, 524287(%r15,%r1)
- lay %r15, 0
diff --git a/test/MC/SystemZ/insn-lay-02.s b/test/MC/SystemZ/insn-lay-02.s
deleted file mode 100644
index 2729eead22..0000000000
--- a/test/MC/SystemZ/insn-lay-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lay %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lay %r0, 524288
-
- lay %r0, -524289
- lay %r0, 524288
diff --git a/test/MC/SystemZ/insn-lb-01.s b/test/MC/SystemZ/insn-lb-01.s
deleted file mode 100644
index e9ee0fab22..0000000000
--- a/test/MC/SystemZ/insn-lb-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lb %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x76]
-#CHECK: lb %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x76]
-#CHECK: lb %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x76]
-#CHECK: lb %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x76]
-#CHECK: lb %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x76]
-#CHECK: lb %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x76]
-#CHECK: lb %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x76]
-#CHECK: lb %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x76]
-#CHECK: lb %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x76]
-#CHECK: lb %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x76]
-
- lb %r0, -524288
- lb %r0, -1
- lb %r0, 0
- lb %r0, 1
- lb %r0, 524287
- lb %r0, 0(%r1)
- lb %r0, 0(%r15)
- lb %r0, 524287(%r1,%r15)
- lb %r0, 524287(%r15,%r1)
- lb %r15, 0
diff --git a/test/MC/SystemZ/insn-lb-02.s b/test/MC/SystemZ/insn-lb-02.s
deleted file mode 100644
index e65edaf09d..0000000000
--- a/test/MC/SystemZ/insn-lb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lb %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lb %r0, 524288
-
- lb %r0, -524289
- lb %r0, 524288
diff --git a/test/MC/SystemZ/insn-lbr-01.s b/test/MC/SystemZ/insn-lbr-01.s
deleted file mode 100644
index cb4ead0430..0000000000
--- a/test/MC/SystemZ/insn-lbr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lbr %r0, %r15 # encoding: [0xb9,0x26,0x00,0x0f]
-#CHECK: lbr %r7, %r8 # encoding: [0xb9,0x26,0x00,0x78]
-#CHECK: lbr %r15, %r0 # encoding: [0xb9,0x26,0x00,0xf0]
-
- lbr %r0, %r15
- lbr %r7, %r8
- lbr %r15, %r0
diff --git a/test/MC/SystemZ/insn-lcdbr-01.s b/test/MC/SystemZ/insn-lcdbr-01.s
deleted file mode 100644
index 347cab5141..0000000000
--- a/test/MC/SystemZ/insn-lcdbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lcdbr %f0, %f9 # encoding: [0xb3,0x13,0x00,0x09]
-#CHECK: lcdbr %f0, %f15 # encoding: [0xb3,0x13,0x00,0x0f]
-#CHECK: lcdbr %f15, %f0 # encoding: [0xb3,0x13,0x00,0xf0]
-#CHECK: lcdbr %f15, %f9 # encoding: [0xb3,0x13,0x00,0xf9]
-
- lcdbr %f0,%f9
- lcdbr %f0,%f15
- lcdbr %f15,%f0
- lcdbr %f15,%f9
diff --git a/test/MC/SystemZ/insn-lcebr-01.s b/test/MC/SystemZ/insn-lcebr-01.s
deleted file mode 100644
index e31822f004..0000000000
--- a/test/MC/SystemZ/insn-lcebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lcebr %f0, %f9 # encoding: [0xb3,0x03,0x00,0x09]
-#CHECK: lcebr %f0, %f15 # encoding: [0xb3,0x03,0x00,0x0f]
-#CHECK: lcebr %f15, %f0 # encoding: [0xb3,0x03,0x00,0xf0]
-#CHECK: lcebr %f15, %f9 # encoding: [0xb3,0x03,0x00,0xf9]
-
- lcebr %f0,%f9
- lcebr %f0,%f15
- lcebr %f15,%f0
- lcebr %f15,%f9
diff --git a/test/MC/SystemZ/insn-lcgfr-01.s b/test/MC/SystemZ/insn-lcgfr-01.s
deleted file mode 100644
index bca430b801..0000000000
--- a/test/MC/SystemZ/insn-lcgfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lcgfr %r0, %r0 # encoding: [0xb9,0x13,0x00,0x00]
-#CHECK: lcgfr %r0, %r15 # encoding: [0xb9,0x13,0x00,0x0f]
-#CHECK: lcgfr %r15, %r0 # encoding: [0xb9,0x13,0x00,0xf0]
-#CHECK: lcgfr %r7, %r8 # encoding: [0xb9,0x13,0x00,0x78]
-
- lcgfr %r0,%r0
- lcgfr %r0,%r15
- lcgfr %r15,%r0
- lcgfr %r7,%r8
diff --git a/test/MC/SystemZ/insn-lcgr-01.s b/test/MC/SystemZ/insn-lcgr-01.s
deleted file mode 100644
index dc4e94f03e..0000000000
--- a/test/MC/SystemZ/insn-lcgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lcgr %r0, %r0 # encoding: [0xb9,0x03,0x00,0x00]
-#CHECK: lcgr %r0, %r15 # encoding: [0xb9,0x03,0x00,0x0f]
-#CHECK: lcgr %r15, %r0 # encoding: [0xb9,0x03,0x00,0xf0]
-#CHECK: lcgr %r7, %r8 # encoding: [0xb9,0x03,0x00,0x78]
-
- lcgr %r0,%r0
- lcgr %r0,%r15
- lcgr %r15,%r0
- lcgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-lcr-01.s b/test/MC/SystemZ/insn-lcr-01.s
deleted file mode 100644
index 52471cbbdc..0000000000
--- a/test/MC/SystemZ/insn-lcr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lcr %r0, %r0 # encoding: [0x13,0x00]
-#CHECK: lcr %r0, %r15 # encoding: [0x13,0x0f]
-#CHECK: lcr %r15, %r0 # encoding: [0x13,0xf0]
-#CHECK: lcr %r7, %r8 # encoding: [0x13,0x78]
-
- lcr %r0,%r0
- lcr %r0,%r15
- lcr %r15,%r0
- lcr %r7,%r8
diff --git a/test/MC/SystemZ/insn-lcxbr-01.s b/test/MC/SystemZ/insn-lcxbr-01.s
deleted file mode 100644
index 48c0b8a772..0000000000
--- a/test/MC/SystemZ/insn-lcxbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lcxbr %f0, %f8 # encoding: [0xb3,0x43,0x00,0x08]
-#CHECK: lcxbr %f0, %f13 # encoding: [0xb3,0x43,0x00,0x0d]
-#CHECK: lcxbr %f13, %f0 # encoding: [0xb3,0x43,0x00,0xd0]
-#CHECK: lcxbr %f13, %f9 # encoding: [0xb3,0x43,0x00,0xd9]
-
- lcxbr %f0,%f8
- lcxbr %f0,%f13
- lcxbr %f13,%f0
- lcxbr %f13,%f9
diff --git a/test/MC/SystemZ/insn-lcxbr-02.s b/test/MC/SystemZ/insn-lcxbr-02.s
deleted file mode 100644
index ab3d6bfe9c..0000000000
--- a/test/MC/SystemZ/insn-lcxbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lcxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lcxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: lcxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lcxbr %f14, %f0
-
- lcxbr %f0, %f2
- lcxbr %f0, %f14
- lcxbr %f2, %f0
- lcxbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-ld-01.s b/test/MC/SystemZ/insn-ld-01.s
deleted file mode 100644
index 653eab5e0a..0000000000
--- a/test/MC/SystemZ/insn-ld-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ld %f0, 0 # encoding: [0x68,0x00,0x00,0x00]
-#CHECK: ld %f0, 4095 # encoding: [0x68,0x00,0x0f,0xff]
-#CHECK: ld %f0, 0(%r1) # encoding: [0x68,0x00,0x10,0x00]
-#CHECK: ld %f0, 0(%r15) # encoding: [0x68,0x00,0xf0,0x00]
-#CHECK: ld %f0, 4095(%r1,%r15) # encoding: [0x68,0x01,0xff,0xff]
-#CHECK: ld %f0, 4095(%r15,%r1) # encoding: [0x68,0x0f,0x1f,0xff]
-#CHECK: ld %f15, 0 # encoding: [0x68,0xf0,0x00,0x00]
-
- ld %f0, 0
- ld %f0, 4095
- ld %f0, 0(%r1)
- ld %f0, 0(%r15)
- ld %f0, 4095(%r1,%r15)
- ld %f0, 4095(%r15,%r1)
- ld %f15, 0
diff --git a/test/MC/SystemZ/insn-ld-02.s b/test/MC/SystemZ/insn-ld-02.s
deleted file mode 100644
index 5d786b5557..0000000000
--- a/test/MC/SystemZ/insn-ld-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ld %f0, -1
-#CHECK: error: invalid operand
-#CHECK: ld %f0, 4096
-
- ld %f0, -1
- ld %f0, 4096
diff --git a/test/MC/SystemZ/insn-ldeb-01.s b/test/MC/SystemZ/insn-ldeb-01.s
deleted file mode 100644
index a06344d27d..0000000000
--- a/test/MC/SystemZ/insn-ldeb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ldeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x04]
-#CHECK: ldeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x04]
-#CHECK: ldeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x04]
-#CHECK: ldeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x04]
-#CHECK: ldeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x04]
-#CHECK: ldeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x04]
-#CHECK: ldeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x04]
-
- ldeb %f0, 0
- ldeb %f0, 4095
- ldeb %f0, 0(%r1)
- ldeb %f0, 0(%r15)
- ldeb %f0, 4095(%r1,%r15)
- ldeb %f0, 4095(%r15,%r1)
- ldeb %f15, 0
diff --git a/test/MC/SystemZ/insn-ldeb-02.s b/test/MC/SystemZ/insn-ldeb-02.s
deleted file mode 100644
index 6df5e7b46d..0000000000
--- a/test/MC/SystemZ/insn-ldeb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ldeb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: ldeb %f0, 4096
-
- ldeb %f0, -1
- ldeb %f0, 4096
diff --git a/test/MC/SystemZ/insn-ldebr-01.s b/test/MC/SystemZ/insn-ldebr-01.s
deleted file mode 100644
index 2df932c668..0000000000
--- a/test/MC/SystemZ/insn-ldebr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ldebr %f0, %f15 # encoding: [0xb3,0x04,0x00,0x0f]
-#CHECK: ldebr %f7, %f8 # encoding: [0xb3,0x04,0x00,0x78]
-#CHECK: ldebr %f15, %f0 # encoding: [0xb3,0x04,0x00,0xf0]
-
- ldebr %f0, %f15
- ldebr %f7, %f8
- ldebr %f15, %f0
diff --git a/test/MC/SystemZ/insn-ldgr-01.s b/test/MC/SystemZ/insn-ldgr-01.s
deleted file mode 100644
index 61a4529bee..0000000000
--- a/test/MC/SystemZ/insn-ldgr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: ldgr %f7, %r9 # encoding: [0xb3,0xc1,0x00,0x79]
-#CHECK: ldgr %f15, %r15 # encoding: [0xb3,0xc1,0x00,0xff]
-
- ldgr %f0,%r0
- ldgr %f0,%r15
- ldgr %f15,%r0
- ldgr %f7,%r9
- ldgr %f15,%r15
diff --git a/test/MC/SystemZ/insn-ldgr-02.s b/test/MC/SystemZ/insn-ldgr-02.s
deleted file mode 100644
index 900174ab1f..0000000000
--- a/test/MC/SystemZ/insn-ldgr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: ldgr %f0, %f0
-#CHECK: error: invalid register
-#CHECK: ldgr %r0, %r0
-#CHECK: error: invalid register
-#CHECK: ldgr %f0, %a0
-#CHECK: error: invalid register
-#CHECK: ldgr %a0, %r0
-
- ldgr %f0, %f0
- ldgr %r0, %r0
- ldgr %f0, %a0
- ldgr %a0, %r0
diff --git a/test/MC/SystemZ/insn-ldr-01.s b/test/MC/SystemZ/insn-ldr-01.s
deleted file mode 100644
index 895ed3439f..0000000000
--- a/test/MC/SystemZ/insn-ldr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ldr %f0, %f9 # encoding: [0x28,0x09]
-#CHECK: ldr %f0, %f15 # encoding: [0x28,0x0f]
-#CHECK: ldr %f15, %f0 # encoding: [0x28,0xf0]
-#CHECK: ldr %f15, %f9 # encoding: [0x28,0xf9]
-
- ldr %f0,%f9
- ldr %f0,%f15
- ldr %f15,%f0
- ldr %f15,%f9
diff --git a/test/MC/SystemZ/insn-ldxbr-01.s b/test/MC/SystemZ/insn-ldxbr-01.s
deleted file mode 100644
index 49e1d2adfb..0000000000
--- a/test/MC/SystemZ/insn-ldxbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ldxbr %f0, %f0 # encoding: [0xb3,0x45,0x00,0x00]
-#CHECK: ldxbr %f0, %f13 # encoding: [0xb3,0x45,0x00,0x0d]
-#CHECK: ldxbr %f8, %f12 # encoding: [0xb3,0x45,0x00,0x8c]
-#CHECK: ldxbr %f13, %f0 # encoding: [0xb3,0x45,0x00,0xd0]
-#CHECK: ldxbr %f13, %f13 # encoding: [0xb3,0x45,0x00,0xdd]
-
- ldxbr %f0, %f0
- ldxbr %f0, %f13
- ldxbr %f8, %f12
- ldxbr %f13, %f0
- ldxbr %f13, %f13
diff --git a/test/MC/SystemZ/insn-ldxbr-02.s b/test/MC/SystemZ/insn-ldxbr-02.s
deleted file mode 100644
index 89914dff9d..0000000000
--- a/test/MC/SystemZ/insn-ldxbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: ldxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: ldxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: ldxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: ldxbr %f14, %f0
-
- ldxbr %f0, %f2
- ldxbr %f0, %f14
- ldxbr %f2, %f0
- ldxbr %f14, %f0
diff --git a/test/MC/SystemZ/insn-ldy-01.s b/test/MC/SystemZ/insn-ldy-01.s
deleted file mode 100644
index 5c2d145af1..0000000000
--- a/test/MC/SystemZ/insn-ldy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: ldy %f0, 1 # encoding: [0xed,0x00,0x00,0x01,0x00,0x65]
-#CHECK: ldy %f0, 524287 # encoding: [0xed,0x00,0x0f,0xff,0x7f,0x65]
-#CHECK: ldy %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x65]
-#CHECK: ldy %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x65]
-#CHECK: ldy %f0, 524287(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x7f,0x65]
-#CHECK: ldy %f0, 524287(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x7f,0x65]
-#CHECK: ldy %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x65]
-
- ldy %f0, -524288
- ldy %f0, -1
- ldy %f0, 0
- ldy %f0, 1
- ldy %f0, 524287
- ldy %f0, 0(%r1)
- ldy %f0, 0(%r15)
- ldy %f0, 524287(%r1,%r15)
- ldy %f0, 524287(%r15,%r1)
- ldy %f15, 0
diff --git a/test/MC/SystemZ/insn-ldy-02.s b/test/MC/SystemZ/insn-ldy-02.s
deleted file mode 100644
index b16e0149ee..0000000000
--- a/test/MC/SystemZ/insn-ldy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ldy %f0, -524289
-#CHECK: error: invalid operand
-#CHECK: ldy %f0, 524288
-
- ldy %f0, -524289
- ldy %f0, 524288
diff --git a/test/MC/SystemZ/insn-le-01.s b/test/MC/SystemZ/insn-le-01.s
deleted file mode 100644
index 15bbce26a5..0000000000
--- a/test/MC/SystemZ/insn-le-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: le %f0, 0 # encoding: [0x78,0x00,0x00,0x00]
-#CHECK: le %f0, 4095 # encoding: [0x78,0x00,0x0f,0xff]
-#CHECK: le %f0, 0(%r1) # encoding: [0x78,0x00,0x10,0x00]
-#CHECK: le %f0, 0(%r15) # encoding: [0x78,0x00,0xf0,0x00]
-#CHECK: le %f0, 4095(%r1,%r15) # encoding: [0x78,0x01,0xff,0xff]
-#CHECK: le %f0, 4095(%r15,%r1) # encoding: [0x78,0x0f,0x1f,0xff]
-#CHECK: le %f15, 0 # encoding: [0x78,0xf0,0x00,0x00]
-
- le %f0, 0
- le %f0, 4095
- le %f0, 0(%r1)
- le %f0, 0(%r15)
- le %f0, 4095(%r1,%r15)
- le %f0, 4095(%r15,%r1)
- le %f15, 0
diff --git a/test/MC/SystemZ/insn-le-02.s b/test/MC/SystemZ/insn-le-02.s
deleted file mode 100644
index f784ea1c90..0000000000
--- a/test/MC/SystemZ/insn-le-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: le %f0, -1
-#CHECK: error: invalid operand
-#CHECK: le %f0, 4096
-
- le %f0, -1
- le %f0, 4096
diff --git a/test/MC/SystemZ/insn-ledbr-01.s b/test/MC/SystemZ/insn-ledbr-01.s
deleted file mode 100644
index 6582d6344f..0000000000
--- a/test/MC/SystemZ/insn-ledbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ledbr %f0, %f0 # encoding: [0xb3,0x44,0x00,0x00]
-#CHECK: ledbr %f0, %f15 # encoding: [0xb3,0x44,0x00,0x0f]
-#CHECK: ledbr %f7, %f8 # encoding: [0xb3,0x44,0x00,0x78]
-#CHECK: ledbr %f15, %f0 # encoding: [0xb3,0x44,0x00,0xf0]
-#CHECK: ledbr %f15, %f15 # encoding: [0xb3,0x44,0x00,0xff]
-
- ledbr %f0, %f0
- ledbr %f0, %f15
- ledbr %f7, %f8
- ledbr %f15, %f0
- ledbr %f15, %f15
diff --git a/test/MC/SystemZ/insn-ler-01.s b/test/MC/SystemZ/insn-ler-01.s
deleted file mode 100644
index 775e523218..0000000000
--- a/test/MC/SystemZ/insn-ler-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ler %f0, %f9 # encoding: [0x38,0x09]
-#CHECK: ler %f0, %f15 # encoding: [0x38,0x0f]
-#CHECK: ler %f15, %f0 # encoding: [0x38,0xf0]
-#CHECK: ler %f15, %f9 # encoding: [0x38,0xf9]
-
- ler %f0,%f9
- ler %f0,%f15
- ler %f15,%f0
- ler %f15,%f9
diff --git a/test/MC/SystemZ/insn-lexbr-01.s b/test/MC/SystemZ/insn-lexbr-01.s
deleted file mode 100644
index ce32103c66..0000000000
--- a/test/MC/SystemZ/insn-lexbr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lexbr %f0, %f0 # encoding: [0xb3,0x46,0x00,0x00]
-#CHECK: lexbr %f0, %f13 # encoding: [0xb3,0x46,0x00,0x0d]
-#CHECK: lexbr %f8, %f12 # encoding: [0xb3,0x46,0x00,0x8c]
-#CHECK: lexbr %f13, %f0 # encoding: [0xb3,0x46,0x00,0xd0]
-#CHECK: lexbr %f13, %f13 # encoding: [0xb3,0x46,0x00,0xdd]
-
- lexbr %f0, %f0
- lexbr %f0, %f13
- lexbr %f8, %f12
- lexbr %f13, %f0
- lexbr %f13, %f13
diff --git a/test/MC/SystemZ/insn-lexbr-02.s b/test/MC/SystemZ/insn-lexbr-02.s
deleted file mode 100644
index 8c9bb9ed60..0000000000
--- a/test/MC/SystemZ/insn-lexbr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lexbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lexbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: lexbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lexbr %f14, %f0
-
- lexbr %f0, %f2
- lexbr %f0, %f14
- lexbr %f2, %f0
- lexbr %f14, %f0
diff --git a/test/MC/SystemZ/insn-ley-01.s b/test/MC/SystemZ/insn-ley-01.s
deleted file mode 100644
index b854dc148c..0000000000
--- a/test/MC/SystemZ/insn-ley-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ley %f0, -524288 # encoding: [0xed,0x00,0x00,0x00,0x80,0x64]
-#CHECK: ley %f0, -1 # encoding: [0xed,0x00,0x0f,0xff,0xff,0x64]
-#CHECK: ley %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x64]
-#CHECK: ley %f0, 1 # encoding: [0xed,0x00,0x00,0x01,0x00,0x64]
-#CHECK: ley %f0, 524287 # encoding: [0xed,0x00,0x0f,0xff,0x7f,0x64]
-#CHECK: ley %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x64]
-#CHECK: ley %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x64]
-#CHECK: ley %f0, 524287(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x7f,0x64]
-#CHECK: ley %f0, 524287(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x7f,0x64]
-#CHECK: ley %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x64]
-
- ley %f0, -524288
- ley %f0, -1
- ley %f0, 0
- ley %f0, 1
- ley %f0, 524287
- ley %f0, 0(%r1)
- ley %f0, 0(%r15)
- ley %f0, 524287(%r1,%r15)
- ley %f0, 524287(%r15,%r1)
- ley %f15, 0
diff --git a/test/MC/SystemZ/insn-ley-02.s b/test/MC/SystemZ/insn-ley-02.s
deleted file mode 100644
index 98bbd94dc1..0000000000
--- a/test/MC/SystemZ/insn-ley-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ley %f0, -524289
-#CHECK: error: invalid operand
-#CHECK: ley %f0, 524288
-
- ley %f0, -524289
- ley %f0, 524288
diff --git a/test/MC/SystemZ/insn-lg-01.s b/test/MC/SystemZ/insn-lg-01.s
deleted file mode 100644
index 10a95cc895..0000000000
--- a/test/MC/SystemZ/insn-lg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x04]
-#CHECK: lg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x04]
-#CHECK: lg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x04]
-#CHECK: lg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x04]
-#CHECK: lg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x04]
-#CHECK: lg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x04]
-#CHECK: lg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x04]
-#CHECK: lg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x04]
-#CHECK: lg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x04]
-#CHECK: lg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x04]
-
- lg %r0, -524288
- lg %r0, -1
- lg %r0, 0
- lg %r0, 1
- lg %r0, 524287
- lg %r0, 0(%r1)
- lg %r0, 0(%r15)
- lg %r0, 524287(%r1,%r15)
- lg %r0, 524287(%r15,%r1)
- lg %r15, 0
diff --git a/test/MC/SystemZ/insn-lg-02.s b/test/MC/SystemZ/insn-lg-02.s
deleted file mode 100644
index 85b29fff55..0000000000
--- a/test/MC/SystemZ/insn-lg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lg %r0, 524288
-
- lg %r0, -524289
- lg %r0, 524288
diff --git a/test/MC/SystemZ/insn-lgb-01.s b/test/MC/SystemZ/insn-lgb-01.s
deleted file mode 100644
index 82b92f1672..0000000000
--- a/test/MC/SystemZ/insn-lgb-01.s
+++ /dev/null
@@ -1,24 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgb %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x77]
-#CHECK: lgb %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x77]
-#CHECK: lgb %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x77]
-#CHECK: lgb %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x77]
-#CHECK: lgb %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x77]
-#CHECK: lgb %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x77]
-#CHECK: lgb %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x77]
-#CHECK: lgb %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x77]
-#CHECK: lgb %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x77]
-#CHECK: lgb %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x77]
-
- lgb %r0, -524288
- lgb %r0, -1
- lgb %r0, 0
- lgb %r0, 1
- lgb %r0, 524287
- lgb %r0, 0(%r1)
- lgb %r0, 0(%r15)
- lgb %r0, 524287(%r1,%r15)
- lgb %r0, 524287(%r15,%r1)
- lgb %r15, 0
-
diff --git a/test/MC/SystemZ/insn-lgb-02.s b/test/MC/SystemZ/insn-lgb-02.s
deleted file mode 100644
index 7acc1762b5..0000000000
--- a/test/MC/SystemZ/insn-lgb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lgb %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lgb %r0, 524288
-
- lgb %r0, -524289
- lgb %r0, 524288
diff --git a/test/MC/SystemZ/insn-lgbr-01.s b/test/MC/SystemZ/insn-lgbr-01.s
deleted file mode 100644
index ec2e622009..0000000000
--- a/test/MC/SystemZ/insn-lgbr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgbr %r0, %r15 # encoding: [0xb9,0x06,0x00,0x0f]
-#CHECK: lgbr %r7, %r8 # encoding: [0xb9,0x06,0x00,0x78]
-#CHECK: lgbr %r15, %r0 # encoding: [0xb9,0x06,0x00,0xf0]
-
- lgbr %r0, %r15
- lgbr %r7, %r8
- lgbr %r15, %r0
diff --git a/test/MC/SystemZ/insn-lgdr-01.s b/test/MC/SystemZ/insn-lgdr-01.s
deleted file mode 100644
index 56d1e035b4..0000000000
--- a/test/MC/SystemZ/insn-lgdr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgdr %r0, %f0 # encoding: [0xb3,0xcd,0x00,0x00]
-#CHECK: lgdr %r0, %f15 # encoding: [0xb3,0xcd,0x00,0x0f]
-#CHECK: lgdr %r15, %f0 # encoding: [0xb3,0xcd,0x00,0xf0]
-#CHECK: lgdr %r8, %f8 # encoding: [0xb3,0xcd,0x00,0x88]
-#CHECK: lgdr %r15, %f15 # encoding: [0xb3,0xcd,0x00,0xff]
-
- lgdr %r0,%f0
- lgdr %r0,%f15
- lgdr %r15,%f0
- lgdr %r8,%f8
- lgdr %r15,%f15
diff --git a/test/MC/SystemZ/insn-lgdr-02.s b/test/MC/SystemZ/insn-lgdr-02.s
deleted file mode 100644
index 3bf014d90e..0000000000
--- a/test/MC/SystemZ/insn-lgdr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lgdr %f0, %f0
-#CHECK: error: invalid register
-#CHECK: lgdr %r0, %r0
-#CHECK: error: invalid register
-#CHECK: lgdr %r0, %a0
-#CHECK: error: invalid register
-#CHECK: lgdr %a0, %f0
-
- lgdr %f0, %f0
- lgdr %r0, %r0
- lgdr %r0, %a0
- lgdr %a0, %f0
diff --git a/test/MC/SystemZ/insn-lgf-01.s b/test/MC/SystemZ/insn-lgf-01.s
deleted file mode 100644
index 9ed917228a..0000000000
--- a/test/MC/SystemZ/insn-lgf-01.s
+++ /dev/null
@@ -1,24 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x14]
-#CHECK: lgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x14]
-#CHECK: lgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x14]
-#CHECK: lgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x14]
-#CHECK: lgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x14]
-#CHECK: lgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x14]
-#CHECK: lgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x14]
-#CHECK: lgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x14]
-#CHECK: lgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x14]
-#CHECK: lgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x14]
-
- lgf %r0, -524288
- lgf %r0, -1
- lgf %r0, 0
- lgf %r0, 1
- lgf %r0, 524287
- lgf %r0, 0(%r1)
- lgf %r0, 0(%r15)
- lgf %r0, 524287(%r1,%r15)
- lgf %r0, 524287(%r15,%r1)
- lgf %r15, 0
-
diff --git a/test/MC/SystemZ/insn-lgf-02.s b/test/MC/SystemZ/insn-lgf-02.s
deleted file mode 100644
index 32095a8409..0000000000
--- a/test/MC/SystemZ/insn-lgf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lgf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lgf %r0, 524288
-
- lgf %r0, -524289
- lgf %r0, 524288
diff --git a/test/MC/SystemZ/insn-lgfi-01.s b/test/MC/SystemZ/insn-lgfi-01.s
deleted file mode 100644
index a5ca7a59b5..0000000000
--- a/test/MC/SystemZ/insn-lgfi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgfi %r0, -2147483648 # encoding: [0xc0,0x01,0x80,0x00,0x00,0x00]
-#CHECK: lgfi %r0, -1 # encoding: [0xc0,0x01,0xff,0xff,0xff,0xff]
-#CHECK: lgfi %r0, 0 # encoding: [0xc0,0x01,0x00,0x00,0x00,0x00]
-#CHECK: lgfi %r0, 1 # encoding: [0xc0,0x01,0x00,0x00,0x00,0x01]
-#CHECK: lgfi %r0, 2147483647 # encoding: [0xc0,0x01,0x7f,0xff,0xff,0xff]
-#CHECK: lgfi %r15, 0 # encoding: [0xc0,0xf1,0x00,0x00,0x00,0x00]
-
- lgfi %r0, -1 << 31
- lgfi %r0, -1
- lgfi %r0, 0
- lgfi %r0, 1
- lgfi %r0, (1 << 31) - 1
- lgfi %r15, 0
diff --git a/test/MC/SystemZ/insn-lgfi-02.s b/test/MC/SystemZ/insn-lgfi-02.s
deleted file mode 100644
index a45cfeb46d..0000000000
--- a/test/MC/SystemZ/insn-lgfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lgfi %r0, (-1 << 31) - 1
-#CHECK: error: invalid operand
-#CHECK: lgfi %r0, (1 << 31)
-
- lgfi %r0, (-1 << 31) - 1
- lgfi %r0, (1 << 31)
diff --git a/test/MC/SystemZ/insn-lgfr-01.s b/test/MC/SystemZ/insn-lgfr-01.s
deleted file mode 100644
index bc375a67b0..0000000000
--- a/test/MC/SystemZ/insn-lgfr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgfr %r0, %r15 # encoding: [0xb9,0x14,0x00,0x0f]
-#CHECK: lgfr %r7, %r8 # encoding: [0xb9,0x14,0x00,0x78]
-#CHECK: lgfr %r15, %r0 # encoding: [0xb9,0x14,0x00,0xf0]
-
- lgfr %r0, %r15
- lgfr %r7, %r8
- lgfr %r15, %r0
diff --git a/test/MC/SystemZ/insn-lgfrl-01.s b/test/MC/SystemZ/insn-lgfrl-01.s
deleted file mode 100644
index 85c9ea764c..0000000000
--- a/test/MC/SystemZ/insn-lgfrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgfrl %r0, 2864434397 # encoding: [0xc4,0x0c,0x55,0x5d,0xe6,0x6e]
-#CHECK: lgfrl %r15, 2864434397 # encoding: [0xc4,0xfc,0x55,0x5d,0xe6,0x6e]
-
- lgfrl %r0,0xaabbccdd
- lgfrl %r15,0xaabbccdd
-
-#CHECK: lgfrl %r0, foo # encoding: [0xc4,0x0c,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: lgfrl %r15, foo # encoding: [0xc4,0xfc,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- lgfrl %r0,foo
- lgfrl %r15,foo
-
-#CHECK: lgfrl %r3, bar+100 # encoding: [0xc4,0x3c,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: lgfrl %r4, bar+100 # encoding: [0xc4,0x4c,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- lgfrl %r3,bar+100
- lgfrl %r4,bar+100
-
-#CHECK: lgfrl %r7, frob@PLT # encoding: [0xc4,0x7c,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: lgfrl %r8, frob@PLT # encoding: [0xc4,0x8c,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- lgfrl %r7,frob@PLT
- lgfrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-lgh-01.s b/test/MC/SystemZ/insn-lgh-01.s
deleted file mode 100644
index 9dae6212b2..0000000000
--- a/test/MC/SystemZ/insn-lgh-01.s
+++ /dev/null
@@ -1,24 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x15]
-#CHECK: lgh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x15]
-#CHECK: lgh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x15]
-#CHECK: lgh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x15]
-#CHECK: lgh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x15]
-#CHECK: lgh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x15]
-#CHECK: lgh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x15]
-#CHECK: lgh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x15]
-#CHECK: lgh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x15]
-#CHECK: lgh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x15]
-
- lgh %r0, -524288
- lgh %r0, -1
- lgh %r0, 0
- lgh %r0, 1
- lgh %r0, 524287
- lgh %r0, 0(%r1)
- lgh %r0, 0(%r15)
- lgh %r0, 524287(%r1,%r15)
- lgh %r0, 524287(%r15,%r1)
- lgh %r15, 0
-
diff --git a/test/MC/SystemZ/insn-lgh-02.s b/test/MC/SystemZ/insn-lgh-02.s
deleted file mode 100644
index 62b7341d82..0000000000
--- a/test/MC/SystemZ/insn-lgh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lgh %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lgh %r0, 524288
-
- lgh %r0, -524289
- lgh %r0, 524288
diff --git a/test/MC/SystemZ/insn-lghi-01.s b/test/MC/SystemZ/insn-lghi-01.s
deleted file mode 100644
index d9d12ae1bb..0000000000
--- a/test/MC/SystemZ/insn-lghi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lghi %r0, -32768 # encoding: [0xa7,0x09,0x80,0x00]
-#CHECK: lghi %r0, -1 # encoding: [0xa7,0x09,0xff,0xff]
-#CHECK: lghi %r0, 0 # encoding: [0xa7,0x09,0x00,0x00]
-#CHECK: lghi %r0, 1 # encoding: [0xa7,0x09,0x00,0x01]
-#CHECK: lghi %r0, 32767 # encoding: [0xa7,0x09,0x7f,0xff]
-#CHECK: lghi %r15, 0 # encoding: [0xa7,0xf9,0x00,0x00]
-
- lghi %r0, -32768
- lghi %r0, -1
- lghi %r0, 0
- lghi %r0, 1
- lghi %r0, 32767
- lghi %r15, 0
diff --git a/test/MC/SystemZ/insn-lghi-02.s b/test/MC/SystemZ/insn-lghi-02.s
deleted file mode 100644
index b1af7a0c54..0000000000
--- a/test/MC/SystemZ/insn-lghi-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lghi %r0, -32769
-#CHECK: error: invalid operand
-#CHECK: lghi %r0, 32768
-#CHECK: error: invalid operand
-#CHECK: lghi %r0, foo
-
- lghi %r0, -32769
- lghi %r0, 32768
- lghi %r0, foo
diff --git a/test/MC/SystemZ/insn-lghr-01.s b/test/MC/SystemZ/insn-lghr-01.s
deleted file mode 100644
index a1dc842339..0000000000
--- a/test/MC/SystemZ/insn-lghr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lghr %r0, %r15 # encoding: [0xb9,0x07,0x00,0x0f]
-#CHECK: lghr %r7, %r8 # encoding: [0xb9,0x07,0x00,0x78]
-#CHECK: lghr %r15, %r0 # encoding: [0xb9,0x07,0x00,0xf0]
-
- lghr %r0, %r15
- lghr %r7, %r8
- lghr %r15, %r0
diff --git a/test/MC/SystemZ/insn-lghrl-01.s b/test/MC/SystemZ/insn-lghrl-01.s
deleted file mode 100644
index 34992e6ff2..0000000000
--- a/test/MC/SystemZ/insn-lghrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lghrl %r0, 2864434397 # encoding: [0xc4,0x04,0x55,0x5d,0xe6,0x6e]
-#CHECK: lghrl %r15, 2864434397 # encoding: [0xc4,0xf4,0x55,0x5d,0xe6,0x6e]
-
- lghrl %r0,0xaabbccdd
- lghrl %r15,0xaabbccdd
-
-#CHECK: lghrl %r0, foo # encoding: [0xc4,0x04,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: lghrl %r15, foo # encoding: [0xc4,0xf4,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- lghrl %r0,foo
- lghrl %r15,foo
-
-#CHECK: lghrl %r3, bar+100 # encoding: [0xc4,0x34,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: lghrl %r4, bar+100 # encoding: [0xc4,0x44,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- lghrl %r3,bar+100
- lghrl %r4,bar+100
-
-#CHECK: lghrl %r7, frob@PLT # encoding: [0xc4,0x74,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: lghrl %r8, frob@PLT # encoding: [0xc4,0x84,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- lghrl %r7,frob@PLT
- lghrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-lgr-01.s b/test/MC/SystemZ/insn-lgr-01.s
deleted file mode 100644
index e50295682b..0000000000
--- a/test/MC/SystemZ/insn-lgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgr %r0, %r9 # encoding: [0xb9,0x04,0x00,0x09]
-#CHECK: lgr %r0, %r15 # encoding: [0xb9,0x04,0x00,0x0f]
-#CHECK: lgr %r15, %r0 # encoding: [0xb9,0x04,0x00,0xf0]
-#CHECK: lgr %r15, %r9 # encoding: [0xb9,0x04,0x00,0xf9]
-
- lgr %r0,%r9
- lgr %r0,%r15
- lgr %r15,%r0
- lgr %r15,%r9
diff --git a/test/MC/SystemZ/insn-lgrl-01.s b/test/MC/SystemZ/insn-lgrl-01.s
deleted file mode 100644
index 7a18908f9a..0000000000
--- a/test/MC/SystemZ/insn-lgrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgrl %r0, 2864434397 # encoding: [0xc4,0x08,0x55,0x5d,0xe6,0x6e]
-#CHECK: lgrl %r15, 2864434397 # encoding: [0xc4,0xf8,0x55,0x5d,0xe6,0x6e]
-
- lgrl %r0,0xaabbccdd
- lgrl %r15,0xaabbccdd
-
-#CHECK: lgrl %r0, foo # encoding: [0xc4,0x08,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: lgrl %r15, foo # encoding: [0xc4,0xf8,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- lgrl %r0,foo
- lgrl %r15,foo
-
-#CHECK: lgrl %r3, bar+100 # encoding: [0xc4,0x38,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: lgrl %r4, bar+100 # encoding: [0xc4,0x48,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- lgrl %r3,bar+100
- lgrl %r4,bar+100
-
-#CHECK: lgrl %r7, frob@PLT # encoding: [0xc4,0x78,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: lgrl %r8, frob@PLT # encoding: [0xc4,0x88,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- lgrl %r7,frob@PLT
- lgrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-lh-01.s b/test/MC/SystemZ/insn-lh-01.s
deleted file mode 100644
index 07be012756..0000000000
--- a/test/MC/SystemZ/insn-lh-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lh %r0, 0 # encoding: [0x48,0x00,0x00,0x00]
-#CHECK: lh %r0, 4095 # encoding: [0x48,0x00,0x0f,0xff]
-#CHECK: lh %r0, 0(%r1) # encoding: [0x48,0x00,0x10,0x00]
-#CHECK: lh %r0, 0(%r15) # encoding: [0x48,0x00,0xf0,0x00]
-#CHECK: lh %r0, 4095(%r1,%r15) # encoding: [0x48,0x01,0xff,0xff]
-#CHECK: lh %r0, 4095(%r15,%r1) # encoding: [0x48,0x0f,0x1f,0xff]
-#CHECK: lh %r15, 0 # encoding: [0x48,0xf0,0x00,0x00]
-
- lh %r0, 0
- lh %r0, 4095
- lh %r0, 0(%r1)
- lh %r0, 0(%r15)
- lh %r0, 4095(%r1,%r15)
- lh %r0, 4095(%r15,%r1)
- lh %r15, 0
diff --git a/test/MC/SystemZ/insn-lh-02.s b/test/MC/SystemZ/insn-lh-02.s
deleted file mode 100644
index 80566d8d37..0000000000
--- a/test/MC/SystemZ/insn-lh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: lh %r0, 4096
-
- lh %r0, -1
- lh %r0, 4096
diff --git a/test/MC/SystemZ/insn-lhi-01.s b/test/MC/SystemZ/insn-lhi-01.s
deleted file mode 100644
index 43b7df08f0..0000000000
--- a/test/MC/SystemZ/insn-lhi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lhi %r0, -32768 # encoding: [0xa7,0x08,0x80,0x00]
-#CHECK: lhi %r0, -1 # encoding: [0xa7,0x08,0xff,0xff]
-#CHECK: lhi %r0, 0 # encoding: [0xa7,0x08,0x00,0x00]
-#CHECK: lhi %r0, 1 # encoding: [0xa7,0x08,0x00,0x01]
-#CHECK: lhi %r0, 32767 # encoding: [0xa7,0x08,0x7f,0xff]
-#CHECK: lhi %r15, 0 # encoding: [0xa7,0xf8,0x00,0x00]
-
- lhi %r0, -32768
- lhi %r0, -1
- lhi %r0, 0
- lhi %r0, 1
- lhi %r0, 32767
- lhi %r15, 0
diff --git a/test/MC/SystemZ/insn-lhi-02.s b/test/MC/SystemZ/insn-lhi-02.s
deleted file mode 100644
index 8e38464b82..0000000000
--- a/test/MC/SystemZ/insn-lhi-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lhi %r0, -32769
-#CHECK: error: invalid operand
-#CHECK: lhi %r0, 32768
-#CHECK: error: invalid operand
-#CHECK: lhi %r0, foo
-
- lhi %r0, -32769
- lhi %r0, 32768
- lhi %r0, foo
diff --git a/test/MC/SystemZ/insn-lhr-01.s b/test/MC/SystemZ/insn-lhr-01.s
deleted file mode 100644
index a31cbc65f4..0000000000
--- a/test/MC/SystemZ/insn-lhr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lhr %r0, %r15 # encoding: [0xb9,0x27,0x00,0x0f]
-#CHECK: lhr %r7, %r8 # encoding: [0xb9,0x27,0x00,0x78]
-#CHECK: lhr %r15, %r0 # encoding: [0xb9,0x27,0x00,0xf0]
-
- lhr %r0, %r15
- lhr %r7, %r8
- lhr %r15, %r0
diff --git a/test/MC/SystemZ/insn-lhrl-01.s b/test/MC/SystemZ/insn-lhrl-01.s
deleted file mode 100644
index 87925fe098..0000000000
--- a/test/MC/SystemZ/insn-lhrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lhrl %r0, 2864434397 # encoding: [0xc4,0x05,0x55,0x5d,0xe6,0x6e]
-#CHECK: lhrl %r15, 2864434397 # encoding: [0xc4,0xf5,0x55,0x5d,0xe6,0x6e]
-
- lhrl %r0,0xaabbccdd
- lhrl %r15,0xaabbccdd
-
-#CHECK: lhrl %r0, foo # encoding: [0xc4,0x05,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: lhrl %r15, foo # encoding: [0xc4,0xf5,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- lhrl %r0,foo
- lhrl %r15,foo
-
-#CHECK: lhrl %r3, bar+100 # encoding: [0xc4,0x35,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: lhrl %r4, bar+100 # encoding: [0xc4,0x45,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- lhrl %r3,bar+100
- lhrl %r4,bar+100
-
-#CHECK: lhrl %r7, frob@PLT # encoding: [0xc4,0x75,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: lhrl %r8, frob@PLT # encoding: [0xc4,0x85,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- lhrl %r7,frob@PLT
- lhrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-lhy-01.s b/test/MC/SystemZ/insn-lhy-01.s
deleted file mode 100644
index db811a41a4..0000000000
--- a/test/MC/SystemZ/insn-lhy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lhy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x78]
-#CHECK: lhy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x78]
-#CHECK: lhy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x78]
-#CHECK: lhy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x78]
-#CHECK: lhy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x78]
-#CHECK: lhy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x78]
-#CHECK: lhy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x78]
-#CHECK: lhy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x78]
-#CHECK: lhy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x78]
-#CHECK: lhy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x78]
-
- lhy %r0, -524288
- lhy %r0, -1
- lhy %r0, 0
- lhy %r0, 1
- lhy %r0, 524287
- lhy %r0, 0(%r1)
- lhy %r0, 0(%r15)
- lhy %r0, 524287(%r1,%r15)
- lhy %r0, 524287(%r15,%r1)
- lhy %r15, 0
diff --git a/test/MC/SystemZ/insn-lhy-02.s b/test/MC/SystemZ/insn-lhy-02.s
deleted file mode 100644
index 6f1caa59fa..0000000000
--- a/test/MC/SystemZ/insn-lhy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lhy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lhy %r0, 524288
-
- lhy %r0, -524289
- lhy %r0, 524288
diff --git a/test/MC/SystemZ/insn-llc-01.s b/test/MC/SystemZ/insn-llc-01.s
deleted file mode 100644
index 74a819b2ee..0000000000
--- a/test/MC/SystemZ/insn-llc-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llc %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x94]
-#CHECK: llc %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x94]
-#CHECK: llc %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x94]
-#CHECK: llc %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x94]
-#CHECK: llc %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x94]
-#CHECK: llc %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x94]
-#CHECK: llc %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x94]
-#CHECK: llc %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x94]
-#CHECK: llc %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x94]
-#CHECK: llc %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x94]
-
- llc %r0, -524288
- llc %r0, -1
- llc %r0, 0
- llc %r0, 1
- llc %r0, 524287
- llc %r0, 0(%r1)
- llc %r0, 0(%r15)
- llc %r0, 524287(%r1,%r15)
- llc %r0, 524287(%r15,%r1)
- llc %r15, 0
diff --git a/test/MC/SystemZ/insn-llc-02.s b/test/MC/SystemZ/insn-llc-02.s
deleted file mode 100644
index 4a65f6c55e..0000000000
--- a/test/MC/SystemZ/insn-llc-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llc %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: llc %r0, 524288
-
- llc %r0, -524289
- llc %r0, 524288
diff --git a/test/MC/SystemZ/insn-llcr-01.s b/test/MC/SystemZ/insn-llcr-01.s
deleted file mode 100644
index 72a695ceff..0000000000
--- a/test/MC/SystemZ/insn-llcr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llcr %r0, %r15 # encoding: [0xb9,0x94,0x00,0x0f]
-#CHECK: llcr %r7, %r8 # encoding: [0xb9,0x94,0x00,0x78]
-#CHECK: llcr %r15, %r0 # encoding: [0xb9,0x94,0x00,0xf0]
-
- llcr %r0, %r15
- llcr %r7, %r8
- llcr %r15, %r0
diff --git a/test/MC/SystemZ/insn-llgc-01.s b/test/MC/SystemZ/insn-llgc-01.s
deleted file mode 100644
index 297c6d62db..0000000000
--- a/test/MC/SystemZ/insn-llgc-01.s
+++ /dev/null
@@ -1,24 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llgc %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x90]
-#CHECK: llgc %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x90]
-#CHECK: llgc %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x90]
-#CHECK: llgc %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x90]
-#CHECK: llgc %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x90]
-#CHECK: llgc %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x90]
-#CHECK: llgc %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x90]
-#CHECK: llgc %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x90]
-#CHECK: llgc %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x90]
-#CHECK: llgc %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x90]
-
- llgc %r0, -524288
- llgc %r0, -1
- llgc %r0, 0
- llgc %r0, 1
- llgc %r0, 524287
- llgc %r0, 0(%r1)
- llgc %r0, 0(%r15)
- llgc %r0, 524287(%r1,%r15)
- llgc %r0, 524287(%r15,%r1)
- llgc %r15, 0
-
diff --git a/test/MC/SystemZ/insn-llgc-02.s b/test/MC/SystemZ/insn-llgc-02.s
deleted file mode 100644
index 76fca0f251..0000000000
--- a/test/MC/SystemZ/insn-llgc-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llgc %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: llgc %r0, 524288
-
- llgc %r0, -524289
- llgc %r0, 524288
diff --git a/test/MC/SystemZ/insn-llgcr-01.s b/test/MC/SystemZ/insn-llgcr-01.s
deleted file mode 100644
index 5d653bfff9..0000000000
--- a/test/MC/SystemZ/insn-llgcr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llgcr %r0, %r15 # encoding: [0xb9,0x84,0x00,0x0f]
-#CHECK: llgcr %r7, %r8 # encoding: [0xb9,0x84,0x00,0x78]
-#CHECK: llgcr %r15, %r0 # encoding: [0xb9,0x84,0x00,0xf0]
-
- llgcr %r0, %r15
- llgcr %r7, %r8
- llgcr %r15, %r0
diff --git a/test/MC/SystemZ/insn-llgf-01.s b/test/MC/SystemZ/insn-llgf-01.s
deleted file mode 100644
index 0394140dab..0000000000
--- a/test/MC/SystemZ/insn-llgf-01.s
+++ /dev/null
@@ -1,24 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x16]
-#CHECK: llgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x16]
-#CHECK: llgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x16]
-#CHECK: llgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x16]
-#CHECK: llgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x16]
-#CHECK: llgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x16]
-#CHECK: llgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x16]
-#CHECK: llgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x16]
-#CHECK: llgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x16]
-#CHECK: llgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x16]
-
- llgf %r0, -524288
- llgf %r0, -1
- llgf %r0, 0
- llgf %r0, 1
- llgf %r0, 524287
- llgf %r0, 0(%r1)
- llgf %r0, 0(%r15)
- llgf %r0, 524287(%r1,%r15)
- llgf %r0, 524287(%r15,%r1)
- llgf %r15, 0
-
diff --git a/test/MC/SystemZ/insn-llgf-02.s b/test/MC/SystemZ/insn-llgf-02.s
deleted file mode 100644
index 0b2fab033a..0000000000
--- a/test/MC/SystemZ/insn-llgf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llgf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: llgf %r0, 524288
-
- llgf %r0, -524289
- llgf %r0, 524288
diff --git a/test/MC/SystemZ/insn-llgfr-01.s b/test/MC/SystemZ/insn-llgfr-01.s
deleted file mode 100644
index 74f1074d15..0000000000
--- a/test/MC/SystemZ/insn-llgfr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llgfr %r0, %r15 # encoding: [0xb9,0x16,0x00,0x0f]
-#CHECK: llgfr %r7, %r8 # encoding: [0xb9,0x16,0x00,0x78]
-#CHECK: llgfr %r15, %r0 # encoding: [0xb9,0x16,0x00,0xf0]
-
- llgfr %r0, %r15
- llgfr %r7, %r8
- llgfr %r15, %r0
diff --git a/test/MC/SystemZ/insn-llgfrl-01.s b/test/MC/SystemZ/insn-llgfrl-01.s
deleted file mode 100644
index 85fc9f4b3c..0000000000
--- a/test/MC/SystemZ/insn-llgfrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llgfrl %r0, 2864434397 # encoding: [0xc4,0x0e,0x55,0x5d,0xe6,0x6e]
-#CHECK: llgfrl %r15, 2864434397 # encoding: [0xc4,0xfe,0x55,0x5d,0xe6,0x6e]
-
- llgfrl %r0,0xaabbccdd
- llgfrl %r15,0xaabbccdd
-
-#CHECK: llgfrl %r0, foo # encoding: [0xc4,0x0e,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: llgfrl %r15, foo # encoding: [0xc4,0xfe,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- llgfrl %r0,foo
- llgfrl %r15,foo
-
-#CHECK: llgfrl %r3, bar+100 # encoding: [0xc4,0x3e,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: llgfrl %r4, bar+100 # encoding: [0xc4,0x4e,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- llgfrl %r3,bar+100
- llgfrl %r4,bar+100
-
-#CHECK: llgfrl %r7, frob@PLT # encoding: [0xc4,0x7e,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: llgfrl %r8, frob@PLT # encoding: [0xc4,0x8e,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- llgfrl %r7,frob@PLT
- llgfrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-llgh-01.s b/test/MC/SystemZ/insn-llgh-01.s
deleted file mode 100644
index acbab00438..0000000000
--- a/test/MC/SystemZ/insn-llgh-01.s
+++ /dev/null
@@ -1,24 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llgh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x91]
-#CHECK: llgh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x91]
-#CHECK: llgh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x91]
-#CHECK: llgh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x91]
-#CHECK: llgh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x91]
-#CHECK: llgh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x91]
-#CHECK: llgh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x91]
-#CHECK: llgh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x91]
-#CHECK: llgh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x91]
-#CHECK: llgh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x91]
-
- llgh %r0, -524288
- llgh %r0, -1
- llgh %r0, 0
- llgh %r0, 1
- llgh %r0, 524287
- llgh %r0, 0(%r1)
- llgh %r0, 0(%r15)
- llgh %r0, 524287(%r1,%r15)
- llgh %r0, 524287(%r15,%r1)
- llgh %r15, 0
-
diff --git a/test/MC/SystemZ/insn-llgh-02.s b/test/MC/SystemZ/insn-llgh-02.s
deleted file mode 100644
index 95b6b12c91..0000000000
--- a/test/MC/SystemZ/insn-llgh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llgh %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: llgh %r0, 524288
-
- llgh %r0, -524289
- llgh %r0, 524288
diff --git a/test/MC/SystemZ/insn-llghr-01.s b/test/MC/SystemZ/insn-llghr-01.s
deleted file mode 100644
index 3e2f6de2ae..0000000000
--- a/test/MC/SystemZ/insn-llghr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llghr %r0, %r15 # encoding: [0xb9,0x85,0x00,0x0f]
-#CHECK: llghr %r7, %r8 # encoding: [0xb9,0x85,0x00,0x78]
-#CHECK: llghr %r15, %r0 # encoding: [0xb9,0x85,0x00,0xf0]
-
- llghr %r0, %r15
- llghr %r7, %r8
- llghr %r15, %r0
diff --git a/test/MC/SystemZ/insn-llghrl-01.s b/test/MC/SystemZ/insn-llghrl-01.s
deleted file mode 100644
index af3fa8b9d7..0000000000
--- a/test/MC/SystemZ/insn-llghrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llghrl %r0, 2864434397 # encoding: [0xc4,0x06,0x55,0x5d,0xe6,0x6e]
-#CHECK: llghrl %r15, 2864434397 # encoding: [0xc4,0xf6,0x55,0x5d,0xe6,0x6e]
-
- llghrl %r0,0xaabbccdd
- llghrl %r15,0xaabbccdd
-
-#CHECK: llghrl %r0, foo # encoding: [0xc4,0x06,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: llghrl %r15, foo # encoding: [0xc4,0xf6,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- llghrl %r0,foo
- llghrl %r15,foo
-
-#CHECK: llghrl %r3, bar+100 # encoding: [0xc4,0x36,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: llghrl %r4, bar+100 # encoding: [0xc4,0x46,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- llghrl %r3,bar+100
- llghrl %r4,bar+100
-
-#CHECK: llghrl %r7, frob@PLT # encoding: [0xc4,0x76,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: llghrl %r8, frob@PLT # encoding: [0xc4,0x86,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- llghrl %r7,frob@PLT
- llghrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-llh-01.s b/test/MC/SystemZ/insn-llh-01.s
deleted file mode 100644
index 7e15f3f6d6..0000000000
--- a/test/MC/SystemZ/insn-llh-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llh %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x95]
-#CHECK: llh %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x95]
-#CHECK: llh %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x95]
-#CHECK: llh %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x95]
-#CHECK: llh %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x95]
-#CHECK: llh %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x95]
-#CHECK: llh %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x95]
-#CHECK: llh %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x95]
-#CHECK: llh %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x95]
-#CHECK: llh %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x95]
-
- llh %r0, -524288
- llh %r0, -1
- llh %r0, 0
- llh %r0, 1
- llh %r0, 524287
- llh %r0, 0(%r1)
- llh %r0, 0(%r15)
- llh %r0, 524287(%r1,%r15)
- llh %r0, 524287(%r15,%r1)
- llh %r15, 0
diff --git a/test/MC/SystemZ/insn-llh-02.s b/test/MC/SystemZ/insn-llh-02.s
deleted file mode 100644
index 92c49bb59c..0000000000
--- a/test/MC/SystemZ/insn-llh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llh %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: llh %r0, 524288
-
- llh %r0, -524289
- llh %r0, 524288
diff --git a/test/MC/SystemZ/insn-llhr-01.s b/test/MC/SystemZ/insn-llhr-01.s
deleted file mode 100644
index bb1d3b5d32..0000000000
--- a/test/MC/SystemZ/insn-llhr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llhr %r0, %r15 # encoding: [0xb9,0x95,0x00,0x0f]
-#CHECK: llhr %r7, %r8 # encoding: [0xb9,0x95,0x00,0x78]
-#CHECK: llhr %r15, %r0 # encoding: [0xb9,0x95,0x00,0xf0]
-
- llhr %r0, %r15
- llhr %r7, %r8
- llhr %r15, %r0
diff --git a/test/MC/SystemZ/insn-llhrl-01.s b/test/MC/SystemZ/insn-llhrl-01.s
deleted file mode 100644
index 30ed4f9056..0000000000
--- a/test/MC/SystemZ/insn-llhrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llhrl %r0, 2864434397 # encoding: [0xc4,0x02,0x55,0x5d,0xe6,0x6e]
-#CHECK: llhrl %r15, 2864434397 # encoding: [0xc4,0xf2,0x55,0x5d,0xe6,0x6e]
-
- llhrl %r0,0xaabbccdd
- llhrl %r15,0xaabbccdd
-
-#CHECK: llhrl %r0, foo # encoding: [0xc4,0x02,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: llhrl %r15, foo # encoding: [0xc4,0xf2,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- llhrl %r0,foo
- llhrl %r15,foo
-
-#CHECK: llhrl %r3, bar+100 # encoding: [0xc4,0x32,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: llhrl %r4, bar+100 # encoding: [0xc4,0x42,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- llhrl %r3,bar+100
- llhrl %r4,bar+100
-
-#CHECK: llhrl %r7, frob@PLT # encoding: [0xc4,0x72,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: llhrl %r8, frob@PLT # encoding: [0xc4,0x82,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- llhrl %r7,frob@PLT
- llhrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-llihf-01.s b/test/MC/SystemZ/insn-llihf-01.s
deleted file mode 100644
index 6ddd29ffa3..0000000000
--- a/test/MC/SystemZ/insn-llihf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llihf %r0, 0 # encoding: [0xc0,0x0e,0x00,0x00,0x00,0x00]
-#CHECK: llihf %r0, 4294967295 # encoding: [0xc0,0x0e,0xff,0xff,0xff,0xff]
-#CHECK: llihf %r15, 0 # encoding: [0xc0,0xfe,0x00,0x00,0x00,0x00]
-
- llihf %r0, 0
- llihf %r0, 0xffffffff
- llihf %r15, 0
diff --git a/test/MC/SystemZ/insn-llihf-02.s b/test/MC/SystemZ/insn-llihf-02.s
deleted file mode 100644
index e1b4537b02..0000000000
--- a/test/MC/SystemZ/insn-llihf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llihf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: llihf %r0, 1 << 32
-
- llihf %r0, -1
- llihf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-llihh-01.s b/test/MC/SystemZ/insn-llihh-01.s
deleted file mode 100644
index 06060765c7..0000000000
--- a/test/MC/SystemZ/insn-llihh-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llihh %r0, 0 # encoding: [0xa5,0x0c,0x00,0x00]
-#CHECK: llihh %r0, 32768 # encoding: [0xa5,0x0c,0x80,0x00]
-#CHECK: llihh %r0, 65535 # encoding: [0xa5,0x0c,0xff,0xff]
-#CHECK: llihh %r15, 0 # encoding: [0xa5,0xfc,0x00,0x00]
-
- llihh %r0, 0
- llihh %r0, 0x8000
- llihh %r0, 0xffff
- llihh %r15, 0
diff --git a/test/MC/SystemZ/insn-llihh-02.s b/test/MC/SystemZ/insn-llihh-02.s
deleted file mode 100644
index 1309f1440f..0000000000
--- a/test/MC/SystemZ/insn-llihh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llihh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: llihh %r0, 0x10000
-
- llihh %r0, -1
- llihh %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-llihl-01.s b/test/MC/SystemZ/insn-llihl-01.s
deleted file mode 100644
index 6353353321..0000000000
--- a/test/MC/SystemZ/insn-llihl-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llihl %r0, 0 # encoding: [0xa5,0x0d,0x00,0x00]
-#CHECK: llihl %r0, 32768 # encoding: [0xa5,0x0d,0x80,0x00]
-#CHECK: llihl %r0, 65535 # encoding: [0xa5,0x0d,0xff,0xff]
-#CHECK: llihl %r15, 0 # encoding: [0xa5,0xfd,0x00,0x00]
-
- llihl %r0, 0
- llihl %r0, 0x8000
- llihl %r0, 0xffff
- llihl %r15, 0
diff --git a/test/MC/SystemZ/insn-llihl-02.s b/test/MC/SystemZ/insn-llihl-02.s
deleted file mode 100644
index 6891c42196..0000000000
--- a/test/MC/SystemZ/insn-llihl-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llihl %r0, -1
-#CHECK: error: invalid operand
-#CHECK: llihl %r0, 0x10000
-
- llihl %r0, -1
- llihl %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-llilf-01.s b/test/MC/SystemZ/insn-llilf-01.s
deleted file mode 100644
index 8166583a2c..0000000000
--- a/test/MC/SystemZ/insn-llilf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llilf %r0, 0 # encoding: [0xc0,0x0f,0x00,0x00,0x00,0x00]
-#CHECK: llilf %r0, 4294967295 # encoding: [0xc0,0x0f,0xff,0xff,0xff,0xff]
-#CHECK: llilf %r15, 0 # encoding: [0xc0,0xff,0x00,0x00,0x00,0x00]
-
- llilf %r0, 0
- llilf %r0, 0xffffffff
- llilf %r15, 0
diff --git a/test/MC/SystemZ/insn-llilf-02.s b/test/MC/SystemZ/insn-llilf-02.s
deleted file mode 100644
index dc10cc34ee..0000000000
--- a/test/MC/SystemZ/insn-llilf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llilf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: llilf %r0, 1 << 32
-
- llilf %r0, -1
- llilf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-llilh-01.s b/test/MC/SystemZ/insn-llilh-01.s
deleted file mode 100644
index 2ec5a7952f..0000000000
--- a/test/MC/SystemZ/insn-llilh-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llilh %r0, 0 # encoding: [0xa5,0x0e,0x00,0x00]
-#CHECK: llilh %r0, 32768 # encoding: [0xa5,0x0e,0x80,0x00]
-#CHECK: llilh %r0, 65535 # encoding: [0xa5,0x0e,0xff,0xff]
-#CHECK: llilh %r15, 0 # encoding: [0xa5,0xfe,0x00,0x00]
-
- llilh %r0, 0
- llilh %r0, 0x8000
- llilh %r0, 0xffff
- llilh %r15, 0
diff --git a/test/MC/SystemZ/insn-llilh-02.s b/test/MC/SystemZ/insn-llilh-02.s
deleted file mode 100644
index bdfa1e7743..0000000000
--- a/test/MC/SystemZ/insn-llilh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llilh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: llilh %r0, 0x10000
-
- llilh %r0, -1
- llilh %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-llill-01.s b/test/MC/SystemZ/insn-llill-01.s
deleted file mode 100644
index b95841da4d..0000000000
--- a/test/MC/SystemZ/insn-llill-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: llill %r0, 0 # encoding: [0xa5,0x0f,0x00,0x00]
-#CHECK: llill %r0, 32768 # encoding: [0xa5,0x0f,0x80,0x00]
-#CHECK: llill %r0, 65535 # encoding: [0xa5,0x0f,0xff,0xff]
-#CHECK: llill %r15, 0 # encoding: [0xa5,0xff,0x00,0x00]
-
- llill %r0, 0
- llill %r0, 0x8000
- llill %r0, 0xffff
- llill %r15, 0
diff --git a/test/MC/SystemZ/insn-llill-02.s b/test/MC/SystemZ/insn-llill-02.s
deleted file mode 100644
index 2503b53331..0000000000
--- a/test/MC/SystemZ/insn-llill-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: llill %r0, -1
-#CHECK: error: invalid operand
-#CHECK: llill %r0, 0x10000
-
- llill %r0, -1
- llill %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-lmg-01.s b/test/MC/SystemZ/insn-lmg-01.s
deleted file mode 100644
index 24a2768192..0000000000
--- a/test/MC/SystemZ/insn-lmg-01.s
+++ /dev/null
@@ -1,29 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x04]
-#CHECK: lmg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x04]
-#CHECK: lmg %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x04]
-#CHECK: lmg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x04]
-#CHECK: lmg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x04]
-#CHECK: lmg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x04]
-#CHECK: lmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x04]
-#CHECK: lmg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x04]
-#CHECK: lmg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x04]
-#CHECK: lmg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x04]
-#CHECK: lmg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x04]
-#CHECK: lmg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x04]
-#CHECK: lmg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x04]
-
- lmg %r0,%r0,0
- lmg %r0,%r15,0
- lmg %r14,%r15,0
- lmg %r15,%r15,0
- lmg %r0,%r0,-524288
- lmg %r0,%r0,-1
- lmg %r0,%r0,0
- lmg %r0,%r0,1
- lmg %r0,%r0,524287
- lmg %r0,%r0,0(%r1)
- lmg %r0,%r0,0(%r15)
- lmg %r0,%r0,524287(%r1)
- lmg %r0,%r0,524287(%r15)
diff --git a/test/MC/SystemZ/insn-lmg-02.s b/test/MC/SystemZ/insn-lmg-02.s
deleted file mode 100644
index 9a67c08ee6..0000000000
--- a/test/MC/SystemZ/insn-lmg-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lmg %r0, %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lmg %r0, %r0, 524288
-#CHECK: error: invalid use of indexed addressing
-#CHECK: lmg %r0, %r0, 0(%r1,%r2)
-
- lmg %r0, %r0, -524289
- lmg %r0, %r0, 524288
- lmg %r0, %r0, 0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-lndbr-01.s b/test/MC/SystemZ/insn-lndbr-01.s
deleted file mode 100644
index 22786238ab..0000000000
--- a/test/MC/SystemZ/insn-lndbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lndbr %f0, %f9 # encoding: [0xb3,0x11,0x00,0x09]
-#CHECK: lndbr %f0, %f15 # encoding: [0xb3,0x11,0x00,0x0f]
-#CHECK: lndbr %f15, %f0 # encoding: [0xb3,0x11,0x00,0xf0]
-#CHECK: lndbr %f15, %f9 # encoding: [0xb3,0x11,0x00,0xf9]
-
- lndbr %f0,%f9
- lndbr %f0,%f15
- lndbr %f15,%f0
- lndbr %f15,%f9
diff --git a/test/MC/SystemZ/insn-lnebr-01.s b/test/MC/SystemZ/insn-lnebr-01.s
deleted file mode 100644
index cf32734ad2..0000000000
--- a/test/MC/SystemZ/insn-lnebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lnebr %f0, %f9 # encoding: [0xb3,0x01,0x00,0x09]
-#CHECK: lnebr %f0, %f15 # encoding: [0xb3,0x01,0x00,0x0f]
-#CHECK: lnebr %f15, %f0 # encoding: [0xb3,0x01,0x00,0xf0]
-#CHECK: lnebr %f15, %f9 # encoding: [0xb3,0x01,0x00,0xf9]
-
- lnebr %f0,%f9
- lnebr %f0,%f15
- lnebr %f15,%f0
- lnebr %f15,%f9
diff --git a/test/MC/SystemZ/insn-lnxbr-01.s b/test/MC/SystemZ/insn-lnxbr-01.s
deleted file mode 100644
index bf3794859e..0000000000
--- a/test/MC/SystemZ/insn-lnxbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lnxbr %f0, %f8 # encoding: [0xb3,0x41,0x00,0x08]
-#CHECK: lnxbr %f0, %f13 # encoding: [0xb3,0x41,0x00,0x0d]
-#CHECK: lnxbr %f13, %f0 # encoding: [0xb3,0x41,0x00,0xd0]
-#CHECK: lnxbr %f13, %f9 # encoding: [0xb3,0x41,0x00,0xd9]
-
- lnxbr %f0,%f8
- lnxbr %f0,%f13
- lnxbr %f13,%f0
- lnxbr %f13,%f9
diff --git a/test/MC/SystemZ/insn-lnxbr-02.s b/test/MC/SystemZ/insn-lnxbr-02.s
deleted file mode 100644
index 9a69f48a06..0000000000
--- a/test/MC/SystemZ/insn-lnxbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lnxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lnxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: lnxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lnxbr %f14, %f0
-
- lnxbr %f0, %f2
- lnxbr %f0, %f14
- lnxbr %f2, %f0
- lnxbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-lpdbr-01.s b/test/MC/SystemZ/insn-lpdbr-01.s
deleted file mode 100644
index 869b0c9117..0000000000
--- a/test/MC/SystemZ/insn-lpdbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lpdbr %f0, %f9 # encoding: [0xb3,0x10,0x00,0x09]
-#CHECK: lpdbr %f0, %f15 # encoding: [0xb3,0x10,0x00,0x0f]
-#CHECK: lpdbr %f15, %f0 # encoding: [0xb3,0x10,0x00,0xf0]
-#CHECK: lpdbr %f15, %f9 # encoding: [0xb3,0x10,0x00,0xf9]
-
- lpdbr %f0,%f9
- lpdbr %f0,%f15
- lpdbr %f15,%f0
- lpdbr %f15,%f9
diff --git a/test/MC/SystemZ/insn-lpebr-01.s b/test/MC/SystemZ/insn-lpebr-01.s
deleted file mode 100644
index 917f26e9ae..0000000000
--- a/test/MC/SystemZ/insn-lpebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lpebr %f0, %f9 # encoding: [0xb3,0x00,0x00,0x09]
-#CHECK: lpebr %f0, %f15 # encoding: [0xb3,0x00,0x00,0x0f]
-#CHECK: lpebr %f15, %f0 # encoding: [0xb3,0x00,0x00,0xf0]
-#CHECK: lpebr %f15, %f9 # encoding: [0xb3,0x00,0x00,0xf9]
-
- lpebr %f0,%f9
- lpebr %f0,%f15
- lpebr %f15,%f0
- lpebr %f15,%f9
diff --git a/test/MC/SystemZ/insn-lpxbr-01.s b/test/MC/SystemZ/insn-lpxbr-01.s
deleted file mode 100644
index 56a628ab96..0000000000
--- a/test/MC/SystemZ/insn-lpxbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lpxbr %f0, %f8 # encoding: [0xb3,0x40,0x00,0x08]
-#CHECK: lpxbr %f0, %f13 # encoding: [0xb3,0x40,0x00,0x0d]
-#CHECK: lpxbr %f13, %f0 # encoding: [0xb3,0x40,0x00,0xd0]
-#CHECK: lpxbr %f13, %f9 # encoding: [0xb3,0x40,0x00,0xd9]
-
- lpxbr %f0,%f8
- lpxbr %f0,%f13
- lpxbr %f13,%f0
- lpxbr %f13,%f9
diff --git a/test/MC/SystemZ/insn-lpxbr-02.s b/test/MC/SystemZ/insn-lpxbr-02.s
deleted file mode 100644
index 6fa3697111..0000000000
--- a/test/MC/SystemZ/insn-lpxbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lpxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lpxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: lpxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lpxbr %f14, %f0
-
- lpxbr %f0, %f2
- lpxbr %f0, %f14
- lpxbr %f2, %f0
- lpxbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-lr-01.s b/test/MC/SystemZ/insn-lr-01.s
deleted file mode 100644
index 8ce4a00678..0000000000
--- a/test/MC/SystemZ/insn-lr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lr %r0, %r9 # encoding: [0x18,0x09]
-#CHECK: lr %r0, %r15 # encoding: [0x18,0x0f]
-#CHECK: lr %r15, %r0 # encoding: [0x18,0xf0]
-#CHECK: lr %r15, %r9 # encoding: [0x18,0xf9]
-
- lr %r0,%r9
- lr %r0,%r15
- lr %r15,%r0
- lr %r15,%r9
diff --git a/test/MC/SystemZ/insn-lrl-01.s b/test/MC/SystemZ/insn-lrl-01.s
deleted file mode 100644
index 32d0eeb2b8..0000000000
--- a/test/MC/SystemZ/insn-lrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lrl %r0, 2864434397 # encoding: [0xc4,0x0d,0x55,0x5d,0xe6,0x6e]
-#CHECK: lrl %r15, 2864434397 # encoding: [0xc4,0xfd,0x55,0x5d,0xe6,0x6e]
-
- lrl %r0,0xaabbccdd
- lrl %r15,0xaabbccdd
-
-#CHECK: lrl %r0, foo # encoding: [0xc4,0x0d,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: lrl %r15, foo # encoding: [0xc4,0xfd,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- lrl %r0,foo
- lrl %r15,foo
-
-#CHECK: lrl %r3, bar+100 # encoding: [0xc4,0x3d,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: lrl %r4, bar+100 # encoding: [0xc4,0x4d,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- lrl %r3,bar+100
- lrl %r4,bar+100
-
-#CHECK: lrl %r7, frob@PLT # encoding: [0xc4,0x7d,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: lrl %r8, frob@PLT # encoding: [0xc4,0x8d,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- lrl %r7,frob@PLT
- lrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-lrv-01.s b/test/MC/SystemZ/insn-lrv-01.s
deleted file mode 100644
index 75b973a22d..0000000000
--- a/test/MC/SystemZ/insn-lrv-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lrv %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1e]
-#CHECK: lrv %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1e]
-#CHECK: lrv %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1e]
-#CHECK: lrv %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1e]
-#CHECK: lrv %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1e]
-#CHECK: lrv %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1e]
-#CHECK: lrv %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1e]
-#CHECK: lrv %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1e]
-#CHECK: lrv %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1e]
-#CHECK: lrv %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1e]
-
- lrv %r0,-524288
- lrv %r0,-1
- lrv %r0,0
- lrv %r0,1
- lrv %r0,524287
- lrv %r0,0(%r1)
- lrv %r0,0(%r15)
- lrv %r0,524287(%r1,%r15)
- lrv %r0,524287(%r15,%r1)
- lrv %r15,0
diff --git a/test/MC/SystemZ/insn-lrv-02.s b/test/MC/SystemZ/insn-lrv-02.s
deleted file mode 100644
index f2dcfa777a..0000000000
--- a/test/MC/SystemZ/insn-lrv-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lrv %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lrv %r0, 524288
-
- lrv %r0, -524289
- lrv %r0, 524288
diff --git a/test/MC/SystemZ/insn-lrvg-01.s b/test/MC/SystemZ/insn-lrvg-01.s
deleted file mode 100644
index d2d8b2db43..0000000000
--- a/test/MC/SystemZ/insn-lrvg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lrvg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0f]
-#CHECK: lrvg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0f]
-#CHECK: lrvg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0f]
-#CHECK: lrvg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0f]
-#CHECK: lrvg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0f]
-#CHECK: lrvg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0f]
-#CHECK: lrvg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0f]
-#CHECK: lrvg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0f]
-#CHECK: lrvg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0f]
-#CHECK: lrvg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x0f]
-
- lrvg %r0,-524288
- lrvg %r0,-1
- lrvg %r0,0
- lrvg %r0,1
- lrvg %r0,524287
- lrvg %r0,0(%r1)
- lrvg %r0,0(%r15)
- lrvg %r0,524287(%r1,%r15)
- lrvg %r0,524287(%r15,%r1)
- lrvg %r15,0
diff --git a/test/MC/SystemZ/insn-lrvg-02.s b/test/MC/SystemZ/insn-lrvg-02.s
deleted file mode 100644
index 690fa13500..0000000000
--- a/test/MC/SystemZ/insn-lrvg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: lrvg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: lrvg %r0, 524288
-
- lrvg %r0, -524289
- lrvg %r0, 524288
diff --git a/test/MC/SystemZ/insn-lrvgr-01.s b/test/MC/SystemZ/insn-lrvgr-01.s
deleted file mode 100644
index 1b6e8841ee..0000000000
--- a/test/MC/SystemZ/insn-lrvgr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lrvgr %r0, %r0 # encoding: [0xb9,0x0f,0x00,0x00]
-#CHECK: lrvgr %r0, %r15 # encoding: [0xb9,0x0f,0x00,0x0f]
-#CHECK: lrvgr %r15, %r0 # encoding: [0xb9,0x0f,0x00,0xf0]
-#CHECK: lrvgr %r7, %r8 # encoding: [0xb9,0x0f,0x00,0x78]
-#CHECK: lrvgr %r15, %r15 # encoding: [0xb9,0x0f,0x00,0xff]
-
- lrvgr %r0,%r0
- lrvgr %r0,%r15
- lrvgr %r15,%r0
- lrvgr %r7,%r8
- lrvgr %r15,%r15
diff --git a/test/MC/SystemZ/insn-lrvr-01.s b/test/MC/SystemZ/insn-lrvr-01.s
deleted file mode 100644
index c0d5d895b8..0000000000
--- a/test/MC/SystemZ/insn-lrvr-01.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lrvr %r0, %r0 # encoding: [0xb9,0x1f,0x00,0x00]
-#CHECK: lrvr %r0, %r15 # encoding: [0xb9,0x1f,0x00,0x0f]
-#CHECK: lrvr %r15, %r0 # encoding: [0xb9,0x1f,0x00,0xf0]
-#CHECK: lrvr %r7, %r8 # encoding: [0xb9,0x1f,0x00,0x78]
-#CHECK: lrvr %r15, %r15 # encoding: [0xb9,0x1f,0x00,0xff]
-
- lrvr %r0,%r0
- lrvr %r0,%r15
- lrvr %r15,%r0
- lrvr %r7,%r8
- lrvr %r15,%r15
diff --git a/test/MC/SystemZ/insn-lxr-01.s b/test/MC/SystemZ/insn-lxr-01.s
deleted file mode 100644
index a04cdf7472..0000000000
--- a/test/MC/SystemZ/insn-lxr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lxr %f0, %f8 # encoding: [0xb3,0x65,0x00,0x08]
-#CHECK: lxr %f0, %f13 # encoding: [0xb3,0x65,0x00,0x0d]
-#CHECK: lxr %f13, %f0 # encoding: [0xb3,0x65,0x00,0xd0]
-#CHECK: lxr %f13, %f9 # encoding: [0xb3,0x65,0x00,0xd9]
-
- lxr %f0,%f8
- lxr %f0,%f13
- lxr %f13,%f0
- lxr %f13,%f9
diff --git a/test/MC/SystemZ/insn-lxr-02.s b/test/MC/SystemZ/insn-lxr-02.s
deleted file mode 100644
index b18ad756b1..0000000000
--- a/test/MC/SystemZ/insn-lxr-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lxr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: lxr %f15, %f0
-#CHECK: error: invalid register
-#CHECK: lxr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: lxr %f0, %f15
-
- lxr %f2, %f0
- lxr %f15, %f0
- lxr %f0, %f2
- lxr %f0, %f15
diff --git a/test/MC/SystemZ/insn-ly-01.s b/test/MC/SystemZ/insn-ly-01.s
deleted file mode 100644
index 25bc3e8a34..0000000000
--- a/test/MC/SystemZ/insn-ly-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ly %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x58]
-#CHECK: ly %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x58]
-#CHECK: ly %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x58]
-#CHECK: ly %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x58]
-#CHECK: ly %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x58]
-#CHECK: ly %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x58]
-#CHECK: ly %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x58]
-#CHECK: ly %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x58]
-#CHECK: ly %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x58]
-#CHECK: ly %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x58]
-
- ly %r0, -524288
- ly %r0, -1
- ly %r0, 0
- ly %r0, 1
- ly %r0, 524287
- ly %r0, 0(%r1)
- ly %r0, 0(%r15)
- ly %r0, 524287(%r1,%r15)
- ly %r0, 524287(%r15,%r1)
- ly %r15, 0
diff --git a/test/MC/SystemZ/insn-ly-02.s b/test/MC/SystemZ/insn-ly-02.s
deleted file mode 100644
index b2d424e115..0000000000
--- a/test/MC/SystemZ/insn-ly-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ly %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: ly %r0, 524288
-
- ly %r0, -524289
- ly %r0, 524288
diff --git a/test/MC/SystemZ/insn-lzdr-01.s b/test/MC/SystemZ/insn-lzdr-01.s
deleted file mode 100644
index c95082f47b..0000000000
--- a/test/MC/SystemZ/insn-lzdr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lzdr %f0 # encoding: [0xb3,0x75,0x00,0x00]
-#CHECK: lzdr %f7 # encoding: [0xb3,0x75,0x00,0x70]
-#CHECK: lzdr %f15 # encoding: [0xb3,0x75,0x00,0xf0]
-
- lzdr %f0
- lzdr %f7
- lzdr %f15
diff --git a/test/MC/SystemZ/insn-lzer-01.s b/test/MC/SystemZ/insn-lzer-01.s
deleted file mode 100644
index 0944047a5b..0000000000
--- a/test/MC/SystemZ/insn-lzer-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lzer %f0 # encoding: [0xb3,0x74,0x00,0x00]
-#CHECK: lzer %f7 # encoding: [0xb3,0x74,0x00,0x70]
-#CHECK: lzer %f15 # encoding: [0xb3,0x74,0x00,0xf0]
-
- lzer %f0
- lzer %f7
- lzer %f15
diff --git a/test/MC/SystemZ/insn-lzxr-01.s b/test/MC/SystemZ/insn-lzxr-01.s
deleted file mode 100644
index bd5a5c2ea1..0000000000
--- a/test/MC/SystemZ/insn-lzxr-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lzxr %f0 # encoding: [0xb3,0x76,0x00,0x00]
-#CHECK: lzxr %f8 # encoding: [0xb3,0x76,0x00,0x80]
-#CHECK: lzxr %f13 # encoding: [0xb3,0x76,0x00,0xd0]
-
- lzxr %f0
- lzxr %f8
- lzxr %f13
diff --git a/test/MC/SystemZ/insn-lzxr-02.s b/test/MC/SystemZ/insn-lzxr-02.s
deleted file mode 100644
index 4ce2ad04bc..0000000000
--- a/test/MC/SystemZ/insn-lzxr-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lzxr %f2
-#CHECK: error: invalid register
-#CHECK: lzxr %f14
-#CHECK: error: invalid register
-#CHECK: lzxr %f15
-
- lzxr %f2
- lzxr %f14
- lzxr %f15
diff --git a/test/MC/SystemZ/insn-madb-01.s b/test/MC/SystemZ/insn-madb-01.s
deleted file mode 100644
index 6eec4beb37..0000000000
--- a/test/MC/SystemZ/insn-madb-01.s
+++ /dev/null
@@ -1,21 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: madb %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1e]
-#CHECK: madb %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1e]
-#CHECK: madb %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1e]
-#CHECK: madb %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1e]
-#CHECK: madb %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1e]
-#CHECK: madb %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1e]
-#CHECK: madb %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1e]
-#CHECK: madb %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x1e]
-#CHECK: madb %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x1e]
-
- madb %f0, %f0, 0
- madb %f0, %f0, 4095
- madb %f0, %f0, 0(%r1)
- madb %f0, %f0, 0(%r15)
- madb %f0, %f0, 4095(%r1,%r15)
- madb %f0, %f0, 4095(%r15,%r1)
- madb %f0, %f15, 0
- madb %f15, %f0, 0
- madb %f15, %f15, 0
diff --git a/test/MC/SystemZ/insn-madb-02.s b/test/MC/SystemZ/insn-madb-02.s
deleted file mode 100644
index f7fdee978e..0000000000
--- a/test/MC/SystemZ/insn-madb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: madb %f0, %f0, -1
-#CHECK: error: invalid operand
-#CHECK: madb %f0, %f0, 4096
-
- madb %f0, %f0, -1
- madb %f0, %f0, 4096
diff --git a/test/MC/SystemZ/insn-madbr-01.s b/test/MC/SystemZ/insn-madbr-01.s
deleted file mode 100644
index 42142be99e..0000000000
--- a/test/MC/SystemZ/insn-madbr-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: madbr %f0, %f0, %f0 # encoding: [0xb3,0x1e,0x00,0x00]
-#CHECK: madbr %f0, %f0, %f15 # encoding: [0xb3,0x1e,0x00,0x0f]
-#CHECK: madbr %f0, %f15, %f0 # encoding: [0xb3,0x1e,0x00,0xf0]
-#CHECK: madbr %f15, %f0, %f0 # encoding: [0xb3,0x1e,0xf0,0x00]
-#CHECK: madbr %f7, %f8, %f9 # encoding: [0xb3,0x1e,0x70,0x89]
-#CHECK: madbr %f15, %f15, %f15 # encoding: [0xb3,0x1e,0xf0,0xff]
-
- madbr %f0, %f0, %f0
- madbr %f0, %f0, %f15
- madbr %f0, %f15, %f0
- madbr %f15, %f0, %f0
- madbr %f7, %f8, %f9
- madbr %f15, %f15, %f15
diff --git a/test/MC/SystemZ/insn-maeb-01.s b/test/MC/SystemZ/insn-maeb-01.s
deleted file mode 100644
index 7a998fd79f..0000000000
--- a/test/MC/SystemZ/insn-maeb-01.s
+++ /dev/null
@@ -1,21 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: maeb %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0e]
-#CHECK: maeb %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0e]
-#CHECK: maeb %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0e]
-#CHECK: maeb %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0e]
-#CHECK: maeb %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0e]
-#CHECK: maeb %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0e]
-#CHECK: maeb %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0e]
-#CHECK: maeb %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x0e]
-#CHECK: maeb %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x0e]
-
- maeb %f0, %f0, 0
- maeb %f0, %f0, 4095
- maeb %f0, %f0, 0(%r1)
- maeb %f0, %f0, 0(%r15)
- maeb %f0, %f0, 4095(%r1,%r15)
- maeb %f0, %f0, 4095(%r15,%r1)
- maeb %f0, %f15, 0
- maeb %f15, %f0, 0
- maeb %f15, %f15, 0
diff --git a/test/MC/SystemZ/insn-maeb-02.s b/test/MC/SystemZ/insn-maeb-02.s
deleted file mode 100644
index e12407acc2..0000000000
--- a/test/MC/SystemZ/insn-maeb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: maeb %f0, %f0, -1
-#CHECK: error: invalid operand
-#CHECK: maeb %f0, %f0, 4096
-
- maeb %f0, %f0, -1
- maeb %f0, %f0, 4096
diff --git a/test/MC/SystemZ/insn-maebr-01.s b/test/MC/SystemZ/insn-maebr-01.s
deleted file mode 100644
index be92aaf874..0000000000
--- a/test/MC/SystemZ/insn-maebr-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: maebr %f0, %f0, %f0 # encoding: [0xb3,0x0e,0x00,0x00]
-#CHECK: maebr %f0, %f0, %f15 # encoding: [0xb3,0x0e,0x00,0x0f]
-#CHECK: maebr %f0, %f15, %f0 # encoding: [0xb3,0x0e,0x00,0xf0]
-#CHECK: maebr %f15, %f0, %f0 # encoding: [0xb3,0x0e,0xf0,0x00]
-#CHECK: maebr %f7, %f8, %f9 # encoding: [0xb3,0x0e,0x70,0x89]
-#CHECK: maebr %f15, %f15, %f15 # encoding: [0xb3,0x0e,0xf0,0xff]
-
- maebr %f0, %f0, %f0
- maebr %f0, %f0, %f15
- maebr %f0, %f15, %f0
- maebr %f15, %f0, %f0
- maebr %f7, %f8, %f9
- maebr %f15, %f15, %f15
diff --git a/test/MC/SystemZ/insn-mdb-01.s b/test/MC/SystemZ/insn-mdb-01.s
deleted file mode 100644
index 58be9779fc..0000000000
--- a/test/MC/SystemZ/insn-mdb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1c]
-#CHECK: mdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1c]
-#CHECK: mdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1c]
-#CHECK: mdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1c]
-#CHECK: mdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1c]
-#CHECK: mdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1c]
-#CHECK: mdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1c]
-
- mdb %f0, 0
- mdb %f0, 4095
- mdb %f0, 0(%r1)
- mdb %f0, 0(%r15)
- mdb %f0, 4095(%r1,%r15)
- mdb %f0, 4095(%r15,%r1)
- mdb %f15, 0
diff --git a/test/MC/SystemZ/insn-mdb-02.s b/test/MC/SystemZ/insn-mdb-02.s
deleted file mode 100644
index f1bdab015f..0000000000
--- a/test/MC/SystemZ/insn-mdb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mdb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: mdb %f0, 4096
-
- mdb %f0, -1
- mdb %f0, 4096
diff --git a/test/MC/SystemZ/insn-mdbr-01.s b/test/MC/SystemZ/insn-mdbr-01.s
deleted file mode 100644
index 4ff16b9c0b..0000000000
--- a/test/MC/SystemZ/insn-mdbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mdbr %f0, %f0 # encoding: [0xb3,0x1c,0x00,0x00]
-#CHECK: mdbr %f0, %f15 # encoding: [0xb3,0x1c,0x00,0x0f]
-#CHECK: mdbr %f7, %f8 # encoding: [0xb3,0x1c,0x00,0x78]
-#CHECK: mdbr %f15, %f0 # encoding: [0xb3,0x1c,0x00,0xf0]
-
- mdbr %f0, %f0
- mdbr %f0, %f15
- mdbr %f7, %f8
- mdbr %f15, %f0
diff --git a/test/MC/SystemZ/insn-mdeb-01.s b/test/MC/SystemZ/insn-mdeb-01.s
deleted file mode 100644
index 5d85c079db..0000000000
--- a/test/MC/SystemZ/insn-mdeb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mdeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0c]
-#CHECK: mdeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0c]
-#CHECK: mdeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0c]
-#CHECK: mdeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0c]
-#CHECK: mdeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0c]
-#CHECK: mdeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0c]
-#CHECK: mdeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0c]
-
- mdeb %f0, 0
- mdeb %f0, 4095
- mdeb %f0, 0(%r1)
- mdeb %f0, 0(%r15)
- mdeb %f0, 4095(%r1,%r15)
- mdeb %f0, 4095(%r15,%r1)
- mdeb %f15, 0
diff --git a/test/MC/SystemZ/insn-mdeb-02.s b/test/MC/SystemZ/insn-mdeb-02.s
deleted file mode 100644
index 87ec6767d4..0000000000
--- a/test/MC/SystemZ/insn-mdeb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mdeb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: mdeb %f0, 4096
-
- mdeb %f0, -1
- mdeb %f0, 4096
diff --git a/test/MC/SystemZ/insn-mdebr-01.s b/test/MC/SystemZ/insn-mdebr-01.s
deleted file mode 100644
index 17c495581d..0000000000
--- a/test/MC/SystemZ/insn-mdebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mdebr %f0, %f0 # encoding: [0xb3,0x0c,0x00,0x00]
-#CHECK: mdebr %f0, %f15 # encoding: [0xb3,0x0c,0x00,0x0f]
-#CHECK: mdebr %f7, %f8 # encoding: [0xb3,0x0c,0x00,0x78]
-#CHECK: mdebr %f15, %f0 # encoding: [0xb3,0x0c,0x00,0xf0]
-
- mdebr %f0, %f0
- mdebr %f0, %f15
- mdebr %f7, %f8
- mdebr %f15, %f0
diff --git a/test/MC/SystemZ/insn-meeb-01.s b/test/MC/SystemZ/insn-meeb-01.s
deleted file mode 100644
index bb14d04355..0000000000
--- a/test/MC/SystemZ/insn-meeb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: meeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x17]
-#CHECK: meeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x17]
-#CHECK: meeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x17]
-#CHECK: meeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x17]
-#CHECK: meeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x17]
-#CHECK: meeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x17]
-#CHECK: meeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x17]
-
- meeb %f0, 0
- meeb %f0, 4095
- meeb %f0, 0(%r1)
- meeb %f0, 0(%r15)
- meeb %f0, 4095(%r1,%r15)
- meeb %f0, 4095(%r15,%r1)
- meeb %f15, 0
diff --git a/test/MC/SystemZ/insn-meeb-02.s b/test/MC/SystemZ/insn-meeb-02.s
deleted file mode 100644
index ba5e3b28e3..0000000000
--- a/test/MC/SystemZ/insn-meeb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: meeb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: meeb %f0, 4096
-
- meeb %f0, -1
- meeb %f0, 4096
diff --git a/test/MC/SystemZ/insn-meebr-01.s b/test/MC/SystemZ/insn-meebr-01.s
deleted file mode 100644
index 99cd8a38e0..0000000000
--- a/test/MC/SystemZ/insn-meebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: meebr %f0, %f0 # encoding: [0xb3,0x17,0x00,0x00]
-#CHECK: meebr %f0, %f15 # encoding: [0xb3,0x17,0x00,0x0f]
-#CHECK: meebr %f7, %f8 # encoding: [0xb3,0x17,0x00,0x78]
-#CHECK: meebr %f15, %f0 # encoding: [0xb3,0x17,0x00,0xf0]
-
- meebr %f0, %f0
- meebr %f0, %f15
- meebr %f7, %f8
- meebr %f15, %f0
diff --git a/test/MC/SystemZ/insn-mghi-01.s b/test/MC/SystemZ/insn-mghi-01.s
deleted file mode 100644
index d07278f20a..0000000000
--- a/test/MC/SystemZ/insn-mghi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mghi %r0, -32768 # encoding: [0xa7,0x0d,0x80,0x00]
-#CHECK: mghi %r0, -1 # encoding: [0xa7,0x0d,0xff,0xff]
-#CHECK: mghi %r0, 0 # encoding: [0xa7,0x0d,0x00,0x00]
-#CHECK: mghi %r0, 1 # encoding: [0xa7,0x0d,0x00,0x01]
-#CHECK: mghi %r0, 32767 # encoding: [0xa7,0x0d,0x7f,0xff]
-#CHECK: mghi %r15, 0 # encoding: [0xa7,0xfd,0x00,0x00]
-
- mghi %r0, -32768
- mghi %r0, -1
- mghi %r0, 0
- mghi %r0, 1
- mghi %r0, 32767
- mghi %r15, 0
diff --git a/test/MC/SystemZ/insn-mghi-02.s b/test/MC/SystemZ/insn-mghi-02.s
deleted file mode 100644
index 860fa3b787..0000000000
--- a/test/MC/SystemZ/insn-mghi-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mghi %r0, -32769
-#CHECK: error: invalid operand
-#CHECK: mghi %r0, 32768
-#CHECK: error: invalid operand
-#CHECK: mghi %r0, foo
-
- mghi %r0, -32769
- mghi %r0, 32768
- mghi %r0, foo
diff --git a/test/MC/SystemZ/insn-mh-01.s b/test/MC/SystemZ/insn-mh-01.s
deleted file mode 100644
index 59d5515438..0000000000
--- a/test/MC/SystemZ/insn-mh-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mh %r0, 0 # encoding: [0x4c,0x00,0x00,0x00]
-#CHECK: mh %r0, 4095 # encoding: [0x4c,0x00,0x0f,0xff]
-#CHECK: mh %r0, 0(%r1) # encoding: [0x4c,0x00,0x10,0x00]
-#CHECK: mh %r0, 0(%r15) # encoding: [0x4c,0x00,0xf0,0x00]
-#CHECK: mh %r0, 4095(%r1,%r15) # encoding: [0x4c,0x01,0xff,0xff]
-#CHECK: mh %r0, 4095(%r15,%r1) # encoding: [0x4c,0x0f,0x1f,0xff]
-#CHECK: mh %r15, 0 # encoding: [0x4c,0xf0,0x00,0x00]
-
- mh %r0, 0
- mh %r0, 4095
- mh %r0, 0(%r1)
- mh %r0, 0(%r15)
- mh %r0, 4095(%r1,%r15)
- mh %r0, 4095(%r15,%r1)
- mh %r15, 0
diff --git a/test/MC/SystemZ/insn-mh-02.s b/test/MC/SystemZ/insn-mh-02.s
deleted file mode 100644
index 4ea35fca59..0000000000
--- a/test/MC/SystemZ/insn-mh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: mh %r0, 4096
-
- mh %r0, -1
- mh %r0, 4096
diff --git a/test/MC/SystemZ/insn-mhi-01.s b/test/MC/SystemZ/insn-mhi-01.s
deleted file mode 100644
index adf42ae734..0000000000
--- a/test/MC/SystemZ/insn-mhi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mhi %r0, -32768 # encoding: [0xa7,0x0c,0x80,0x00]
-#CHECK: mhi %r0, -1 # encoding: [0xa7,0x0c,0xff,0xff]
-#CHECK: mhi %r0, 0 # encoding: [0xa7,0x0c,0x00,0x00]
-#CHECK: mhi %r0, 1 # encoding: [0xa7,0x0c,0x00,0x01]
-#CHECK: mhi %r0, 32767 # encoding: [0xa7,0x0c,0x7f,0xff]
-#CHECK: mhi %r15, 0 # encoding: [0xa7,0xfc,0x00,0x00]
-
- mhi %r0, -32768
- mhi %r0, -1
- mhi %r0, 0
- mhi %r0, 1
- mhi %r0, 32767
- mhi %r15, 0
diff --git a/test/MC/SystemZ/insn-mhi-02.s b/test/MC/SystemZ/insn-mhi-02.s
deleted file mode 100644
index 74e83576e9..0000000000
--- a/test/MC/SystemZ/insn-mhi-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mhi %r0, -32769
-#CHECK: error: invalid operand
-#CHECK: mhi %r0, 32768
-#CHECK: error: invalid operand
-#CHECK: mhi %r0, foo
-
- mhi %r0, -32769
- mhi %r0, 32768
- mhi %r0, foo
diff --git a/test/MC/SystemZ/insn-mhy-01.s b/test/MC/SystemZ/insn-mhy-01.s
deleted file mode 100644
index 89c394bd81..0000000000
--- a/test/MC/SystemZ/insn-mhy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mhy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x7c]
-#CHECK: mhy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x7c]
-#CHECK: mhy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x7c]
-#CHECK: mhy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x7c]
-#CHECK: mhy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x7c]
-#CHECK: mhy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x7c]
-#CHECK: mhy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x7c]
-#CHECK: mhy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x7c]
-#CHECK: mhy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x7c]
-#CHECK: mhy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x7c]
-
- mhy %r0, -524288
- mhy %r0, -1
- mhy %r0, 0
- mhy %r0, 1
- mhy %r0, 524287
- mhy %r0, 0(%r1)
- mhy %r0, 0(%r15)
- mhy %r0, 524287(%r1,%r15)
- mhy %r0, 524287(%r15,%r1)
- mhy %r15, 0
diff --git a/test/MC/SystemZ/insn-mhy-02.s b/test/MC/SystemZ/insn-mhy-02.s
deleted file mode 100644
index bce62f096c..0000000000
--- a/test/MC/SystemZ/insn-mhy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mhy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: mhy %r0, 524288
-
- mhy %r0, -524289
- mhy %r0, 524288
diff --git a/test/MC/SystemZ/insn-mlg-01.s b/test/MC/SystemZ/insn-mlg-01.s
deleted file mode 100644
index e9bd6510fc..0000000000
--- a/test/MC/SystemZ/insn-mlg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mlg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x86]
-#CHECK: mlg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x86]
-#CHECK: mlg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x86]
-#CHECK: mlg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x86]
-#CHECK: mlg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x86]
-#CHECK: mlg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x86]
-#CHECK: mlg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x86]
-#CHECK: mlg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x86]
-#CHECK: mlg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x86]
-#CHECK: mlg %r14, 0 # encoding: [0xe3,0xe0,0x00,0x00,0x00,0x86]
-
- mlg %r0, -524288
- mlg %r0, -1
- mlg %r0, 0
- mlg %r0, 1
- mlg %r0, 524287
- mlg %r0, 0(%r1)
- mlg %r0, 0(%r15)
- mlg %r0, 524287(%r1,%r15)
- mlg %r0, 524287(%r15,%r1)
- mlg %r14, 0
diff --git a/test/MC/SystemZ/insn-mlg-02.s b/test/MC/SystemZ/insn-mlg-02.s
deleted file mode 100644
index 7174bc50c2..0000000000
--- a/test/MC/SystemZ/insn-mlg-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mlg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: mlg %r0, 524288
-#CHECK: error: invalid register
-#CHECK: mlg %r1, 0
-#CHECK: error: invalid register
-#CHECK: mlg %r15, 0
-
- mlg %r0, -524289
- mlg %r0, 524288
- mlg %r1, 0
- mlg %r15, 0
diff --git a/test/MC/SystemZ/insn-mlgr-01.s b/test/MC/SystemZ/insn-mlgr-01.s
deleted file mode 100644
index 215bde0991..0000000000
--- a/test/MC/SystemZ/insn-mlgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mlgr %r0, %r0 # encoding: [0xb9,0x86,0x00,0x00]
-#CHECK: mlgr %r0, %r15 # encoding: [0xb9,0x86,0x00,0x0f]
-#CHECK: mlgr %r14, %r0 # encoding: [0xb9,0x86,0x00,0xe0]
-#CHECK: mlgr %r6, %r9 # encoding: [0xb9,0x86,0x00,0x69]
-
- mlgr %r0,%r0
- mlgr %r0,%r15
- mlgr %r14,%r0
- mlgr %r6,%r9
diff --git a/test/MC/SystemZ/insn-mlgr-02.s b/test/MC/SystemZ/insn-mlgr-02.s
deleted file mode 100644
index 30f4259031..0000000000
--- a/test/MC/SystemZ/insn-mlgr-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: mlgr %r1, %r0
-#CHECK: error: invalid register
-#CHECK: mlgr %r15, %r0
-
- mlgr %r1, %r0
- mlgr %r15, %r0
diff --git a/test/MC/SystemZ/insn-ms-01.s b/test/MC/SystemZ/insn-ms-01.s
deleted file mode 100644
index e104e09a1b..0000000000
--- a/test/MC/SystemZ/insn-ms-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ms %r0, 0 # encoding: [0x71,0x00,0x00,0x00]
-#CHECK: ms %r0, 4095 # encoding: [0x71,0x00,0x0f,0xff]
-#CHECK: ms %r0, 0(%r1) # encoding: [0x71,0x00,0x10,0x00]
-#CHECK: ms %r0, 0(%r15) # encoding: [0x71,0x00,0xf0,0x00]
-#CHECK: ms %r0, 4095(%r1,%r15) # encoding: [0x71,0x01,0xff,0xff]
-#CHECK: ms %r0, 4095(%r15,%r1) # encoding: [0x71,0x0f,0x1f,0xff]
-#CHECK: ms %r15, 0 # encoding: [0x71,0xf0,0x00,0x00]
-
- ms %r0, 0
- ms %r0, 4095
- ms %r0, 0(%r1)
- ms %r0, 0(%r15)
- ms %r0, 4095(%r1,%r15)
- ms %r0, 4095(%r15,%r1)
- ms %r15, 0
diff --git a/test/MC/SystemZ/insn-ms-02.s b/test/MC/SystemZ/insn-ms-02.s
deleted file mode 100644
index 9cc7ecda34..0000000000
--- a/test/MC/SystemZ/insn-ms-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ms %r0, -1
-#CHECK: error: invalid operand
-#CHECK: ms %r0, 4096
-
- ms %r0, -1
- ms %r0, 4096
diff --git a/test/MC/SystemZ/insn-msdb-01.s b/test/MC/SystemZ/insn-msdb-01.s
deleted file mode 100644
index 50ef45bfc4..0000000000
--- a/test/MC/SystemZ/insn-msdb-01.s
+++ /dev/null
@@ -1,21 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msdb %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1f]
-#CHECK: msdb %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1f]
-#CHECK: msdb %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1f]
-#CHECK: msdb %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1f]
-#CHECK: msdb %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1f]
-#CHECK: msdb %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1f]
-#CHECK: msdb %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1f]
-#CHECK: msdb %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x1f]
-#CHECK: msdb %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x1f]
-
- msdb %f0, %f0, 0
- msdb %f0, %f0, 4095
- msdb %f0, %f0, 0(%r1)
- msdb %f0, %f0, 0(%r15)
- msdb %f0, %f0, 4095(%r1,%r15)
- msdb %f0, %f0, 4095(%r15,%r1)
- msdb %f0, %f15, 0
- msdb %f15, %f0, 0
- msdb %f15, %f15, 0
diff --git a/test/MC/SystemZ/insn-msdb-02.s b/test/MC/SystemZ/insn-msdb-02.s
deleted file mode 100644
index 552fc72223..0000000000
--- a/test/MC/SystemZ/insn-msdb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: msdb %f0, %f0, -1
-#CHECK: error: invalid operand
-#CHECK: msdb %f0, %f0, 4096
-
- msdb %f0, %f0, -1
- msdb %f0, %f0, 4096
diff --git a/test/MC/SystemZ/insn-msdbr-01.s b/test/MC/SystemZ/insn-msdbr-01.s
deleted file mode 100644
index 0c816578a2..0000000000
--- a/test/MC/SystemZ/insn-msdbr-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msdbr %f0, %f0, %f0 # encoding: [0xb3,0x1f,0x00,0x00]
-#CHECK: msdbr %f0, %f0, %f15 # encoding: [0xb3,0x1f,0x00,0x0f]
-#CHECK: msdbr %f0, %f15, %f0 # encoding: [0xb3,0x1f,0x00,0xf0]
-#CHECK: msdbr %f15, %f0, %f0 # encoding: [0xb3,0x1f,0xf0,0x00]
-#CHECK: msdbr %f7, %f8, %f9 # encoding: [0xb3,0x1f,0x70,0x89]
-#CHECK: msdbr %f15, %f15, %f15 # encoding: [0xb3,0x1f,0xf0,0xff]
-
- msdbr %f0, %f0, %f0
- msdbr %f0, %f0, %f15
- msdbr %f0, %f15, %f0
- msdbr %f15, %f0, %f0
- msdbr %f7, %f8, %f9
- msdbr %f15, %f15, %f15
diff --git a/test/MC/SystemZ/insn-mseb-01.s b/test/MC/SystemZ/insn-mseb-01.s
deleted file mode 100644
index 4464cfb803..0000000000
--- a/test/MC/SystemZ/insn-mseb-01.s
+++ /dev/null
@@ -1,21 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mseb %f0, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0f]
-#CHECK: mseb %f0, %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0f]
-#CHECK: mseb %f0, %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0f]
-#CHECK: mseb %f0, %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0f]
-#CHECK: mseb %f0, %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0f]
-#CHECK: mseb %f0, %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0f]
-#CHECK: mseb %f0, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0f]
-#CHECK: mseb %f15, %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0xf0,0x0f]
-#CHECK: mseb %f15, %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0xf0,0x0f]
-
- mseb %f0, %f0, 0
- mseb %f0, %f0, 4095
- mseb %f0, %f0, 0(%r1)
- mseb %f0, %f0, 0(%r15)
- mseb %f0, %f0, 4095(%r1,%r15)
- mseb %f0, %f0, 4095(%r15,%r1)
- mseb %f0, %f15, 0
- mseb %f15, %f0, 0
- mseb %f15, %f15, 0
diff --git a/test/MC/SystemZ/insn-mseb-02.s b/test/MC/SystemZ/insn-mseb-02.s
deleted file mode 100644
index 03aaa0fb8a..0000000000
--- a/test/MC/SystemZ/insn-mseb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mseb %f0, %f0, -1
-#CHECK: error: invalid operand
-#CHECK: mseb %f0, %f0, 4096
-
- mseb %f0, %f0, -1
- mseb %f0, %f0, 4096
diff --git a/test/MC/SystemZ/insn-msebr-01.s b/test/MC/SystemZ/insn-msebr-01.s
deleted file mode 100644
index f936cb6325..0000000000
--- a/test/MC/SystemZ/insn-msebr-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msebr %f0, %f0, %f0 # encoding: [0xb3,0x0f,0x00,0x00]
-#CHECK: msebr %f0, %f0, %f15 # encoding: [0xb3,0x0f,0x00,0x0f]
-#CHECK: msebr %f0, %f15, %f0 # encoding: [0xb3,0x0f,0x00,0xf0]
-#CHECK: msebr %f15, %f0, %f0 # encoding: [0xb3,0x0f,0xf0,0x00]
-#CHECK: msebr %f7, %f8, %f9 # encoding: [0xb3,0x0f,0x70,0x89]
-#CHECK: msebr %f15, %f15, %f15 # encoding: [0xb3,0x0f,0xf0,0xff]
-
- msebr %f0, %f0, %f0
- msebr %f0, %f0, %f15
- msebr %f0, %f15, %f0
- msebr %f15, %f0, %f0
- msebr %f7, %f8, %f9
- msebr %f15, %f15, %f15
diff --git a/test/MC/SystemZ/insn-msfi-01.s b/test/MC/SystemZ/insn-msfi-01.s
deleted file mode 100644
index 629260e420..0000000000
--- a/test/MC/SystemZ/insn-msfi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msfi %r0, -2147483648 # encoding: [0xc2,0x01,0x80,0x00,0x00,0x00]
-#CHECK: msfi %r0, -1 # encoding: [0xc2,0x01,0xff,0xff,0xff,0xff]
-#CHECK: msfi %r0, 0 # encoding: [0xc2,0x01,0x00,0x00,0x00,0x00]
-#CHECK: msfi %r0, 1 # encoding: [0xc2,0x01,0x00,0x00,0x00,0x01]
-#CHECK: msfi %r0, 2147483647 # encoding: [0xc2,0x01,0x7f,0xff,0xff,0xff]
-#CHECK: msfi %r15, 0 # encoding: [0xc2,0xf1,0x00,0x00,0x00,0x00]
-
- msfi %r0, -1 << 31
- msfi %r0, -1
- msfi %r0, 0
- msfi %r0, 1
- msfi %r0, (1 << 31) - 1
- msfi %r15, 0
diff --git a/test/MC/SystemZ/insn-msfi-02.s b/test/MC/SystemZ/insn-msfi-02.s
deleted file mode 100644
index 2700ce78b8..0000000000
--- a/test/MC/SystemZ/insn-msfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: msfi %r0, (-1 << 31) - 1
-#CHECK: error: invalid operand
-#CHECK: msfi %r0, (1 << 31)
-
- msfi %r0, (-1 << 31) - 1
- msfi %r0, (1 << 31)
diff --git a/test/MC/SystemZ/insn-msg-01.s b/test/MC/SystemZ/insn-msg-01.s
deleted file mode 100644
index 298811c1e9..0000000000
--- a/test/MC/SystemZ/insn-msg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0c]
-#CHECK: msg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0c]
-#CHECK: msg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0c]
-#CHECK: msg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0c]
-#CHECK: msg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0c]
-#CHECK: msg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0c]
-#CHECK: msg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0c]
-#CHECK: msg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0c]
-#CHECK: msg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0c]
-#CHECK: msg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x0c]
-
- msg %r0, -524288
- msg %r0, -1
- msg %r0, 0
- msg %r0, 1
- msg %r0, 524287
- msg %r0, 0(%r1)
- msg %r0, 0(%r15)
- msg %r0, 524287(%r1,%r15)
- msg %r0, 524287(%r15,%r1)
- msg %r15, 0
diff --git a/test/MC/SystemZ/insn-msg-02.s b/test/MC/SystemZ/insn-msg-02.s
deleted file mode 100644
index 3326f40e56..0000000000
--- a/test/MC/SystemZ/insn-msg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: msg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: msg %r0, 524288
-
- msg %r0, -524289
- msg %r0, 524288
diff --git a/test/MC/SystemZ/insn-msgf-01.s b/test/MC/SystemZ/insn-msgf-01.s
deleted file mode 100644
index 9812bcc9cb..0000000000
--- a/test/MC/SystemZ/insn-msgf-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1c]
-#CHECK: msgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1c]
-#CHECK: msgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1c]
-#CHECK: msgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1c]
-#CHECK: msgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1c]
-#CHECK: msgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1c]
-#CHECK: msgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1c]
-#CHECK: msgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1c]
-#CHECK: msgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1c]
-#CHECK: msgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1c]
-
- msgf %r0, -524288
- msgf %r0, -1
- msgf %r0, 0
- msgf %r0, 1
- msgf %r0, 524287
- msgf %r0, 0(%r1)
- msgf %r0, 0(%r15)
- msgf %r0, 524287(%r1,%r15)
- msgf %r0, 524287(%r15,%r1)
- msgf %r15, 0
diff --git a/test/MC/SystemZ/insn-msgf-02.s b/test/MC/SystemZ/insn-msgf-02.s
deleted file mode 100644
index 03983b305f..0000000000
--- a/test/MC/SystemZ/insn-msgf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: msgf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: msgf %r0, 524288
-
- msgf %r0, -524289
- msgf %r0, 524288
diff --git a/test/MC/SystemZ/insn-msgfi-01.s b/test/MC/SystemZ/insn-msgfi-01.s
deleted file mode 100644
index 802ad143a5..0000000000
--- a/test/MC/SystemZ/insn-msgfi-01.s
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msgfi %r0, -2147483648 # encoding: [0xc2,0x00,0x80,0x00,0x00,0x00]
-#CHECK: msgfi %r0, -1 # encoding: [0xc2,0x00,0xff,0xff,0xff,0xff]
-#CHECK: msgfi %r0, 0 # encoding: [0xc2,0x00,0x00,0x00,0x00,0x00]
-#CHECK: msgfi %r0, 1 # encoding: [0xc2,0x00,0x00,0x00,0x00,0x01]
-#CHECK: msgfi %r0, 2147483647 # encoding: [0xc2,0x00,0x7f,0xff,0xff,0xff]
-#CHECK: msgfi %r15, 0 # encoding: [0xc2,0xf0,0x00,0x00,0x00,0x00]
-
- msgfi %r0, -1 << 31
- msgfi %r0, -1
- msgfi %r0, 0
- msgfi %r0, 1
- msgfi %r0, (1 << 31) - 1
- msgfi %r15, 0
diff --git a/test/MC/SystemZ/insn-msgfi-02.s b/test/MC/SystemZ/insn-msgfi-02.s
deleted file mode 100644
index 82e1f8f9b4..0000000000
--- a/test/MC/SystemZ/insn-msgfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: msgfi %r0, (-1 << 31) - 1
-#CHECK: error: invalid operand
-#CHECK: msgfi %r0, (1 << 31)
-
- msgfi %r0, (-1 << 31) - 1
- msgfi %r0, (1 << 31)
diff --git a/test/MC/SystemZ/insn-msgfr-01.s b/test/MC/SystemZ/insn-msgfr-01.s
deleted file mode 100644
index e25f6302ac..0000000000
--- a/test/MC/SystemZ/insn-msgfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msgfr %r0, %r0 # encoding: [0xb9,0x1c,0x00,0x00]
-#CHECK: msgfr %r0, %r15 # encoding: [0xb9,0x1c,0x00,0x0f]
-#CHECK: msgfr %r15, %r0 # encoding: [0xb9,0x1c,0x00,0xf0]
-#CHECK: msgfr %r7, %r8 # encoding: [0xb9,0x1c,0x00,0x78]
-
- msgfr %r0,%r0
- msgfr %r0,%r15
- msgfr %r15,%r0
- msgfr %r7,%r8
diff --git a/test/MC/SystemZ/insn-msgr-01.s b/test/MC/SystemZ/insn-msgr-01.s
deleted file mode 100644
index 0b9cd360c8..0000000000
--- a/test/MC/SystemZ/insn-msgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msgr %r0, %r0 # encoding: [0xb9,0x0c,0x00,0x00]
-#CHECK: msgr %r0, %r15 # encoding: [0xb9,0x0c,0x00,0x0f]
-#CHECK: msgr %r15, %r0 # encoding: [0xb9,0x0c,0x00,0xf0]
-#CHECK: msgr %r7, %r8 # encoding: [0xb9,0x0c,0x00,0x78]
-
- msgr %r0,%r0
- msgr %r0,%r15
- msgr %r15,%r0
- msgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-msr-01.s b/test/MC/SystemZ/insn-msr-01.s
deleted file mode 100644
index 6f7d917a16..0000000000
--- a/test/MC/SystemZ/insn-msr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msr %r0, %r0 # encoding: [0xb2,0x52,0x00,0x00]
-#CHECK: msr %r0, %r15 # encoding: [0xb2,0x52,0x00,0x0f]
-#CHECK: msr %r15, %r0 # encoding: [0xb2,0x52,0x00,0xf0]
-#CHECK: msr %r7, %r8 # encoding: [0xb2,0x52,0x00,0x78]
-
- msr %r0,%r0
- msr %r0,%r15
- msr %r15,%r0
- msr %r7,%r8
diff --git a/test/MC/SystemZ/insn-msy-01.s b/test/MC/SystemZ/insn-msy-01.s
deleted file mode 100644
index aed9318a8a..0000000000
--- a/test/MC/SystemZ/insn-msy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: msy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x51]
-#CHECK: msy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x51]
-#CHECK: msy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x51]
-#CHECK: msy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x51]
-#CHECK: msy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x51]
-#CHECK: msy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x51]
-#CHECK: msy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x51]
-#CHECK: msy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x51]
-#CHECK: msy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x51]
-#CHECK: msy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x51]
-
- msy %r0, -524288
- msy %r0, -1
- msy %r0, 0
- msy %r0, 1
- msy %r0, 524287
- msy %r0, 0(%r1)
- msy %r0, 0(%r15)
- msy %r0, 524287(%r1,%r15)
- msy %r0, 524287(%r15,%r1)
- msy %r15, 0
diff --git a/test/MC/SystemZ/insn-msy-02.s b/test/MC/SystemZ/insn-msy-02.s
deleted file mode 100644
index 6f10069ae7..0000000000
--- a/test/MC/SystemZ/insn-msy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: msy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: msy %r0, 524288
-
- msy %r0, -524289
- msy %r0, 524288
diff --git a/test/MC/SystemZ/insn-mvghi-01.s b/test/MC/SystemZ/insn-mvghi-01.s
deleted file mode 100644
index 191aa49cd8..0000000000
--- a/test/MC/SystemZ/insn-mvghi-01.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mvghi 0, 0 # encoding: [0xe5,0x48,0x00,0x00,0x00,0x00]
-#CHECK: mvghi 4095, 0 # encoding: [0xe5,0x48,0x0f,0xff,0x00,0x00]
-#CHECK: mvghi 0, -32768 # encoding: [0xe5,0x48,0x00,0x00,0x80,0x00]
-#CHECK: mvghi 0, -1 # encoding: [0xe5,0x48,0x00,0x00,0xff,0xff]
-#CHECK: mvghi 0, 0 # encoding: [0xe5,0x48,0x00,0x00,0x00,0x00]
-#CHECK: mvghi 0, 1 # encoding: [0xe5,0x48,0x00,0x00,0x00,0x01]
-#CHECK: mvghi 0, 32767 # encoding: [0xe5,0x48,0x00,0x00,0x7f,0xff]
-#CHECK: mvghi 0(%r1), 42 # encoding: [0xe5,0x48,0x10,0x00,0x00,0x2a]
-#CHECK: mvghi 0(%r15), 42 # encoding: [0xe5,0x48,0xf0,0x00,0x00,0x2a]
-#CHECK: mvghi 4095(%r1), 42 # encoding: [0xe5,0x48,0x1f,0xff,0x00,0x2a]
-#CHECK: mvghi 4095(%r15), 42 # encoding: [0xe5,0x48,0xff,0xff,0x00,0x2a]
-
- mvghi 0, 0
- mvghi 4095, 0
- mvghi 0, -32768
- mvghi 0, -1
- mvghi 0, 0
- mvghi 0, 1
- mvghi 0, 32767
- mvghi 0(%r1), 42
- mvghi 0(%r15), 42
- mvghi 4095(%r1), 42
- mvghi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-mvghi-02.s b/test/MC/SystemZ/insn-mvghi-02.s
deleted file mode 100644
index 38b38a517a..0000000000
--- a/test/MC/SystemZ/insn-mvghi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mvghi -1, 0
-#CHECK: error: invalid operand
-#CHECK: mvghi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: mvghi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: mvghi 0, -32769
-#CHECK: error: invalid operand
-#CHECK: mvghi 0, 32768
-
- mvghi -1, 0
- mvghi 4096, 0
- mvghi 0(%r1,%r2), 0
- mvghi 0, -32769
- mvghi 0, 32768
diff --git a/test/MC/SystemZ/insn-mvhhi-01.s b/test/MC/SystemZ/insn-mvhhi-01.s
deleted file mode 100644
index 63574a487f..0000000000
--- a/test/MC/SystemZ/insn-mvhhi-01.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mvhhi 0, 0 # encoding: [0xe5,0x44,0x00,0x00,0x00,0x00]
-#CHECK: mvhhi 4095, 0 # encoding: [0xe5,0x44,0x0f,0xff,0x00,0x00]
-#CHECK: mvhhi 0, -32768 # encoding: [0xe5,0x44,0x00,0x00,0x80,0x00]
-#CHECK: mvhhi 0, -1 # encoding: [0xe5,0x44,0x00,0x00,0xff,0xff]
-#CHECK: mvhhi 0, 0 # encoding: [0xe5,0x44,0x00,0x00,0x00,0x00]
-#CHECK: mvhhi 0, 1 # encoding: [0xe5,0x44,0x00,0x00,0x00,0x01]
-#CHECK: mvhhi 0, 32767 # encoding: [0xe5,0x44,0x00,0x00,0x7f,0xff]
-#CHECK: mvhhi 0(%r1), 42 # encoding: [0xe5,0x44,0x10,0x00,0x00,0x2a]
-#CHECK: mvhhi 0(%r15), 42 # encoding: [0xe5,0x44,0xf0,0x00,0x00,0x2a]
-#CHECK: mvhhi 4095(%r1), 42 # encoding: [0xe5,0x44,0x1f,0xff,0x00,0x2a]
-#CHECK: mvhhi 4095(%r15), 42 # encoding: [0xe5,0x44,0xff,0xff,0x00,0x2a]
-
- mvhhi 0, 0
- mvhhi 4095, 0
- mvhhi 0, -32768
- mvhhi 0, -1
- mvhhi 0, 0
- mvhhi 0, 1
- mvhhi 0, 32767
- mvhhi 0(%r1), 42
- mvhhi 0(%r15), 42
- mvhhi 4095(%r1), 42
- mvhhi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-mvhhi-02.s b/test/MC/SystemZ/insn-mvhhi-02.s
deleted file mode 100644
index 58abb025eb..0000000000
--- a/test/MC/SystemZ/insn-mvhhi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mvhhi -1, 0
-#CHECK: error: invalid operand
-#CHECK: mvhhi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: mvhhi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: mvhhi 0, -32769
-#CHECK: error: invalid operand
-#CHECK: mvhhi 0, 32768
-
- mvhhi -1, 0
- mvhhi 4096, 0
- mvhhi 0(%r1,%r2), 0
- mvhhi 0, -32769
- mvhhi 0, 32768
diff --git a/test/MC/SystemZ/insn-mvhi-01.s b/test/MC/SystemZ/insn-mvhi-01.s
deleted file mode 100644
index 5bf9fd3121..0000000000
--- a/test/MC/SystemZ/insn-mvhi-01.s
+++ /dev/null
@@ -1,25 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mvhi 0, 0 # encoding: [0xe5,0x4c,0x00,0x00,0x00,0x00]
-#CHECK: mvhi 4095, 0 # encoding: [0xe5,0x4c,0x0f,0xff,0x00,0x00]
-#CHECK: mvhi 0, -32768 # encoding: [0xe5,0x4c,0x00,0x00,0x80,0x00]
-#CHECK: mvhi 0, -1 # encoding: [0xe5,0x4c,0x00,0x00,0xff,0xff]
-#CHECK: mvhi 0, 0 # encoding: [0xe5,0x4c,0x00,0x00,0x00,0x00]
-#CHECK: mvhi 0, 1 # encoding: [0xe5,0x4c,0x00,0x00,0x00,0x01]
-#CHECK: mvhi 0, 32767 # encoding: [0xe5,0x4c,0x00,0x00,0x7f,0xff]
-#CHECK: mvhi 0(%r1), 42 # encoding: [0xe5,0x4c,0x10,0x00,0x00,0x2a]
-#CHECK: mvhi 0(%r15), 42 # encoding: [0xe5,0x4c,0xf0,0x00,0x00,0x2a]
-#CHECK: mvhi 4095(%r1), 42 # encoding: [0xe5,0x4c,0x1f,0xff,0x00,0x2a]
-#CHECK: mvhi 4095(%r15), 42 # encoding: [0xe5,0x4c,0xff,0xff,0x00,0x2a]
-
- mvhi 0, 0
- mvhi 4095, 0
- mvhi 0, -32768
- mvhi 0, -1
- mvhi 0, 0
- mvhi 0, 1
- mvhi 0, 32767
- mvhi 0(%r1), 42
- mvhi 0(%r15), 42
- mvhi 4095(%r1), 42
- mvhi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-mvhi-02.s b/test/MC/SystemZ/insn-mvhi-02.s
deleted file mode 100644
index 517301c513..0000000000
--- a/test/MC/SystemZ/insn-mvhi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mvhi -1, 0
-#CHECK: error: invalid operand
-#CHECK: mvhi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: mvhi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: mvhi 0, -32769
-#CHECK: error: invalid operand
-#CHECK: mvhi 0, 32768
-
- mvhi -1, 0
- mvhi 4096, 0
- mvhi 0(%r1,%r2), 0
- mvhi 0, -32769
- mvhi 0, 32768
diff --git a/test/MC/SystemZ/insn-mvi-01.s b/test/MC/SystemZ/insn-mvi-01.s
deleted file mode 100644
index 83e30900ac..0000000000
--- a/test/MC/SystemZ/insn-mvi-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mvi 0, 0 # encoding: [0x92,0x00,0x00,0x00]
-#CHECK: mvi 4095, 0 # encoding: [0x92,0x00,0x0f,0xff]
-#CHECK: mvi 0, 255 # encoding: [0x92,0xff,0x00,0x00]
-#CHECK: mvi 0(%r1), 42 # encoding: [0x92,0x2a,0x10,0x00]
-#CHECK: mvi 0(%r15), 42 # encoding: [0x92,0x2a,0xf0,0x00]
-#CHECK: mvi 4095(%r1), 42 # encoding: [0x92,0x2a,0x1f,0xff]
-#CHECK: mvi 4095(%r15), 42 # encoding: [0x92,0x2a,0xff,0xff]
-
- mvi 0, 0
- mvi 4095, 0
- mvi 0, 255
- mvi 0(%r1), 42
- mvi 0(%r15), 42
- mvi 4095(%r1), 42
- mvi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-mvi-02.s b/test/MC/SystemZ/insn-mvi-02.s
deleted file mode 100644
index ddd5909d45..0000000000
--- a/test/MC/SystemZ/insn-mvi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mvi -1, 0
-#CHECK: error: invalid operand
-#CHECK: mvi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: mvi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: mvi 0, -1
-#CHECK: error: invalid operand
-#CHECK: mvi 0, 256
-
- mvi -1, 0
- mvi 4096, 0
- mvi 0(%r1,%r2), 0
- mvi 0, -1
- mvi 0, 256
diff --git a/test/MC/SystemZ/insn-mviy-01.s b/test/MC/SystemZ/insn-mviy-01.s
deleted file mode 100644
index 8bd6979b81..0000000000
--- a/test/MC/SystemZ/insn-mviy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mviy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x52]
-#CHECK: mviy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x52]
-#CHECK: mviy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x52]
-#CHECK: mviy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x52]
-#CHECK: mviy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x52]
-#CHECK: mviy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x52]
-#CHECK: mviy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x52]
-#CHECK: mviy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x52]
-#CHECK: mviy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x52]
-#CHECK: mviy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x52]
-
- mviy -524288, 0
- mviy -1, 0
- mviy 0, 0
- mviy 1, 0
- mviy 524287, 0
- mviy 0, 255
- mviy 0(%r1), 42
- mviy 0(%r15), 42
- mviy 524287(%r1), 42
- mviy 524287(%r15), 42
diff --git a/test/MC/SystemZ/insn-mviy-02.s b/test/MC/SystemZ/insn-mviy-02.s
deleted file mode 100644
index ab78dab5c9..0000000000
--- a/test/MC/SystemZ/insn-mviy-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: mviy -524289, 0
-#CHECK: error: invalid operand
-#CHECK: mviy 524288, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: mviy 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: mviy 0, -1
-#CHECK: error: invalid operand
-#CHECK: mviy 0, 256
-
- mviy -524289, 0
- mviy 524288, 0
- mviy 0(%r1,%r2), 0
- mviy 0, -1
- mviy 0, 256
diff --git a/test/MC/SystemZ/insn-mxbr-01.s b/test/MC/SystemZ/insn-mxbr-01.s
deleted file mode 100644
index 60c8ebadfb..0000000000
--- a/test/MC/SystemZ/insn-mxbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mxbr %f0, %f0 # encoding: [0xb3,0x4c,0x00,0x00]
-#CHECK: mxbr %f0, %f13 # encoding: [0xb3,0x4c,0x00,0x0d]
-#CHECK: mxbr %f8, %f5 # encoding: [0xb3,0x4c,0x00,0x85]
-#CHECK: mxbr %f13, %f13 # encoding: [0xb3,0x4c,0x00,0xdd]
-
- mxbr %f0, %f0
- mxbr %f0, %f13
- mxbr %f8, %f5
- mxbr %f13, %f13
diff --git a/test/MC/SystemZ/insn-mxbr-02.s b/test/MC/SystemZ/insn-mxbr-02.s
deleted file mode 100644
index 9282023413..0000000000
--- a/test/MC/SystemZ/insn-mxbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: mxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: mxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: mxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: mxbr %f14, %f0
-
- mxbr %f0, %f2
- mxbr %f0, %f14
- mxbr %f2, %f0
- mxbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-mxdb-01.s b/test/MC/SystemZ/insn-mxdb-01.s
deleted file mode 100644
index 46a723e842..0000000000
--- a/test/MC/SystemZ/insn-mxdb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mxdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x07]
-#CHECK: mxdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x07]
-#CHECK: mxdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x07]
-#CHECK: mxdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x07]
-#CHECK: mxdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x07]
-#CHECK: mxdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x07]
-#CHECK: mxdb %f13, 0 # encoding: [0xed,0xd0,0x00,0x00,0x00,0x07]
-
- mxdb %f0, 0
- mxdb %f0, 4095
- mxdb %f0, 0(%r1)
- mxdb %f0, 0(%r15)
- mxdb %f0, 4095(%r1,%r15)
- mxdb %f0, 4095(%r15,%r1)
- mxdb %f13, 0
diff --git a/test/MC/SystemZ/insn-mxdb-02.s b/test/MC/SystemZ/insn-mxdb-02.s
deleted file mode 100644
index 44c821cad0..0000000000
--- a/test/MC/SystemZ/insn-mxdb-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: mxdb %f2, 0
-#CHECK: error: invalid register
-#CHECK: mxdb %f15, 0
-#CHECK: error: invalid operand
-#CHECK: mxdb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: mxdb %f0, 4096
-
- mxdb %f2, 0
- mxdb %f15, 0
- mxdb %f0, -1
- mxdb %f0, 4096
diff --git a/test/MC/SystemZ/insn-mxdbr-01.s b/test/MC/SystemZ/insn-mxdbr-01.s
deleted file mode 100644
index dfb898fbda..0000000000
--- a/test/MC/SystemZ/insn-mxdbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: mxdbr %f0, %f0 # encoding: [0xb3,0x07,0x00,0x00]
-#CHECK: mxdbr %f0, %f15 # encoding: [0xb3,0x07,0x00,0x0f]
-#CHECK: mxdbr %f8, %f8 # encoding: [0xb3,0x07,0x00,0x88]
-#CHECK: mxdbr %f13, %f0 # encoding: [0xb3,0x07,0x00,0xd0]
-
- mxdbr %f0, %f0
- mxdbr %f0, %f15
- mxdbr %f8, %f8
- mxdbr %f13, %f0
diff --git a/test/MC/SystemZ/insn-mxdbr-02.s b/test/MC/SystemZ/insn-mxdbr-02.s
deleted file mode 100644
index 90260481f2..0000000000
--- a/test/MC/SystemZ/insn-mxdbr-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: mxdbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: mxdbr %f15, %f0
-
- mxdbr %f2, %f0
- mxdbr %f15, %f0
diff --git a/test/MC/SystemZ/insn-n-01.s b/test/MC/SystemZ/insn-n-01.s
deleted file mode 100644
index 75fa141e2c..0000000000
--- a/test/MC/SystemZ/insn-n-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: n %r0, 0 # encoding: [0x54,0x00,0x00,0x00]
-#CHECK: n %r0, 4095 # encoding: [0x54,0x00,0x0f,0xff]
-#CHECK: n %r0, 0(%r1) # encoding: [0x54,0x00,0x10,0x00]
-#CHECK: n %r0, 0(%r15) # encoding: [0x54,0x00,0xf0,0x00]
-#CHECK: n %r0, 4095(%r1,%r15) # encoding: [0x54,0x01,0xff,0xff]
-#CHECK: n %r0, 4095(%r15,%r1) # encoding: [0x54,0x0f,0x1f,0xff]
-#CHECK: n %r15, 0 # encoding: [0x54,0xf0,0x00,0x00]
-
- n %r0, 0
- n %r0, 4095
- n %r0, 0(%r1)
- n %r0, 0(%r15)
- n %r0, 4095(%r1,%r15)
- n %r0, 4095(%r15,%r1)
- n %r15, 0
diff --git a/test/MC/SystemZ/insn-n-02.s b/test/MC/SystemZ/insn-n-02.s
deleted file mode 100644
index 7c14b1fe1c..0000000000
--- a/test/MC/SystemZ/insn-n-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: n %r0, -1
-#CHECK: error: invalid operand
-#CHECK: n %r0, 4096
-
- n %r0, -1
- n %r0, 4096
diff --git a/test/MC/SystemZ/insn-ng-01.s b/test/MC/SystemZ/insn-ng-01.s
deleted file mode 100644
index bf71a2183f..0000000000
--- a/test/MC/SystemZ/insn-ng-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ng %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x80]
-#CHECK: ng %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x80]
-#CHECK: ng %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x80]
-#CHECK: ng %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x80]
-#CHECK: ng %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x80]
-#CHECK: ng %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x80]
-#CHECK: ng %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x80]
-#CHECK: ng %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x80]
-#CHECK: ng %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x80]
-#CHECK: ng %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x80]
-
- ng %r0, -524288
- ng %r0, -1
- ng %r0, 0
- ng %r0, 1
- ng %r0, 524287
- ng %r0, 0(%r1)
- ng %r0, 0(%r15)
- ng %r0, 524287(%r1,%r15)
- ng %r0, 524287(%r15,%r1)
- ng %r15, 0
diff --git a/test/MC/SystemZ/insn-ng-02.s b/test/MC/SystemZ/insn-ng-02.s
deleted file mode 100644
index a6f3260526..0000000000
--- a/test/MC/SystemZ/insn-ng-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ng %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: ng %r0, 524288
-
- ng %r0, -524289
- ng %r0, 524288
diff --git a/test/MC/SystemZ/insn-ngr-01.s b/test/MC/SystemZ/insn-ngr-01.s
deleted file mode 100644
index 714b9fa712..0000000000
--- a/test/MC/SystemZ/insn-ngr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ngr %r0, %r0 # encoding: [0xb9,0x80,0x00,0x00]
-#CHECK: ngr %r0, %r15 # encoding: [0xb9,0x80,0x00,0x0f]
-#CHECK: ngr %r15, %r0 # encoding: [0xb9,0x80,0x00,0xf0]
-#CHECK: ngr %r7, %r8 # encoding: [0xb9,0x80,0x00,0x78]
-
- ngr %r0,%r0
- ngr %r0,%r15
- ngr %r15,%r0
- ngr %r7,%r8
diff --git a/test/MC/SystemZ/insn-ni-01.s b/test/MC/SystemZ/insn-ni-01.s
deleted file mode 100644
index d075674fea..0000000000
--- a/test/MC/SystemZ/insn-ni-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ni 0, 0 # encoding: [0x94,0x00,0x00,0x00]
-#CHECK: ni 4095, 0 # encoding: [0x94,0x00,0x0f,0xff]
-#CHECK: ni 0, 255 # encoding: [0x94,0xff,0x00,0x00]
-#CHECK: ni 0(%r1), 42 # encoding: [0x94,0x2a,0x10,0x00]
-#CHECK: ni 0(%r15), 42 # encoding: [0x94,0x2a,0xf0,0x00]
-#CHECK: ni 4095(%r1), 42 # encoding: [0x94,0x2a,0x1f,0xff]
-#CHECK: ni 4095(%r15), 42 # encoding: [0x94,0x2a,0xff,0xff]
-
- ni 0, 0
- ni 4095, 0
- ni 0, 255
- ni 0(%r1), 42
- ni 0(%r15), 42
- ni 4095(%r1), 42
- ni 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-ni-02.s b/test/MC/SystemZ/insn-ni-02.s
deleted file mode 100644
index 1b9a6a748d..0000000000
--- a/test/MC/SystemZ/insn-ni-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ni -1, 0
-#CHECK: error: invalid operand
-#CHECK: ni 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: ni 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: ni 0, -1
-#CHECK: error: invalid operand
-#CHECK: ni 0, 256
-
- ni -1, 0
- ni 4096, 0
- ni 0(%r1,%r2), 0
- ni 0, -1
- ni 0, 256
diff --git a/test/MC/SystemZ/insn-nihf-01.s b/test/MC/SystemZ/insn-nihf-01.s
deleted file mode 100644
index dceb8d1297..0000000000
--- a/test/MC/SystemZ/insn-nihf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: nihf %r0, 0 # encoding: [0xc0,0x0a,0x00,0x00,0x00,0x00]
-#CHECK: nihf %r0, 4294967295 # encoding: [0xc0,0x0a,0xff,0xff,0xff,0xff]
-#CHECK: nihf %r15, 0 # encoding: [0xc0,0xfa,0x00,0x00,0x00,0x00]
-
- nihf %r0, 0
- nihf %r0, 0xffffffff
- nihf %r15, 0
diff --git a/test/MC/SystemZ/insn-nihf-02.s b/test/MC/SystemZ/insn-nihf-02.s
deleted file mode 100644
index 5f7f10a6b3..0000000000
--- a/test/MC/SystemZ/insn-nihf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: nihf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: nihf %r0, 1 << 32
-
- nihf %r0, -1
- nihf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-nihh-01.s b/test/MC/SystemZ/insn-nihh-01.s
deleted file mode 100644
index a87540d04c..0000000000
--- a/test/MC/SystemZ/insn-nihh-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: nihh %r0, 0 # encoding: [0xa5,0x04,0x00,0x00]
-#CHECK: nihh %r0, 32768 # encoding: [0xa5,0x04,0x80,0x00]
-#CHECK: nihh %r0, 65535 # encoding: [0xa5,0x04,0xff,0xff]
-#CHECK: nihh %r15, 0 # encoding: [0xa5,0xf4,0x00,0x00]
-
- nihh %r0, 0
- nihh %r0, 0x8000
- nihh %r0, 0xffff
- nihh %r15, 0
diff --git a/test/MC/SystemZ/insn-nihh-02.s b/test/MC/SystemZ/insn-nihh-02.s
deleted file mode 100644
index 3df88e40a2..0000000000
--- a/test/MC/SystemZ/insn-nihh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: nihh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: nihh %r0, 0x10000
-
- nihh %r0, -1
- nihh %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-nihl-01.s b/test/MC/SystemZ/insn-nihl-01.s
deleted file mode 100644
index 6eab58c7e7..0000000000
--- a/test/MC/SystemZ/insn-nihl-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: nihl %r0, 0 # encoding: [0xa5,0x05,0x00,0x00]
-#CHECK: nihl %r0, 32768 # encoding: [0xa5,0x05,0x80,0x00]
-#CHECK: nihl %r0, 65535 # encoding: [0xa5,0x05,0xff,0xff]
-#CHECK: nihl %r15, 0 # encoding: [0xa5,0xf5,0x00,0x00]
-
- nihl %r0, 0
- nihl %r0, 0x8000
- nihl %r0, 0xffff
- nihl %r15, 0
diff --git a/test/MC/SystemZ/insn-nihl-02.s b/test/MC/SystemZ/insn-nihl-02.s
deleted file mode 100644
index 6e2d52f5a9..0000000000
--- a/test/MC/SystemZ/insn-nihl-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: nihl %r0, -1
-#CHECK: error: invalid operand
-#CHECK: nihl %r0, 0x10000
-
- nihl %r0, -1
- nihl %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-nilf-01.s b/test/MC/SystemZ/insn-nilf-01.s
deleted file mode 100644
index 0b3a13e752..0000000000
--- a/test/MC/SystemZ/insn-nilf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: nilf %r0, 0 # encoding: [0xc0,0x0b,0x00,0x00,0x00,0x00]
-#CHECK: nilf %r0, 4294967295 # encoding: [0xc0,0x0b,0xff,0xff,0xff,0xff]
-#CHECK: nilf %r15, 0 # encoding: [0xc0,0xfb,0x00,0x00,0x00,0x00]
-
- nilf %r0, 0
- nilf %r0, 0xffffffff
- nilf %r15, 0
diff --git a/test/MC/SystemZ/insn-nilf-02.s b/test/MC/SystemZ/insn-nilf-02.s
deleted file mode 100644
index 87b65e46fe..0000000000
--- a/test/MC/SystemZ/insn-nilf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: nilf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: nilf %r0, 1 << 32
-
- nilf %r0, -1
- nilf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-nilh-01.s b/test/MC/SystemZ/insn-nilh-01.s
deleted file mode 100644
index 4bc9353dd2..0000000000
--- a/test/MC/SystemZ/insn-nilh-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: nilh %r0, 0 # encoding: [0xa5,0x06,0x00,0x00]
-#CHECK: nilh %r0, 32768 # encoding: [0xa5,0x06,0x80,0x00]
-#CHECK: nilh %r0, 65535 # encoding: [0xa5,0x06,0xff,0xff]
-#CHECK: nilh %r15, 0 # encoding: [0xa5,0xf6,0x00,0x00]
-
- nilh %r0, 0
- nilh %r0, 0x8000
- nilh %r0, 0xffff
- nilh %r15, 0
diff --git a/test/MC/SystemZ/insn-nilh-02.s b/test/MC/SystemZ/insn-nilh-02.s
deleted file mode 100644
index ae5a852a6c..0000000000
--- a/test/MC/SystemZ/insn-nilh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: nilh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: nilh %r0, 0x10000
-
- nilh %r0, -1
- nilh %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-nill-01.s b/test/MC/SystemZ/insn-nill-01.s
deleted file mode 100644
index 5f4f87785b..0000000000
--- a/test/MC/SystemZ/insn-nill-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: nill %r0, 0 # encoding: [0xa5,0x07,0x00,0x00]
-#CHECK: nill %r0, 32768 # encoding: [0xa5,0x07,0x80,0x00]
-#CHECK: nill %r0, 65535 # encoding: [0xa5,0x07,0xff,0xff]
-#CHECK: nill %r15, 0 # encoding: [0xa5,0xf7,0x00,0x00]
-
- nill %r0, 0
- nill %r0, 0x8000
- nill %r0, 0xffff
- nill %r15, 0
diff --git a/test/MC/SystemZ/insn-nill-02.s b/test/MC/SystemZ/insn-nill-02.s
deleted file mode 100644
index 27fbc4a506..0000000000
--- a/test/MC/SystemZ/insn-nill-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: nill %r0, -1
-#CHECK: error: invalid operand
-#CHECK: nill %r0, 0x10000
-
- nill %r0, -1
- nill %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-niy-01.s b/test/MC/SystemZ/insn-niy-01.s
deleted file mode 100644
index 4c007e9172..0000000000
--- a/test/MC/SystemZ/insn-niy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: niy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x54]
-#CHECK: niy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x54]
-#CHECK: niy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x54]
-#CHECK: niy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x54]
-#CHECK: niy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x54]
-#CHECK: niy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x54]
-#CHECK: niy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x54]
-#CHECK: niy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x54]
-#CHECK: niy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x54]
-#CHECK: niy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x54]
-
- niy -524288, 0
- niy -1, 0
- niy 0, 0
- niy 1, 0
- niy 524287, 0
- niy 0, 255
- niy 0(%r1), 42
- niy 0(%r15), 42
- niy 524287(%r1), 42
- niy 524287(%r15), 42
diff --git a/test/MC/SystemZ/insn-niy-02.s b/test/MC/SystemZ/insn-niy-02.s
deleted file mode 100644
index ca398e6fca..0000000000
--- a/test/MC/SystemZ/insn-niy-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: niy -524289, 0
-#CHECK: error: invalid operand
-#CHECK: niy 524288, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: niy 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: niy 0, -1
-#CHECK: error: invalid operand
-#CHECK: niy 0, 256
-
- niy -524289, 0
- niy 524288, 0
- niy 0(%r1,%r2), 0
- niy 0, -1
- niy 0, 256
diff --git a/test/MC/SystemZ/insn-nr-01.s b/test/MC/SystemZ/insn-nr-01.s
deleted file mode 100644
index c10216d68f..0000000000
--- a/test/MC/SystemZ/insn-nr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: nr %r0, %r0 # encoding: [0x14,0x00]
-#CHECK: nr %r0, %r15 # encoding: [0x14,0x0f]
-#CHECK: nr %r15, %r0 # encoding: [0x14,0xf0]
-#CHECK: nr %r7, %r8 # encoding: [0x14,0x78]
-
- nr %r0,%r0
- nr %r0,%r15
- nr %r15,%r0
- nr %r7,%r8
diff --git a/test/MC/SystemZ/insn-ny-01.s b/test/MC/SystemZ/insn-ny-01.s
deleted file mode 100644
index a12bb67e2b..0000000000
--- a/test/MC/SystemZ/insn-ny-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ny %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x54]
-#CHECK: ny %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x54]
-#CHECK: ny %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x54]
-#CHECK: ny %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x54]
-#CHECK: ny %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x54]
-#CHECK: ny %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x54]
-#CHECK: ny %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x54]
-#CHECK: ny %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x54]
-#CHECK: ny %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x54]
-#CHECK: ny %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x54]
-
- ny %r0, -524288
- ny %r0, -1
- ny %r0, 0
- ny %r0, 1
- ny %r0, 524287
- ny %r0, 0(%r1)
- ny %r0, 0(%r15)
- ny %r0, 524287(%r1,%r15)
- ny %r0, 524287(%r15,%r1)
- ny %r15, 0
diff --git a/test/MC/SystemZ/insn-ny-02.s b/test/MC/SystemZ/insn-ny-02.s
deleted file mode 100644
index 5f53ebd3e1..0000000000
--- a/test/MC/SystemZ/insn-ny-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ny %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: ny %r0, 524288
-
- ny %r0, -524289
- ny %r0, 524288
diff --git a/test/MC/SystemZ/insn-o-01.s b/test/MC/SystemZ/insn-o-01.s
deleted file mode 100644
index 0c74e9ccc6..0000000000
--- a/test/MC/SystemZ/insn-o-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: o %r0, 0 # encoding: [0x56,0x00,0x00,0x00]
-#CHECK: o %r0, 4095 # encoding: [0x56,0x00,0x0f,0xff]
-#CHECK: o %r0, 0(%r1) # encoding: [0x56,0x00,0x10,0x00]
-#CHECK: o %r0, 0(%r15) # encoding: [0x56,0x00,0xf0,0x00]
-#CHECK: o %r0, 4095(%r1,%r15) # encoding: [0x56,0x01,0xff,0xff]
-#CHECK: o %r0, 4095(%r15,%r1) # encoding: [0x56,0x0f,0x1f,0xff]
-#CHECK: o %r15, 0 # encoding: [0x56,0xf0,0x00,0x00]
-
- o %r0, 0
- o %r0, 4095
- o %r0, 0(%r1)
- o %r0, 0(%r15)
- o %r0, 4095(%r1,%r15)
- o %r0, 4095(%r15,%r1)
- o %r15, 0
diff --git a/test/MC/SystemZ/insn-o-02.s b/test/MC/SystemZ/insn-o-02.s
deleted file mode 100644
index 34b741803b..0000000000
--- a/test/MC/SystemZ/insn-o-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: o %r0, -1
-#CHECK: error: invalid operand
-#CHECK: o %r0, 4096
-
- o %r0, -1
- o %r0, 4096
diff --git a/test/MC/SystemZ/insn-og-01.s b/test/MC/SystemZ/insn-og-01.s
deleted file mode 100644
index 3c9811b008..0000000000
--- a/test/MC/SystemZ/insn-og-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: og %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x81]
-#CHECK: og %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x81]
-#CHECK: og %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x81]
-#CHECK: og %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x81]
-#CHECK: og %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x81]
-#CHECK: og %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x81]
-#CHECK: og %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x81]
-#CHECK: og %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x81]
-#CHECK: og %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x81]
-#CHECK: og %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x81]
-
- og %r0, -524288
- og %r0, -1
- og %r0, 0
- og %r0, 1
- og %r0, 524287
- og %r0, 0(%r1)
- og %r0, 0(%r15)
- og %r0, 524287(%r1,%r15)
- og %r0, 524287(%r15,%r1)
- og %r15, 0
diff --git a/test/MC/SystemZ/insn-og-02.s b/test/MC/SystemZ/insn-og-02.s
deleted file mode 100644
index 7f4e45328b..0000000000
--- a/test/MC/SystemZ/insn-og-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: og %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: og %r0, 524288
-
- og %r0, -524289
- og %r0, 524288
diff --git a/test/MC/SystemZ/insn-ogr-01.s b/test/MC/SystemZ/insn-ogr-01.s
deleted file mode 100644
index 25ba913ac5..0000000000
--- a/test/MC/SystemZ/insn-ogr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ogr %r0, %r0 # encoding: [0xb9,0x81,0x00,0x00]
-#CHECK: ogr %r0, %r15 # encoding: [0xb9,0x81,0x00,0x0f]
-#CHECK: ogr %r15, %r0 # encoding: [0xb9,0x81,0x00,0xf0]
-#CHECK: ogr %r7, %r8 # encoding: [0xb9,0x81,0x00,0x78]
-
- ogr %r0,%r0
- ogr %r0,%r15
- ogr %r15,%r0
- ogr %r7,%r8
diff --git a/test/MC/SystemZ/insn-oi-01.s b/test/MC/SystemZ/insn-oi-01.s
deleted file mode 100644
index 5d52fd2500..0000000000
--- a/test/MC/SystemZ/insn-oi-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oi 0, 0 # encoding: [0x96,0x00,0x00,0x00]
-#CHECK: oi 4095, 0 # encoding: [0x96,0x00,0x0f,0xff]
-#CHECK: oi 0, 255 # encoding: [0x96,0xff,0x00,0x00]
-#CHECK: oi 0(%r1), 42 # encoding: [0x96,0x2a,0x10,0x00]
-#CHECK: oi 0(%r15), 42 # encoding: [0x96,0x2a,0xf0,0x00]
-#CHECK: oi 4095(%r1), 42 # encoding: [0x96,0x2a,0x1f,0xff]
-#CHECK: oi 4095(%r15), 42 # encoding: [0x96,0x2a,0xff,0xff]
-
- oi 0, 0
- oi 4095, 0
- oi 0, 255
- oi 0(%r1), 42
- oi 0(%r15), 42
- oi 4095(%r1), 42
- oi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-oi-02.s b/test/MC/SystemZ/insn-oi-02.s
deleted file mode 100644
index 330a290aa3..0000000000
--- a/test/MC/SystemZ/insn-oi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oi -1, 0
-#CHECK: error: invalid operand
-#CHECK: oi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: oi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: oi 0, -1
-#CHECK: error: invalid operand
-#CHECK: oi 0, 256
-
- oi -1, 0
- oi 4096, 0
- oi 0(%r1,%r2), 0
- oi 0, -1
- oi 0, 256
diff --git a/test/MC/SystemZ/insn-oihf-01.s b/test/MC/SystemZ/insn-oihf-01.s
deleted file mode 100644
index 627820d31d..0000000000
--- a/test/MC/SystemZ/insn-oihf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oihf %r0, 0 # encoding: [0xc0,0x0c,0x00,0x00,0x00,0x00]
-#CHECK: oihf %r0, 4294967295 # encoding: [0xc0,0x0c,0xff,0xff,0xff,0xff]
-#CHECK: oihf %r15, 0 # encoding: [0xc0,0xfc,0x00,0x00,0x00,0x00]
-
- oihf %r0, 0
- oihf %r0, 0xffffffff
- oihf %r15, 0
diff --git a/test/MC/SystemZ/insn-oihf-02.s b/test/MC/SystemZ/insn-oihf-02.s
deleted file mode 100644
index a944cb013c..0000000000
--- a/test/MC/SystemZ/insn-oihf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oihf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: oihf %r0, 1 << 32
-
- oihf %r0, -1
- oihf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-oihh-01.s b/test/MC/SystemZ/insn-oihh-01.s
deleted file mode 100644
index f62f61f03f..0000000000
--- a/test/MC/SystemZ/insn-oihh-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oihh %r0, 0 # encoding: [0xa5,0x08,0x00,0x00]
-#CHECK: oihh %r0, 32768 # encoding: [0xa5,0x08,0x80,0x00]
-#CHECK: oihh %r0, 65535 # encoding: [0xa5,0x08,0xff,0xff]
-#CHECK: oihh %r15, 0 # encoding: [0xa5,0xf8,0x00,0x00]
-
- oihh %r0, 0
- oihh %r0, 0x8000
- oihh %r0, 0xffff
- oihh %r15, 0
diff --git a/test/MC/SystemZ/insn-oihh-02.s b/test/MC/SystemZ/insn-oihh-02.s
deleted file mode 100644
index 6bf7e237e0..0000000000
--- a/test/MC/SystemZ/insn-oihh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oihh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: oihh %r0, 0x10000
-
- oihh %r0, -1
- oihh %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-oihl-01.s b/test/MC/SystemZ/insn-oihl-01.s
deleted file mode 100644
index 437b15c39c..0000000000
--- a/test/MC/SystemZ/insn-oihl-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oihl %r0, 0 # encoding: [0xa5,0x09,0x00,0x00]
-#CHECK: oihl %r0, 32768 # encoding: [0xa5,0x09,0x80,0x00]
-#CHECK: oihl %r0, 65535 # encoding: [0xa5,0x09,0xff,0xff]
-#CHECK: oihl %r15, 0 # encoding: [0xa5,0xf9,0x00,0x00]
-
- oihl %r0, 0
- oihl %r0, 0x8000
- oihl %r0, 0xffff
- oihl %r15, 0
diff --git a/test/MC/SystemZ/insn-oihl-02.s b/test/MC/SystemZ/insn-oihl-02.s
deleted file mode 100644
index f4f7a59b77..0000000000
--- a/test/MC/SystemZ/insn-oihl-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oihl %r0, -1
-#CHECK: error: invalid operand
-#CHECK: oihl %r0, 0x10000
-
- oihl %r0, -1
- oihl %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-oilf-01.s b/test/MC/SystemZ/insn-oilf-01.s
deleted file mode 100644
index 6f0c0717bd..0000000000
--- a/test/MC/SystemZ/insn-oilf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oilf %r0, 0 # encoding: [0xc0,0x0d,0x00,0x00,0x00,0x00]
-#CHECK: oilf %r0, 4294967295 # encoding: [0xc0,0x0d,0xff,0xff,0xff,0xff]
-#CHECK: oilf %r15, 0 # encoding: [0xc0,0xfd,0x00,0x00,0x00,0x00]
-
- oilf %r0, 0
- oilf %r0, 0xffffffff
- oilf %r15, 0
diff --git a/test/MC/SystemZ/insn-oilf-02.s b/test/MC/SystemZ/insn-oilf-02.s
deleted file mode 100644
index 5501724d54..0000000000
--- a/test/MC/SystemZ/insn-oilf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oilf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: oilf %r0, 1 << 32
-
- oilf %r0, -1
- oilf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-oilh-01.s b/test/MC/SystemZ/insn-oilh-01.s
deleted file mode 100644
index 0140500e34..0000000000
--- a/test/MC/SystemZ/insn-oilh-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oilh %r0, 0 # encoding: [0xa5,0x0a,0x00,0x00]
-#CHECK: oilh %r0, 32768 # encoding: [0xa5,0x0a,0x80,0x00]
-#CHECK: oilh %r0, 65535 # encoding: [0xa5,0x0a,0xff,0xff]
-#CHECK: oilh %r15, 0 # encoding: [0xa5,0xfa,0x00,0x00]
-
- oilh %r0, 0
- oilh %r0, 0x8000
- oilh %r0, 0xffff
- oilh %r15, 0
diff --git a/test/MC/SystemZ/insn-oilh-02.s b/test/MC/SystemZ/insn-oilh-02.s
deleted file mode 100644
index d2f180d6ab..0000000000
--- a/test/MC/SystemZ/insn-oilh-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oilh %r0, -1
-#CHECK: error: invalid operand
-#CHECK: oilh %r0, 0x10000
-
- oilh %r0, -1
- oilh %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-oill-01.s b/test/MC/SystemZ/insn-oill-01.s
deleted file mode 100644
index ef95d2d90f..0000000000
--- a/test/MC/SystemZ/insn-oill-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oill %r0, 0 # encoding: [0xa5,0x0b,0x00,0x00]
-#CHECK: oill %r0, 32768 # encoding: [0xa5,0x0b,0x80,0x00]
-#CHECK: oill %r0, 65535 # encoding: [0xa5,0x0b,0xff,0xff]
-#CHECK: oill %r15, 0 # encoding: [0xa5,0xfb,0x00,0x00]
-
- oill %r0, 0
- oill %r0, 0x8000
- oill %r0, 0xffff
- oill %r15, 0
diff --git a/test/MC/SystemZ/insn-oill-02.s b/test/MC/SystemZ/insn-oill-02.s
deleted file mode 100644
index 01321db309..0000000000
--- a/test/MC/SystemZ/insn-oill-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oill %r0, -1
-#CHECK: error: invalid operand
-#CHECK: oill %r0, 0x10000
-
- oill %r0, -1
- oill %r0, 0x10000
diff --git a/test/MC/SystemZ/insn-oiy-01.s b/test/MC/SystemZ/insn-oiy-01.s
deleted file mode 100644
index ba060cad1e..0000000000
--- a/test/MC/SystemZ/insn-oiy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oiy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x56]
-#CHECK: oiy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x56]
-#CHECK: oiy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x56]
-#CHECK: oiy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x56]
-#CHECK: oiy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x56]
-#CHECK: oiy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x56]
-#CHECK: oiy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x56]
-#CHECK: oiy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x56]
-#CHECK: oiy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x56]
-#CHECK: oiy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x56]
-
- oiy -524288, 0
- oiy -1, 0
- oiy 0, 0
- oiy 1, 0
- oiy 524287, 0
- oiy 0, 255
- oiy 0(%r1), 42
- oiy 0(%r15), 42
- oiy 524287(%r1), 42
- oiy 524287(%r15), 42
diff --git a/test/MC/SystemZ/insn-oiy-02.s b/test/MC/SystemZ/insn-oiy-02.s
deleted file mode 100644
index c1c556931d..0000000000
--- a/test/MC/SystemZ/insn-oiy-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oiy -524289, 0
-#CHECK: error: invalid operand
-#CHECK: oiy 524288, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: oiy 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: oiy 0, -1
-#CHECK: error: invalid operand
-#CHECK: oiy 0, 256
-
- oiy -524289, 0
- oiy 524288, 0
- oiy 0(%r1,%r2), 0
- oiy 0, -1
- oiy 0, 256
diff --git a/test/MC/SystemZ/insn-or-01.s b/test/MC/SystemZ/insn-or-01.s
deleted file mode 100644
index 8ac366d32a..0000000000
--- a/test/MC/SystemZ/insn-or-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: or %r0, %r0 # encoding: [0x16,0x00]
-#CHECK: or %r0, %r15 # encoding: [0x16,0x0f]
-#CHECK: or %r15, %r0 # encoding: [0x16,0xf0]
-#CHECK: or %r7, %r8 # encoding: [0x16,0x78]
-
- or %r0,%r0
- or %r0,%r15
- or %r15,%r0
- or %r7,%r8
diff --git a/test/MC/SystemZ/insn-oy-01.s b/test/MC/SystemZ/insn-oy-01.s
deleted file mode 100644
index 58013d0cab..0000000000
--- a/test/MC/SystemZ/insn-oy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: oy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x56]
-#CHECK: oy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x56]
-#CHECK: oy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x56]
-#CHECK: oy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x56]
-#CHECK: oy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x56]
-#CHECK: oy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x56]
-#CHECK: oy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x56]
-#CHECK: oy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x56]
-#CHECK: oy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x56]
-#CHECK: oy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x56]
-
- oy %r0, -524288
- oy %r0, -1
- oy %r0, 0
- oy %r0, 1
- oy %r0, 524287
- oy %r0, 0(%r1)
- oy %r0, 0(%r15)
- oy %r0, 524287(%r1,%r15)
- oy %r0, 524287(%r15,%r1)
- oy %r15, 0
diff --git a/test/MC/SystemZ/insn-oy-02.s b/test/MC/SystemZ/insn-oy-02.s
deleted file mode 100644
index a9ae5b2395..0000000000
--- a/test/MC/SystemZ/insn-oy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: oy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: oy %r0, 524288
-
- oy %r0, -524289
- oy %r0, 524288
diff --git a/test/MC/SystemZ/insn-risbg-01.s b/test/MC/SystemZ/insn-risbg-01.s
deleted file mode 100644
index b50fbe7f96..0000000000
--- a/test/MC/SystemZ/insn-risbg-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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, 63, 0 # encoding: [0xec,0x00,0x00,0x3f,0x00,0x55]
-#CHECK: risbg %r0, %r0, 63, 0, 0 # encoding: [0xec,0x00,0x3f,0x00,0x00,0x55]
-#CHECK: risbg %r0, %r15, 0, 0, 0 # encoding: [0xec,0x0f,0x00,0x00,0x00,0x55]
-#CHECK: risbg %r15, %r0, 0, 0, 0 # encoding: [0xec,0xf0,0x00,0x00,0x00,0x55]
-#CHECK: risbg %r4, %r5, 6, 7, 8 # encoding: [0xec,0x45,0x06,0x07,0x08,0x55]
-
- risbg %r0,%r0,0,0,0
- risbg %r0,%r0,0,0,63
- risbg %r0,%r0,0,63,0
- risbg %r0,%r0,63,0,0
- risbg %r0,%r15,0,0,0
- risbg %r15,%r0,0,0,0
- risbg %r4,%r5,6,7,8
diff --git a/test/MC/SystemZ/insn-risbg-02.s b/test/MC/SystemZ/insn-risbg-02.s
deleted file mode 100644
index 781cb563c8..0000000000
--- a/test/MC/SystemZ/insn-risbg-02.s
+++ /dev/null
@@ -1,22 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: risbg %r0,%r0,0,0,-1
-#CHECK: error: invalid operand
-#CHECK: risbg %r0,%r0,0,0,64
-#CHECK: error: invalid operand
-#CHECK: risbg %r0,%r0,0,-1,0
-#CHECK: error: invalid operand
-#CHECK: risbg %r0,%r0,0,64,0
-#CHECK: error: invalid operand
-#CHECK: risbg %r0,%r0,-1,0,0
-#CHECK: error: invalid operand
-#CHECK: risbg %r0,%r0,64,0,0
-
- risbg %r0,%r0,0,0,-1
- risbg %r0,%r0,0,0,64
- risbg %r0,%r0,0,-1,0
- risbg %r0,%r0,0,64,0
- risbg %r0,%r0,-1,0,0
- risbg %r0,%r0,64,0,0
diff --git a/test/MC/SystemZ/insn-rll-01.s b/test/MC/SystemZ/insn-rll-01.s
deleted file mode 100644
index 06e3774786..0000000000
--- a/test/MC/SystemZ/insn-rll-01.s
+++ /dev/null
@@ -1,27 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: rll %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x1d]
-#CHECK: rll %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x1d]
-#CHECK: rll %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x1d]
-#CHECK: rll %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x1d]
-#CHECK: rll %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x1d]
-#CHECK: rll %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x1d]
-#CHECK: rll %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x1d]
-#CHECK: rll %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x1d]
-#CHECK: rll %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x1d]
-#CHECK: rll %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x1d]
-#CHECK: rll %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x1d]
-#CHECK: rll %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x1d]
-
- rll %r0,%r0,0
- rll %r15,%r1,0
- rll %r1,%r15,0
- rll %r15,%r15,0
- rll %r0,%r0,-524288
- rll %r0,%r0,-1
- rll %r0,%r0,1
- rll %r0,%r0,524287
- rll %r0,%r0,0(%r1)
- rll %r0,%r0,0(%r15)
- rll %r0,%r0,524287(%r1)
- rll %r0,%r0,524287(%r15)
diff --git a/test/MC/SystemZ/insn-rll-02.s b/test/MC/SystemZ/insn-rll-02.s
deleted file mode 100644
index baf160700f..0000000000
--- a/test/MC/SystemZ/insn-rll-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: rll %r0,%r0,-524289
-#CHECK: error: invalid operand
-#CHECK: rll %r0,%r0,524288
-#CHECK: error: %r0 used in an address
-#CHECK: rll %r0,%r0,0(%r0)
-#CHECK: error: invalid use of indexed addressing
-#CHECK: rll %r0,%r0,0(%r1,%r2)
-
- rll %r0,%r0,-524289
- rll %r0,%r0,524288
- rll %r0,%r0,0(%r0)
- rll %r0,%r0,0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-rllg-01.s b/test/MC/SystemZ/insn-rllg-01.s
deleted file mode 100644
index c36dc6daf2..0000000000
--- a/test/MC/SystemZ/insn-rllg-01.s
+++ /dev/null
@@ -1,27 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: rllg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x1c]
-#CHECK: rllg %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x1c]
-#CHECK: rllg %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x1c]
-#CHECK: rllg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x1c]
-#CHECK: rllg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x1c]
-#CHECK: rllg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x1c]
-#CHECK: rllg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x1c]
-#CHECK: rllg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x1c]
-#CHECK: rllg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x1c]
-#CHECK: rllg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x1c]
-#CHECK: rllg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x1c]
-#CHECK: rllg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x1c]
-
- rllg %r0,%r0,0
- rllg %r15,%r1,0
- rllg %r1,%r15,0
- rllg %r15,%r15,0
- rllg %r0,%r0,-524288
- rllg %r0,%r0,-1
- rllg %r0,%r0,1
- rllg %r0,%r0,524287
- rllg %r0,%r0,0(%r1)
- rllg %r0,%r0,0(%r15)
- rllg %r0,%r0,524287(%r1)
- rllg %r0,%r0,524287(%r15)
diff --git a/test/MC/SystemZ/insn-rllg-02.s b/test/MC/SystemZ/insn-rllg-02.s
deleted file mode 100644
index 7f82845aa6..0000000000
--- a/test/MC/SystemZ/insn-rllg-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: rllg %r0,%r0,-524289
-#CHECK: error: invalid operand
-#CHECK: rllg %r0,%r0,524288
-#CHECK: error: %r0 used in an address
-#CHECK: rllg %r0,%r0,0(%r0)
-#CHECK: error: invalid use of indexed addressing
-#CHECK: rllg %r0,%r0,0(%r1,%r2)
-
- rllg %r0,%r0,-524289
- rllg %r0,%r0,524288
- rllg %r0,%r0,0(%r0)
- rllg %r0,%r0,0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-s-01.s b/test/MC/SystemZ/insn-s-01.s
deleted file mode 100644
index 2effedbc6c..0000000000
--- a/test/MC/SystemZ/insn-s-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: s %r0, 0 # encoding: [0x5b,0x00,0x00,0x00]
-#CHECK: s %r0, 4095 # encoding: [0x5b,0x00,0x0f,0xff]
-#CHECK: s %r0, 0(%r1) # encoding: [0x5b,0x00,0x10,0x00]
-#CHECK: s %r0, 0(%r15) # encoding: [0x5b,0x00,0xf0,0x00]
-#CHECK: s %r0, 4095(%r1,%r15) # encoding: [0x5b,0x01,0xff,0xff]
-#CHECK: s %r0, 4095(%r15,%r1) # encoding: [0x5b,0x0f,0x1f,0xff]
-#CHECK: s %r15, 0 # encoding: [0x5b,0xf0,0x00,0x00]
-
- s %r0, 0
- s %r0, 4095
- s %r0, 0(%r1)
- s %r0, 0(%r15)
- s %r0, 4095(%r1,%r15)
- s %r0, 4095(%r15,%r1)
- s %r15, 0
diff --git a/test/MC/SystemZ/insn-s-02.s b/test/MC/SystemZ/insn-s-02.s
deleted file mode 100644
index f0b4a137ec..0000000000
--- a/test/MC/SystemZ/insn-s-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: s %r0, -1
-#CHECK: error: invalid operand
-#CHECK: s %r0, 4096
-
- s %r0, -1
- s %r0, 4096
diff --git a/test/MC/SystemZ/insn-sdb-01.s b/test/MC/SystemZ/insn-sdb-01.s
deleted file mode 100644
index 9267796ece..0000000000
--- a/test/MC/SystemZ/insn-sdb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x1b]
-#CHECK: sdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x1b]
-#CHECK: sdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x1b]
-#CHECK: sdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x1b]
-#CHECK: sdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x1b]
-#CHECK: sdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x1b]
-#CHECK: sdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x1b]
-
- sdb %f0, 0
- sdb %f0, 4095
- sdb %f0, 0(%r1)
- sdb %f0, 0(%r15)
- sdb %f0, 4095(%r1,%r15)
- sdb %f0, 4095(%r15,%r1)
- sdb %f15, 0
diff --git a/test/MC/SystemZ/insn-sdb-02.s b/test/MC/SystemZ/insn-sdb-02.s
deleted file mode 100644
index c77284fb9a..0000000000
--- a/test/MC/SystemZ/insn-sdb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sdb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: sdb %f0, 4096
-
- sdb %f0, -1
- sdb %f0, 4096
diff --git a/test/MC/SystemZ/insn-sdbr-01.s b/test/MC/SystemZ/insn-sdbr-01.s
deleted file mode 100644
index b07f5f2cd8..0000000000
--- a/test/MC/SystemZ/insn-sdbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sdbr %f0, %f0 # encoding: [0xb3,0x1b,0x00,0x00]
-#CHECK: sdbr %f0, %f15 # encoding: [0xb3,0x1b,0x00,0x0f]
-#CHECK: sdbr %f7, %f8 # encoding: [0xb3,0x1b,0x00,0x78]
-#CHECK: sdbr %f15, %f0 # encoding: [0xb3,0x1b,0x00,0xf0]
-
- sdbr %f0, %f0
- sdbr %f0, %f15
- sdbr %f7, %f8
- sdbr %f15, %f0
diff --git a/test/MC/SystemZ/insn-seb-01.s b/test/MC/SystemZ/insn-seb-01.s
deleted file mode 100644
index 4bf5cfa062..0000000000
--- a/test/MC/SystemZ/insn-seb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: seb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x0b]
-#CHECK: seb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x0b]
-#CHECK: seb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x0b]
-#CHECK: seb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x0b]
-#CHECK: seb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x0b]
-#CHECK: seb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x0b]
-#CHECK: seb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x0b]
-
- seb %f0, 0
- seb %f0, 4095
- seb %f0, 0(%r1)
- seb %f0, 0(%r15)
- seb %f0, 4095(%r1,%r15)
- seb %f0, 4095(%r15,%r1)
- seb %f15, 0
diff --git a/test/MC/SystemZ/insn-seb-02.s b/test/MC/SystemZ/insn-seb-02.s
deleted file mode 100644
index e185a20fdc..0000000000
--- a/test/MC/SystemZ/insn-seb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: seb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: seb %f0, 4096
-
- seb %f0, -1
- seb %f0, 4096
diff --git a/test/MC/SystemZ/insn-sebr-01.s b/test/MC/SystemZ/insn-sebr-01.s
deleted file mode 100644
index 467b57cabe..0000000000
--- a/test/MC/SystemZ/insn-sebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sebr %f0, %f0 # encoding: [0xb3,0x0b,0x00,0x00]
-#CHECK: sebr %f0, %f15 # encoding: [0xb3,0x0b,0x00,0x0f]
-#CHECK: sebr %f7, %f8 # encoding: [0xb3,0x0b,0x00,0x78]
-#CHECK: sebr %f15, %f0 # encoding: [0xb3,0x0b,0x00,0xf0]
-
- sebr %f0, %f0
- sebr %f0, %f15
- sebr %f7, %f8
- sebr %f15, %f0
diff --git a/test/MC/SystemZ/insn-sg-01.s b/test/MC/SystemZ/insn-sg-01.s
deleted file mode 100644
index 153df1ae2d..0000000000
--- a/test/MC/SystemZ/insn-sg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x09]
-#CHECK: sg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x09]
-#CHECK: sg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x09]
-#CHECK: sg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x09]
-#CHECK: sg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x09]
-#CHECK: sg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x09]
-#CHECK: sg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x09]
-#CHECK: sg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x09]
-#CHECK: sg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x09]
-#CHECK: sg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x09]
-
- sg %r0, -524288
- sg %r0, -1
- sg %r0, 0
- sg %r0, 1
- sg %r0, 524287
- sg %r0, 0(%r1)
- sg %r0, 0(%r15)
- sg %r0, 524287(%r1,%r15)
- sg %r0, 524287(%r15,%r1)
- sg %r15, 0
diff --git a/test/MC/SystemZ/insn-sg-02.s b/test/MC/SystemZ/insn-sg-02.s
deleted file mode 100644
index f183e58f7b..0000000000
--- a/test/MC/SystemZ/insn-sg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: sg %r0, 524288
-
- sg %r0, -524289
- sg %r0, 524288
diff --git a/test/MC/SystemZ/insn-sgf-01.s b/test/MC/SystemZ/insn-sgf-01.s
deleted file mode 100644
index 844c09998d..0000000000
--- a/test/MC/SystemZ/insn-sgf-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x19]
-#CHECK: sgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x19]
-#CHECK: sgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x19]
-#CHECK: sgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x19]
-#CHECK: sgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x19]
-#CHECK: sgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x19]
-#CHECK: sgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x19]
-#CHECK: sgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x19]
-#CHECK: sgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x19]
-#CHECK: sgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x19]
-
- sgf %r0, -524288
- sgf %r0, -1
- sgf %r0, 0
- sgf %r0, 1
- sgf %r0, 524287
- sgf %r0, 0(%r1)
- sgf %r0, 0(%r15)
- sgf %r0, 524287(%r1,%r15)
- sgf %r0, 524287(%r15,%r1)
- sgf %r15, 0
diff --git a/test/MC/SystemZ/insn-sgf-02.s b/test/MC/SystemZ/insn-sgf-02.s
deleted file mode 100644
index 7eba3abe2c..0000000000
--- a/test/MC/SystemZ/insn-sgf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sgf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: sgf %r0, 524288
-
- sgf %r0, -524289
- sgf %r0, 524288
diff --git a/test/MC/SystemZ/insn-sgfr-01.s b/test/MC/SystemZ/insn-sgfr-01.s
deleted file mode 100644
index 49a1412f88..0000000000
--- a/test/MC/SystemZ/insn-sgfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sgfr %r0, %r0 # encoding: [0xb9,0x19,0x00,0x00]
-#CHECK: sgfr %r0, %r15 # encoding: [0xb9,0x19,0x00,0x0f]
-#CHECK: sgfr %r15, %r0 # encoding: [0xb9,0x19,0x00,0xf0]
-#CHECK: sgfr %r7, %r8 # encoding: [0xb9,0x19,0x00,0x78]
-
- sgfr %r0,%r0
- sgfr %r0,%r15
- sgfr %r15,%r0
- sgfr %r7,%r8
diff --git a/test/MC/SystemZ/insn-sgr-01.s b/test/MC/SystemZ/insn-sgr-01.s
deleted file mode 100644
index 86c59a1452..0000000000
--- a/test/MC/SystemZ/insn-sgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sgr %r0, %r0 # encoding: [0xb9,0x09,0x00,0x00]
-#CHECK: sgr %r0, %r15 # encoding: [0xb9,0x09,0x00,0x0f]
-#CHECK: sgr %r15, %r0 # encoding: [0xb9,0x09,0x00,0xf0]
-#CHECK: sgr %r7, %r8 # encoding: [0xb9,0x09,0x00,0x78]
-
- sgr %r0,%r0
- sgr %r0,%r15
- sgr %r15,%r0
- sgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-sl-01.s b/test/MC/SystemZ/insn-sl-01.s
deleted file mode 100644
index c2186da486..0000000000
--- a/test/MC/SystemZ/insn-sl-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sl %r0, 0 # encoding: [0x5f,0x00,0x00,0x00]
-#CHECK: sl %r0, 4095 # encoding: [0x5f,0x00,0x0f,0xff]
-#CHECK: sl %r0, 0(%r1) # encoding: [0x5f,0x00,0x10,0x00]
-#CHECK: sl %r0, 0(%r15) # encoding: [0x5f,0x00,0xf0,0x00]
-#CHECK: sl %r0, 4095(%r1,%r15) # encoding: [0x5f,0x01,0xff,0xff]
-#CHECK: sl %r0, 4095(%r15,%r1) # encoding: [0x5f,0x0f,0x1f,0xff]
-#CHECK: sl %r15, 0 # encoding: [0x5f,0xf0,0x00,0x00]
-
- sl %r0, 0
- sl %r0, 4095
- sl %r0, 0(%r1)
- sl %r0, 0(%r15)
- sl %r0, 4095(%r1,%r15)
- sl %r0, 4095(%r15,%r1)
- sl %r15, 0
diff --git a/test/MC/SystemZ/insn-sl-02.s b/test/MC/SystemZ/insn-sl-02.s
deleted file mode 100644
index 8abd99d235..0000000000
--- a/test/MC/SystemZ/insn-sl-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sl %r0, -1
-#CHECK: error: invalid operand
-#CHECK: sl %r0, 4096
-
- sl %r0, -1
- sl %r0, 4096
diff --git a/test/MC/SystemZ/insn-slb-01.s b/test/MC/SystemZ/insn-slb-01.s
deleted file mode 100644
index 4bc79f6746..0000000000
--- a/test/MC/SystemZ/insn-slb-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slb %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x99]
-#CHECK: slb %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x99]
-#CHECK: slb %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x99]
-#CHECK: slb %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x99]
-#CHECK: slb %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x99]
-#CHECK: slb %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x99]
-#CHECK: slb %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x99]
-#CHECK: slb %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x99]
-#CHECK: slb %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x99]
-#CHECK: slb %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x99]
-
- slb %r0, -524288
- slb %r0, -1
- slb %r0, 0
- slb %r0, 1
- slb %r0, 524287
- slb %r0, 0(%r1)
- slb %r0, 0(%r15)
- slb %r0, 524287(%r1,%r15)
- slb %r0, 524287(%r15,%r1)
- slb %r15, 0
diff --git a/test/MC/SystemZ/insn-slb-02.s b/test/MC/SystemZ/insn-slb-02.s
deleted file mode 100644
index ac87128ffc..0000000000
--- a/test/MC/SystemZ/insn-slb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: slb %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: slb %r0, 524288
-
- slb %r0, -524289
- slb %r0, 524288
diff --git a/test/MC/SystemZ/insn-slbg-01.s b/test/MC/SystemZ/insn-slbg-01.s
deleted file mode 100644
index 8878aeda5e..0000000000
--- a/test/MC/SystemZ/insn-slbg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slbg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x89]
-#CHECK: slbg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x89]
-#CHECK: slbg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x89]
-#CHECK: slbg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x89]
-#CHECK: slbg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x89]
-#CHECK: slbg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x89]
-#CHECK: slbg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x89]
-#CHECK: slbg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x89]
-#CHECK: slbg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x89]
-#CHECK: slbg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x89]
-
- slbg %r0, -524288
- slbg %r0, -1
- slbg %r0, 0
- slbg %r0, 1
- slbg %r0, 524287
- slbg %r0, 0(%r1)
- slbg %r0, 0(%r15)
- slbg %r0, 524287(%r1,%r15)
- slbg %r0, 524287(%r15,%r1)
- slbg %r15, 0
diff --git a/test/MC/SystemZ/insn-slbg-02.s b/test/MC/SystemZ/insn-slbg-02.s
deleted file mode 100644
index ce09c8a9de..0000000000
--- a/test/MC/SystemZ/insn-slbg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: slbg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: slbg %r0, 524288
-
- slbg %r0, -524289
- slbg %r0, 524288
diff --git a/test/MC/SystemZ/insn-slbgr-01.s b/test/MC/SystemZ/insn-slbgr-01.s
deleted file mode 100644
index bcc2b535ba..0000000000
--- a/test/MC/SystemZ/insn-slbgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slbgr %r0, %r0 # encoding: [0xb9,0x89,0x00,0x00]
-#CHECK: slbgr %r0, %r15 # encoding: [0xb9,0x89,0x00,0x0f]
-#CHECK: slbgr %r15, %r0 # encoding: [0xb9,0x89,0x00,0xf0]
-#CHECK: slbgr %r7, %r8 # encoding: [0xb9,0x89,0x00,0x78]
-
- slbgr %r0,%r0
- slbgr %r0,%r15
- slbgr %r15,%r0
- slbgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-slbr-01.s b/test/MC/SystemZ/insn-slbr-01.s
deleted file mode 100644
index 9c10dbd021..0000000000
--- a/test/MC/SystemZ/insn-slbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slbr %r0, %r0 # encoding: [0xb9,0x99,0x00,0x00]
-#CHECK: slbr %r0, %r15 # encoding: [0xb9,0x99,0x00,0x0f]
-#CHECK: slbr %r15, %r0 # encoding: [0xb9,0x99,0x00,0xf0]
-#CHECK: slbr %r7, %r8 # encoding: [0xb9,0x99,0x00,0x78]
-
- slbr %r0,%r0
- slbr %r0,%r15
- slbr %r15,%r0
- slbr %r7,%r8
diff --git a/test/MC/SystemZ/insn-slfi-01.s b/test/MC/SystemZ/insn-slfi-01.s
deleted file mode 100644
index 4c8e5b4a84..0000000000
--- a/test/MC/SystemZ/insn-slfi-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-
- slfi %r0, 0
- slfi %r0, (1 << 32) - 1
- slfi %r15, 0
diff --git a/test/MC/SystemZ/insn-slfi-02.s b/test/MC/SystemZ/insn-slfi-02.s
deleted file mode 100644
index 12e14f6164..0000000000
--- a/test/MC/SystemZ/insn-slfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: slfi %r0, -1
-#CHECK: error: invalid operand
-#CHECK: slfi %r0, (1 << 32)
-
- slfi %r0, -1
- slfi %r0, (1 << 32)
diff --git a/test/MC/SystemZ/insn-slg-01.s b/test/MC/SystemZ/insn-slg-01.s
deleted file mode 100644
index 0b4f99e2e1..0000000000
--- a/test/MC/SystemZ/insn-slg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x0b]
-#CHECK: slg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x0b]
-#CHECK: slg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x0b]
-#CHECK: slg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x0b]
-#CHECK: slg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x0b]
-#CHECK: slg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x0b]
-#CHECK: slg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x0b]
-#CHECK: slg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x0b]
-#CHECK: slg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x0b]
-#CHECK: slg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x0b]
-
- slg %r0, -524288
- slg %r0, -1
- slg %r0, 0
- slg %r0, 1
- slg %r0, 524287
- slg %r0, 0(%r1)
- slg %r0, 0(%r15)
- slg %r0, 524287(%r1,%r15)
- slg %r0, 524287(%r15,%r1)
- slg %r15, 0
diff --git a/test/MC/SystemZ/insn-slg-02.s b/test/MC/SystemZ/insn-slg-02.s
deleted file mode 100644
index 1ad04c6111..0000000000
--- a/test/MC/SystemZ/insn-slg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: slg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: slg %r0, 524288
-
- slg %r0, -524289
- slg %r0, 524288
diff --git a/test/MC/SystemZ/insn-slgf-01.s b/test/MC/SystemZ/insn-slgf-01.s
deleted file mode 100644
index bca480ecd7..0000000000
--- a/test/MC/SystemZ/insn-slgf-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slgf %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x1b]
-#CHECK: slgf %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x1b]
-#CHECK: slgf %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x1b]
-#CHECK: slgf %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x1b]
-#CHECK: slgf %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x1b]
-#CHECK: slgf %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x1b]
-#CHECK: slgf %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x1b]
-#CHECK: slgf %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x1b]
-#CHECK: slgf %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x1b]
-#CHECK: slgf %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x1b]
-
- slgf %r0, -524288
- slgf %r0, -1
- slgf %r0, 0
- slgf %r0, 1
- slgf %r0, 524287
- slgf %r0, 0(%r1)
- slgf %r0, 0(%r15)
- slgf %r0, 524287(%r1,%r15)
- slgf %r0, 524287(%r15,%r1)
- slgf %r15, 0
diff --git a/test/MC/SystemZ/insn-slgf-02.s b/test/MC/SystemZ/insn-slgf-02.s
deleted file mode 100644
index 71a9aa7812..0000000000
--- a/test/MC/SystemZ/insn-slgf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: slgf %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: slgf %r0, 524288
-
- slgf %r0, -524289
- slgf %r0, 524288
diff --git a/test/MC/SystemZ/insn-slgfi-01.s b/test/MC/SystemZ/insn-slgfi-01.s
deleted file mode 100644
index c9fef187f5..0000000000
--- a/test/MC/SystemZ/insn-slgfi-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slgfi %r0, 0 # encoding: [0xc2,0x04,0x00,0x00,0x00,0x00]
-#CHECK: slgfi %r0, 4294967295 # encoding: [0xc2,0x04,0xff,0xff,0xff,0xff]
-#CHECK: slgfi %r15, 0 # encoding: [0xc2,0xf4,0x00,0x00,0x00,0x00]
-
- slgfi %r0, 0
- slgfi %r0, (1 << 32) - 1
- slgfi %r15, 0
diff --git a/test/MC/SystemZ/insn-slgfi-02.s b/test/MC/SystemZ/insn-slgfi-02.s
deleted file mode 100644
index 696408d377..0000000000
--- a/test/MC/SystemZ/insn-slgfi-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: slgfi %r0, -1
-#CHECK: error: invalid operand
-#CHECK: slgfi %r0, (1 << 32)
-
- slgfi %r0, -1
- slgfi %r0, (1 << 32)
diff --git a/test/MC/SystemZ/insn-slgfr-01.s b/test/MC/SystemZ/insn-slgfr-01.s
deleted file mode 100644
index 94c10edcd3..0000000000
--- a/test/MC/SystemZ/insn-slgfr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slgfr %r0, %r0 # encoding: [0xb9,0x1b,0x00,0x00]
-#CHECK: slgfr %r0, %r15 # encoding: [0xb9,0x1b,0x00,0x0f]
-#CHECK: slgfr %r15, %r0 # encoding: [0xb9,0x1b,0x00,0xf0]
-#CHECK: slgfr %r7, %r8 # encoding: [0xb9,0x1b,0x00,0x78]
-
- slgfr %r0,%r0
- slgfr %r0,%r15
- slgfr %r15,%r0
- slgfr %r7,%r8
diff --git a/test/MC/SystemZ/insn-slgr-01.s b/test/MC/SystemZ/insn-slgr-01.s
deleted file mode 100644
index 4d226be83e..0000000000
--- a/test/MC/SystemZ/insn-slgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slgr %r0, %r0 # encoding: [0xb9,0x0b,0x00,0x00]
-#CHECK: slgr %r0, %r15 # encoding: [0xb9,0x0b,0x00,0x0f]
-#CHECK: slgr %r15, %r0 # encoding: [0xb9,0x0b,0x00,0xf0]
-#CHECK: slgr %r7, %r8 # encoding: [0xb9,0x0b,0x00,0x78]
-
- slgr %r0,%r0
- slgr %r0,%r15
- slgr %r15,%r0
- slgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-sll-01.s b/test/MC/SystemZ/insn-sll-01.s
deleted file mode 100644
index 5bc112856d..0000000000
--- a/test/MC/SystemZ/insn-sll-01.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sll %r0, 0 # encoding: [0x89,0x00,0x00,0x00]
-#CHECK: sll %r7, 0 # encoding: [0x89,0x70,0x00,0x00]
-#CHECK: sll %r15, 0 # encoding: [0x89,0xf0,0x00,0x00]
-#CHECK: sll %r0, 4095 # encoding: [0x89,0x00,0x0f,0xff]
-#CHECK: sll %r0, 0(%r1) # encoding: [0x89,0x00,0x10,0x00]
-#CHECK: sll %r0, 0(%r15) # encoding: [0x89,0x00,0xf0,0x00]
-#CHECK: sll %r0, 4095(%r1) # encoding: [0x89,0x00,0x1f,0xff]
-#CHECK: sll %r0, 4095(%r15) # encoding: [0x89,0x00,0xff,0xff]
-
- sll %r0,0
- sll %r7,0
- sll %r15,0
- sll %r0,4095
- sll %r0,0(%r1)
- sll %r0,0(%r15)
- sll %r0,4095(%r1)
- sll %r0,4095(%r15)
diff --git a/test/MC/SystemZ/insn-sll-02.s b/test/MC/SystemZ/insn-sll-02.s
deleted file mode 100644
index 1b951be02c..0000000000
--- a/test/MC/SystemZ/insn-sll-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sll %r0,-1
-#CHECK: error: invalid operand
-#CHECK: sll %r0,4096
-#CHECK: error: %r0 used in an address
-#CHECK: sll %r0,0(%r0)
-#CHECK: error: invalid use of indexed addressing
-#CHECK: sll %r0,0(%r1,%r2)
-
- sll %r0,-1
- sll %r0,4096
- sll %r0,0(%r0)
- sll %r0,0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-sllg-01.s b/test/MC/SystemZ/insn-sllg-01.s
deleted file mode 100644
index 1b0f009467..0000000000
--- a/test/MC/SystemZ/insn-sllg-01.s
+++ /dev/null
@@ -1,27 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sllg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x0d]
-#CHECK: sllg %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x0d]
-#CHECK: sllg %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x0d]
-#CHECK: sllg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x0d]
-#CHECK: sllg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x0d]
-#CHECK: sllg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x0d]
-#CHECK: sllg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x0d]
-#CHECK: sllg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x0d]
-#CHECK: sllg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x0d]
-#CHECK: sllg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x0d]
-#CHECK: sllg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x0d]
-#CHECK: sllg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x0d]
-
- sllg %r0,%r0,0
- sllg %r15,%r1,0
- sllg %r1,%r15,0
- sllg %r15,%r15,0
- sllg %r0,%r0,-524288
- sllg %r0,%r0,-1
- sllg %r0,%r0,1
- sllg %r0,%r0,524287
- sllg %r0,%r0,0(%r1)
- sllg %r0,%r0,0(%r15)
- sllg %r0,%r0,524287(%r1)
- sllg %r0,%r0,524287(%r15)
diff --git a/test/MC/SystemZ/insn-sllg-02.s b/test/MC/SystemZ/insn-sllg-02.s
deleted file mode 100644
index 68c3d1da29..0000000000
--- a/test/MC/SystemZ/insn-sllg-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sllg %r0,%r0,-524289
-#CHECK: error: invalid operand
-#CHECK: sllg %r0,%r0,524288
-#CHECK: error: %r0 used in an address
-#CHECK: sllg %r0,%r0,0(%r0)
-#CHECK: error: invalid use of indexed addressing
-#CHECK: sllg %r0,%r0,0(%r1,%r2)
-
- sllg %r0,%r0,-524289
- sllg %r0,%r0,524288
- sllg %r0,%r0,0(%r0)
- sllg %r0,%r0,0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-slr-01.s b/test/MC/SystemZ/insn-slr-01.s
deleted file mode 100644
index c142407cff..0000000000
--- a/test/MC/SystemZ/insn-slr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: slr %r0, %r0 # encoding: [0x1f,0x00]
-#CHECK: slr %r0, %r15 # encoding: [0x1f,0x0f]
-#CHECK: slr %r15, %r0 # encoding: [0x1f,0xf0]
-#CHECK: slr %r7, %r8 # encoding: [0x1f,0x78]
-
- slr %r0,%r0
- slr %r0,%r15
- slr %r15,%r0
- slr %r7,%r8
diff --git a/test/MC/SystemZ/insn-sly-01.s b/test/MC/SystemZ/insn-sly-01.s
deleted file mode 100644
index 59d2907a4d..0000000000
--- a/test/MC/SystemZ/insn-sly-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: sly %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x5f]
-#CHECK: sly %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x5f]
-#CHECK: sly %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x5f]
-#CHECK: sly %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x5f]
-#CHECK: sly %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x5f]
-#CHECK: sly %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x5f]
-#CHECK: sly %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x5f]
-
- sly %r0, -524288
- sly %r0, -1
- sly %r0, 0
- sly %r0, 1
- sly %r0, 524287
- sly %r0, 0(%r1)
- sly %r0, 0(%r15)
- sly %r0, 524287(%r1,%r15)
- sly %r0, 524287(%r15,%r1)
- sly %r15, 0
diff --git a/test/MC/SystemZ/insn-sly-02.s b/test/MC/SystemZ/insn-sly-02.s
deleted file mode 100644
index 9abd53e1ab..0000000000
--- a/test/MC/SystemZ/insn-sly-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sly %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: sly %r0, 524288
-
- sly %r0, -524289
- sly %r0, 524288
diff --git a/test/MC/SystemZ/insn-sqdb-01.s b/test/MC/SystemZ/insn-sqdb-01.s
deleted file mode 100644
index b79aae1444..0000000000
--- a/test/MC/SystemZ/insn-sqdb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sqdb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x15]
-#CHECK: sqdb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x15]
-#CHECK: sqdb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x15]
-#CHECK: sqdb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x15]
-#CHECK: sqdb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x15]
-#CHECK: sqdb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x15]
-#CHECK: sqdb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x15]
-
- sqdb %f0, 0
- sqdb %f0, 4095
- sqdb %f0, 0(%r1)
- sqdb %f0, 0(%r15)
- sqdb %f0, 4095(%r1,%r15)
- sqdb %f0, 4095(%r15,%r1)
- sqdb %f15, 0
diff --git a/test/MC/SystemZ/insn-sqdb-02.s b/test/MC/SystemZ/insn-sqdb-02.s
deleted file mode 100644
index 68df267770..0000000000
--- a/test/MC/SystemZ/insn-sqdb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sqdb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: sqdb %f0, 4096
-
- sqdb %f0, -1
- sqdb %f0, 4096
diff --git a/test/MC/SystemZ/insn-sqdbr-01.s b/test/MC/SystemZ/insn-sqdbr-01.s
deleted file mode 100644
index d66415fa05..0000000000
--- a/test/MC/SystemZ/insn-sqdbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sqdbr %f0, %f0 # encoding: [0xb3,0x15,0x00,0x00]
-#CHECK: sqdbr %f0, %f15 # encoding: [0xb3,0x15,0x00,0x0f]
-#CHECK: sqdbr %f7, %f8 # encoding: [0xb3,0x15,0x00,0x78]
-#CHECK: sqdbr %f15, %f0 # encoding: [0xb3,0x15,0x00,0xf0]
-
- sqdbr %f0, %f0
- sqdbr %f0, %f15
- sqdbr %f7, %f8
- sqdbr %f15, %f0
diff --git a/test/MC/SystemZ/insn-sqeb-01.s b/test/MC/SystemZ/insn-sqeb-01.s
deleted file mode 100644
index 60f6e90635..0000000000
--- a/test/MC/SystemZ/insn-sqeb-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sqeb %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x14]
-#CHECK: sqeb %f0, 4095 # encoding: [0xed,0x00,0x0f,0xff,0x00,0x14]
-#CHECK: sqeb %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x14]
-#CHECK: sqeb %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x14]
-#CHECK: sqeb %f0, 4095(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x00,0x14]
-#CHECK: sqeb %f0, 4095(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x00,0x14]
-#CHECK: sqeb %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x14]
-
- sqeb %f0, 0
- sqeb %f0, 4095
- sqeb %f0, 0(%r1)
- sqeb %f0, 0(%r15)
- sqeb %f0, 4095(%r1,%r15)
- sqeb %f0, 4095(%r15,%r1)
- sqeb %f15, 0
diff --git a/test/MC/SystemZ/insn-sqeb-02.s b/test/MC/SystemZ/insn-sqeb-02.s
deleted file mode 100644
index efb09fcfbc..0000000000
--- a/test/MC/SystemZ/insn-sqeb-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sqeb %f0, -1
-#CHECK: error: invalid operand
-#CHECK: sqeb %f0, 4096
-
- sqeb %f0, -1
- sqeb %f0, 4096
diff --git a/test/MC/SystemZ/insn-sqebr-01.s b/test/MC/SystemZ/insn-sqebr-01.s
deleted file mode 100644
index 2d13dbeb26..0000000000
--- a/test/MC/SystemZ/insn-sqebr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sqebr %f0, %f0 # encoding: [0xb3,0x14,0x00,0x00]
-#CHECK: sqebr %f0, %f15 # encoding: [0xb3,0x14,0x00,0x0f]
-#CHECK: sqebr %f7, %f8 # encoding: [0xb3,0x14,0x00,0x78]
-#CHECK: sqebr %f15, %f0 # encoding: [0xb3,0x14,0x00,0xf0]
-
- sqebr %f0, %f0
- sqebr %f0, %f15
- sqebr %f7, %f8
- sqebr %f15, %f0
diff --git a/test/MC/SystemZ/insn-sqxbr-01.s b/test/MC/SystemZ/insn-sqxbr-01.s
deleted file mode 100644
index 78ba908d5a..0000000000
--- a/test/MC/SystemZ/insn-sqxbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sqxbr %f0, %f0 # encoding: [0xb3,0x16,0x00,0x00]
-#CHECK: sqxbr %f0, %f13 # encoding: [0xb3,0x16,0x00,0x0d]
-#CHECK: sqxbr %f8, %f8 # encoding: [0xb3,0x16,0x00,0x88]
-#CHECK: sqxbr %f13, %f0 # encoding: [0xb3,0x16,0x00,0xd0]
-
- sqxbr %f0, %f0
- sqxbr %f0, %f13
- sqxbr %f8, %f8
- sqxbr %f13, %f0
diff --git a/test/MC/SystemZ/insn-sqxbr-02.s b/test/MC/SystemZ/insn-sqxbr-02.s
deleted file mode 100644
index e51e552fb7..0000000000
--- a/test/MC/SystemZ/insn-sqxbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: sqxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: sqxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: sqxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: sqxbr %f14, %f0
-
- sqxbr %f0, %f2
- sqxbr %f0, %f14
- sqxbr %f2, %f0
- sqxbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-sr-01.s b/test/MC/SystemZ/insn-sr-01.s
deleted file mode 100644
index 856bef5eac..0000000000
--- a/test/MC/SystemZ/insn-sr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sr %r0, %r0 # encoding: [0x1b,0x00]
-#CHECK: sr %r0, %r15 # encoding: [0x1b,0x0f]
-#CHECK: sr %r15, %r0 # encoding: [0x1b,0xf0]
-#CHECK: sr %r7, %r8 # encoding: [0x1b,0x78]
-
- sr %r0,%r0
- sr %r0,%r15
- sr %r15,%r0
- sr %r7,%r8
diff --git a/test/MC/SystemZ/insn-sra-01.s b/test/MC/SystemZ/insn-sra-01.s
deleted file mode 100644
index fcdaf5de16..0000000000
--- a/test/MC/SystemZ/insn-sra-01.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sra %r0, 0 # encoding: [0x8a,0x00,0x00,0x00]
-#CHECK: sra %r7, 0 # encoding: [0x8a,0x70,0x00,0x00]
-#CHECK: sra %r15, 0 # encoding: [0x8a,0xf0,0x00,0x00]
-#CHECK: sra %r0, 4095 # encoding: [0x8a,0x00,0x0f,0xff]
-#CHECK: sra %r0, 0(%r1) # encoding: [0x8a,0x00,0x10,0x00]
-#CHECK: sra %r0, 0(%r15) # encoding: [0x8a,0x00,0xf0,0x00]
-#CHECK: sra %r0, 4095(%r1) # encoding: [0x8a,0x00,0x1f,0xff]
-#CHECK: sra %r0, 4095(%r15) # encoding: [0x8a,0x00,0xff,0xff]
-
- sra %r0,0
- sra %r7,0
- sra %r15,0
- sra %r0,4095
- sra %r0,0(%r1)
- sra %r0,0(%r15)
- sra %r0,4095(%r1)
- sra %r0,4095(%r15)
diff --git a/test/MC/SystemZ/insn-sra-02.s b/test/MC/SystemZ/insn-sra-02.s
deleted file mode 100644
index 7a84f17743..0000000000
--- a/test/MC/SystemZ/insn-sra-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sra %r0,-1
-#CHECK: error: invalid operand
-#CHECK: sra %r0,4096
-#CHECK: error: %r0 used in an address
-#CHECK: sra %r0,0(%r0)
-#CHECK: error: invalid use of indexed addressing
-#CHECK: sra %r0,0(%r1,%r2)
-
- sra %r0,-1
- sra %r0,4096
- sra %r0,0(%r0)
- sra %r0,0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-srag-01.s b/test/MC/SystemZ/insn-srag-01.s
deleted file mode 100644
index 9271db237d..0000000000
--- a/test/MC/SystemZ/insn-srag-01.s
+++ /dev/null
@@ -1,27 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: srag %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x0a]
-#CHECK: srag %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x0a]
-#CHECK: srag %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x0a]
-#CHECK: srag %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x0a]
-#CHECK: srag %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x0a]
-#CHECK: srag %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x0a]
-#CHECK: srag %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x0a]
-#CHECK: srag %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x0a]
-#CHECK: srag %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x0a]
-#CHECK: srag %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x0a]
-#CHECK: srag %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x0a]
-#CHECK: srag %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x0a]
-
- srag %r0,%r0,0
- srag %r15,%r1,0
- srag %r1,%r15,0
- srag %r15,%r15,0
- srag %r0,%r0,-524288
- srag %r0,%r0,-1
- srag %r0,%r0,1
- srag %r0,%r0,524287
- srag %r0,%r0,0(%r1)
- srag %r0,%r0,0(%r15)
- srag %r0,%r0,524287(%r1)
- srag %r0,%r0,524287(%r15)
diff --git a/test/MC/SystemZ/insn-srag-02.s b/test/MC/SystemZ/insn-srag-02.s
deleted file mode 100644
index 7413cbaf9f..0000000000
--- a/test/MC/SystemZ/insn-srag-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: srag %r0,%r0,-524289
-#CHECK: error: invalid operand
-#CHECK: srag %r0,%r0,524288
-#CHECK: error: %r0 used in an address
-#CHECK: srag %r0,%r0,0(%r0)
-#CHECK: error: invalid use of indexed addressing
-#CHECK: srag %r0,%r0,0(%r1,%r2)
-
- srag %r0,%r0,-524289
- srag %r0,%r0,524288
- srag %r0,%r0,0(%r0)
- srag %r0,%r0,0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-srl-01.s b/test/MC/SystemZ/insn-srl-01.s
deleted file mode 100644
index a3a5df8a2b..0000000000
--- a/test/MC/SystemZ/insn-srl-01.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: srl %r0, 4095 # encoding: [0x88,0x00,0x0f,0xff]
-#CHECK: srl %r0, 0(%r1) # encoding: [0x88,0x00,0x10,0x00]
-#CHECK: srl %r0, 0(%r15) # encoding: [0x88,0x00,0xf0,0x00]
-#CHECK: srl %r0, 4095(%r1) # encoding: [0x88,0x00,0x1f,0xff]
-#CHECK: srl %r0, 4095(%r15) # encoding: [0x88,0x00,0xff,0xff]
-
- srl %r0,0
- srl %r7,0
- srl %r15,0
- srl %r0,4095
- srl %r0,0(%r1)
- srl %r0,0(%r15)
- srl %r0,4095(%r1)
- srl %r0,4095(%r15)
diff --git a/test/MC/SystemZ/insn-srl-02.s b/test/MC/SystemZ/insn-srl-02.s
deleted file mode 100644
index 212d16bd8d..0000000000
--- a/test/MC/SystemZ/insn-srl-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: srl %r0,-1
-#CHECK: error: invalid operand
-#CHECK: srl %r0,4096
-#CHECK: error: %r0 used in an address
-#CHECK: srl %r0,0(%r0)
-#CHECK: error: invalid use of indexed addressing
-#CHECK: srl %r0,0(%r1,%r2)
-
- srl %r0,-1
- srl %r0,4096
- srl %r0,0(%r0)
- srl %r0,0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-srlg-01.s b/test/MC/SystemZ/insn-srlg-01.s
deleted file mode 100644
index 0087fefd92..0000000000
--- a/test/MC/SystemZ/insn-srlg-01.s
+++ /dev/null
@@ -1,27 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: srlg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x0c]
-#CHECK: srlg %r15, %r1, 0 # encoding: [0xeb,0xf1,0x00,0x00,0x00,0x0c]
-#CHECK: srlg %r1, %r15, 0 # encoding: [0xeb,0x1f,0x00,0x00,0x00,0x0c]
-#CHECK: srlg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x0c]
-#CHECK: srlg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x0c]
-#CHECK: srlg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x0c]
-#CHECK: srlg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x0c]
-#CHECK: srlg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x0c]
-#CHECK: srlg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x0c]
-#CHECK: srlg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x0c]
-#CHECK: srlg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x0c]
-#CHECK: srlg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x0c]
-
- srlg %r0,%r0,0
- srlg %r15,%r1,0
- srlg %r1,%r15,0
- srlg %r15,%r15,0
- srlg %r0,%r0,-524288
- srlg %r0,%r0,-1
- srlg %r0,%r0,1
- srlg %r0,%r0,524287
- srlg %r0,%r0,0(%r1)
- srlg %r0,%r0,0(%r15)
- srlg %r0,%r0,524287(%r1)
- srlg %r0,%r0,524287(%r15)
diff --git a/test/MC/SystemZ/insn-srlg-02.s b/test/MC/SystemZ/insn-srlg-02.s
deleted file mode 100644
index 1e24d0e407..0000000000
--- a/test/MC/SystemZ/insn-srlg-02.s
+++ /dev/null
@@ -1,16 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: srlg %r0,%r0,-524289
-#CHECK: error: invalid operand
-#CHECK: srlg %r0,%r0,524288
-#CHECK: error: %r0 used in an address
-#CHECK: srlg %r0,%r0,0(%r0)
-#CHECK: error: invalid use of indexed addressing
-#CHECK: srlg %r0,%r0,0(%r1,%r2)
-
- srlg %r0,%r0,-524289
- srlg %r0,%r0,524288
- srlg %r0,%r0,0(%r0)
- srlg %r0,%r0,0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-st-01.s b/test/MC/SystemZ/insn-st-01.s
deleted file mode 100644
index 0b5fdb682c..0000000000
--- a/test/MC/SystemZ/insn-st-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: st %r0, 0(%r15) # encoding: [0x50,0x00,0xf0,0x00]
-#CHECK: st %r0, 4095(%r1,%r15) # encoding: [0x50,0x01,0xff,0xff]
-#CHECK: st %r0, 4095(%r15,%r1) # encoding: [0x50,0x0f,0x1f,0xff]
-#CHECK: st %r15, 0 # encoding: [0x50,0xf0,0x00,0x00]
-
- st %r0, 0
- st %r0, 4095
- st %r0, 0(%r1)
- st %r0, 0(%r15)
- st %r0, 4095(%r1,%r15)
- st %r0, 4095(%r15,%r1)
- st %r15, 0
diff --git a/test/MC/SystemZ/insn-st-02.s b/test/MC/SystemZ/insn-st-02.s
deleted file mode 100644
index 63e547a92b..0000000000
--- a/test/MC/SystemZ/insn-st-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: st %r0, -1
-#CHECK: error: invalid operand
-#CHECK: st %r0, 4096
-
- st %r0, -1
- st %r0, 4096
diff --git a/test/MC/SystemZ/insn-stc-01.s b/test/MC/SystemZ/insn-stc-01.s
deleted file mode 100644
index 563f8914b6..0000000000
--- a/test/MC/SystemZ/insn-stc-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: stc %r0, 0 # encoding: [0x42,0x00,0x00,0x00]
-#CHECK: stc %r0, 4095 # encoding: [0x42,0x00,0x0f,0xff]
-#CHECK: stc %r0, 0(%r1) # encoding: [0x42,0x00,0x10,0x00]
-#CHECK: stc %r0, 0(%r15) # encoding: [0x42,0x00,0xf0,0x00]
-#CHECK: stc %r0, 4095(%r1,%r15) # encoding: [0x42,0x01,0xff,0xff]
-#CHECK: stc %r0, 4095(%r15,%r1) # encoding: [0x42,0x0f,0x1f,0xff]
-#CHECK: stc %r15, 0 # encoding: [0x42,0xf0,0x00,0x00]
-
- stc %r0, 0
- stc %r0, 4095
- stc %r0, 0(%r1)
- stc %r0, 0(%r15)
- stc %r0, 4095(%r1,%r15)
- stc %r0, 4095(%r15,%r1)
- stc %r15, 0
diff --git a/test/MC/SystemZ/insn-stc-02.s b/test/MC/SystemZ/insn-stc-02.s
deleted file mode 100644
index aa7dcb29df..0000000000
--- a/test/MC/SystemZ/insn-stc-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: stc %r0, -1
-#CHECK: error: invalid operand
-#CHECK: stc %r0, 4096
-
- stc %r0, -1
- stc %r0, 4096
diff --git a/test/MC/SystemZ/insn-stcy-01.s b/test/MC/SystemZ/insn-stcy-01.s
deleted file mode 100644
index acc7ac5996..0000000000
--- a/test/MC/SystemZ/insn-stcy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: stcy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x72]
-#CHECK: stcy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x72]
-#CHECK: stcy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x72]
-#CHECK: stcy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x72]
-#CHECK: stcy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x72]
-#CHECK: stcy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x72]
-#CHECK: stcy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x72]
-#CHECK: stcy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x72]
-#CHECK: stcy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x72]
-#CHECK: stcy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x72]
-
- stcy %r0, -524288
- stcy %r0, -1
- stcy %r0, 0
- stcy %r0, 1
- stcy %r0, 524287
- stcy %r0, 0(%r1)
- stcy %r0, 0(%r15)
- stcy %r0, 524287(%r1,%r15)
- stcy %r0, 524287(%r15,%r1)
- stcy %r15, 0
diff --git a/test/MC/SystemZ/insn-stcy-02.s b/test/MC/SystemZ/insn-stcy-02.s
deleted file mode 100644
index cbd7f7abde..0000000000
--- a/test/MC/SystemZ/insn-stcy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: stcy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: stcy %r0, 524288
-
- stcy %r0, -524289
- stcy %r0, 524288
diff --git a/test/MC/SystemZ/insn-std-01.s b/test/MC/SystemZ/insn-std-01.s
deleted file mode 100644
index 6867df8bb1..0000000000
--- a/test/MC/SystemZ/insn-std-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: std %f0, 0 # encoding: [0x60,0x00,0x00,0x00]
-#CHECK: std %f0, 4095 # encoding: [0x60,0x00,0x0f,0xff]
-#CHECK: std %f0, 0(%r1) # encoding: [0x60,0x00,0x10,0x00]
-#CHECK: std %f0, 0(%r15) # encoding: [0x60,0x00,0xf0,0x00]
-#CHECK: std %f0, 4095(%r1,%r15) # encoding: [0x60,0x01,0xff,0xff]
-#CHECK: std %f0, 4095(%r15,%r1) # encoding: [0x60,0x0f,0x1f,0xff]
-#CHECK: std %f15, 0 # encoding: [0x60,0xf0,0x00,0x00]
-
- std %f0, 0
- std %f0, 4095
- std %f0, 0(%r1)
- std %f0, 0(%r15)
- std %f0, 4095(%r1,%r15)
- std %f0, 4095(%r15,%r1)
- std %f15, 0
diff --git a/test/MC/SystemZ/insn-std-02.s b/test/MC/SystemZ/insn-std-02.s
deleted file mode 100644
index 62bb9eb7fa..0000000000
--- a/test/MC/SystemZ/insn-std-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: std %f0, -1
-#CHECK: error: invalid operand
-#CHECK: std %f0, 4096
-
- std %f0, -1
- std %f0, 4096
diff --git a/test/MC/SystemZ/insn-stdy-01.s b/test/MC/SystemZ/insn-stdy-01.s
deleted file mode 100644
index 1ae9a7d3d0..0000000000
--- a/test/MC/SystemZ/insn-stdy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: stdy %f0, -524288 # encoding: [0xed,0x00,0x00,0x00,0x80,0x67]
-#CHECK: stdy %f0, -1 # encoding: [0xed,0x00,0x0f,0xff,0xff,0x67]
-#CHECK: stdy %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x67]
-#CHECK: stdy %f0, 1 # encoding: [0xed,0x00,0x00,0x01,0x00,0x67]
-#CHECK: stdy %f0, 524287 # encoding: [0xed,0x00,0x0f,0xff,0x7f,0x67]
-#CHECK: stdy %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x67]
-#CHECK: stdy %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x67]
-#CHECK: stdy %f0, 524287(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x7f,0x67]
-#CHECK: stdy %f0, 524287(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x7f,0x67]
-#CHECK: stdy %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x67]
-
- stdy %f0, -524288
- stdy %f0, -1
- stdy %f0, 0
- stdy %f0, 1
- stdy %f0, 524287
- stdy %f0, 0(%r1)
- stdy %f0, 0(%r15)
- stdy %f0, 524287(%r1,%r15)
- stdy %f0, 524287(%r15,%r1)
- stdy %f15, 0
diff --git a/test/MC/SystemZ/insn-stdy-02.s b/test/MC/SystemZ/insn-stdy-02.s
deleted file mode 100644
index f9a09a59f1..0000000000
--- a/test/MC/SystemZ/insn-stdy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: stdy %f0, -524289
-#CHECK: error: invalid operand
-#CHECK: stdy %f0, 524288
-
- stdy %f0, -524289
- stdy %f0, 524288
diff --git a/test/MC/SystemZ/insn-ste-01.s b/test/MC/SystemZ/insn-ste-01.s
deleted file mode 100644
index 8e245df985..0000000000
--- a/test/MC/SystemZ/insn-ste-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ste %f0, 0 # encoding: [0x70,0x00,0x00,0x00]
-#CHECK: ste %f0, 4095 # encoding: [0x70,0x00,0x0f,0xff]
-#CHECK: ste %f0, 0(%r1) # encoding: [0x70,0x00,0x10,0x00]
-#CHECK: ste %f0, 0(%r15) # encoding: [0x70,0x00,0xf0,0x00]
-#CHECK: ste %f0, 4095(%r1,%r15) # encoding: [0x70,0x01,0xff,0xff]
-#CHECK: ste %f0, 4095(%r15,%r1) # encoding: [0x70,0x0f,0x1f,0xff]
-#CHECK: ste %f15, 0 # encoding: [0x70,0xf0,0x00,0x00]
-
- ste %f0, 0
- ste %f0, 4095
- ste %f0, 0(%r1)
- ste %f0, 0(%r15)
- ste %f0, 4095(%r1,%r15)
- ste %f0, 4095(%r15,%r1)
- ste %f15, 0
diff --git a/test/MC/SystemZ/insn-ste-02.s b/test/MC/SystemZ/insn-ste-02.s
deleted file mode 100644
index acc50eada8..0000000000
--- a/test/MC/SystemZ/insn-ste-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: ste %f0, -1
-#CHECK: error: invalid operand
-#CHECK: ste %f0, 4096
-
- ste %f0, -1
- ste %f0, 4096
diff --git a/test/MC/SystemZ/insn-stey-01.s b/test/MC/SystemZ/insn-stey-01.s
deleted file mode 100644
index 1f82593650..0000000000
--- a/test/MC/SystemZ/insn-stey-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: stey %f0, -524288 # encoding: [0xed,0x00,0x00,0x00,0x80,0x66]
-#CHECK: stey %f0, -1 # encoding: [0xed,0x00,0x0f,0xff,0xff,0x66]
-#CHECK: stey %f0, 0 # encoding: [0xed,0x00,0x00,0x00,0x00,0x66]
-#CHECK: stey %f0, 1 # encoding: [0xed,0x00,0x00,0x01,0x00,0x66]
-#CHECK: stey %f0, 524287 # encoding: [0xed,0x00,0x0f,0xff,0x7f,0x66]
-#CHECK: stey %f0, 0(%r1) # encoding: [0xed,0x00,0x10,0x00,0x00,0x66]
-#CHECK: stey %f0, 0(%r15) # encoding: [0xed,0x00,0xf0,0x00,0x00,0x66]
-#CHECK: stey %f0, 524287(%r1,%r15) # encoding: [0xed,0x01,0xff,0xff,0x7f,0x66]
-#CHECK: stey %f0, 524287(%r15,%r1) # encoding: [0xed,0x0f,0x1f,0xff,0x7f,0x66]
-#CHECK: stey %f15, 0 # encoding: [0xed,0xf0,0x00,0x00,0x00,0x66]
-
- stey %f0, -524288
- stey %f0, -1
- stey %f0, 0
- stey %f0, 1
- stey %f0, 524287
- stey %f0, 0(%r1)
- stey %f0, 0(%r15)
- stey %f0, 524287(%r1,%r15)
- stey %f0, 524287(%r15,%r1)
- stey %f15, 0
diff --git a/test/MC/SystemZ/insn-stey-02.s b/test/MC/SystemZ/insn-stey-02.s
deleted file mode 100644
index 203b016e31..0000000000
--- a/test/MC/SystemZ/insn-stey-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: stey %f0, -524289
-#CHECK: error: invalid operand
-#CHECK: stey %f0, 524288
-
- stey %f0, -524289
- stey %f0, 524288
diff --git a/test/MC/SystemZ/insn-stg-01.s b/test/MC/SystemZ/insn-stg-01.s
deleted file mode 100644
index e8508d9f4e..0000000000
--- a/test/MC/SystemZ/insn-stg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: stg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x24]
-#CHECK: stg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x24]
-#CHECK: stg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x24]
-#CHECK: stg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x24]
-#CHECK: stg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x24]
-#CHECK: stg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x24]
-#CHECK: stg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x24]
-#CHECK: stg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x24]
-#CHECK: stg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x24]
-#CHECK: stg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x24]
-
- stg %r0, -524288
- stg %r0, -1
- stg %r0, 0
- stg %r0, 1
- stg %r0, 524287
- stg %r0, 0(%r1)
- stg %r0, 0(%r15)
- stg %r0, 524287(%r1,%r15)
- stg %r0, 524287(%r15,%r1)
- stg %r15, 0
diff --git a/test/MC/SystemZ/insn-stg-02.s b/test/MC/SystemZ/insn-stg-02.s
deleted file mode 100644
index 1214ad1998..0000000000
--- a/test/MC/SystemZ/insn-stg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: stg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: stg %r0, 524288
-
- stg %r0, -524289
- stg %r0, 524288
diff --git a/test/MC/SystemZ/insn-stgrl-01.s b/test/MC/SystemZ/insn-stgrl-01.s
deleted file mode 100644
index 729b01dc11..0000000000
--- a/test/MC/SystemZ/insn-stgrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: stgrl %r0, 2864434397 # encoding: [0xc4,0x0b,0x55,0x5d,0xe6,0x6e]
-#CHECK: stgrl %r15, 2864434397 # encoding: [0xc4,0xfb,0x55,0x5d,0xe6,0x6e]
-
- stgrl %r0,0xaabbccdd
- stgrl %r15,0xaabbccdd
-
-#CHECK: stgrl %r0, foo # encoding: [0xc4,0x0b,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: stgrl %r15, foo # encoding: [0xc4,0xfb,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- stgrl %r0,foo
- stgrl %r15,foo
-
-#CHECK: stgrl %r3, bar+100 # encoding: [0xc4,0x3b,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: stgrl %r4, bar+100 # encoding: [0xc4,0x4b,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- stgrl %r3,bar+100
- stgrl %r4,bar+100
-
-#CHECK: stgrl %r7, frob@PLT # encoding: [0xc4,0x7b,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: stgrl %r8, frob@PLT # encoding: [0xc4,0x8b,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- stgrl %r7,frob@PLT
- stgrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-sth-01.s b/test/MC/SystemZ/insn-sth-01.s
deleted file mode 100644
index 0dabe345b5..0000000000
--- a/test/MC/SystemZ/insn-sth-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sth %r0, 0 # encoding: [0x40,0x00,0x00,0x00]
-#CHECK: sth %r0, 4095 # encoding: [0x40,0x00,0x0f,0xff]
-#CHECK: sth %r0, 0(%r1) # encoding: [0x40,0x00,0x10,0x00]
-#CHECK: sth %r0, 0(%r15) # encoding: [0x40,0x00,0xf0,0x00]
-#CHECK: sth %r0, 4095(%r1,%r15) # encoding: [0x40,0x01,0xff,0xff]
-#CHECK: sth %r0, 4095(%r15,%r1) # encoding: [0x40,0x0f,0x1f,0xff]
-#CHECK: sth %r15, 0 # encoding: [0x40,0xf0,0x00,0x00]
-
- sth %r0, 0
- sth %r0, 4095
- sth %r0, 0(%r1)
- sth %r0, 0(%r15)
- sth %r0, 4095(%r1,%r15)
- sth %r0, 4095(%r15,%r1)
- sth %r15, 0
diff --git a/test/MC/SystemZ/insn-sth-02.s b/test/MC/SystemZ/insn-sth-02.s
deleted file mode 100644
index e73c28917b..0000000000
--- a/test/MC/SystemZ/insn-sth-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sth %r0, -1
-#CHECK: error: invalid operand
-#CHECK: sth %r0, 4096
-
- sth %r0, -1
- sth %r0, 4096
diff --git a/test/MC/SystemZ/insn-sthrl-01.s b/test/MC/SystemZ/insn-sthrl-01.s
deleted file mode 100644
index 0bcdbd4bc8..0000000000
--- a/test/MC/SystemZ/insn-sthrl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sthrl %r0, 2864434397 # encoding: [0xc4,0x07,0x55,0x5d,0xe6,0x6e]
-#CHECK: sthrl %r15, 2864434397 # encoding: [0xc4,0xf7,0x55,0x5d,0xe6,0x6e]
-
- sthrl %r0,0xaabbccdd
- sthrl %r15,0xaabbccdd
-
-#CHECK: sthrl %r0, foo # encoding: [0xc4,0x07,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: sthrl %r15, foo # encoding: [0xc4,0xf7,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- sthrl %r0,foo
- sthrl %r15,foo
-
-#CHECK: sthrl %r3, bar+100 # encoding: [0xc4,0x37,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: sthrl %r4, bar+100 # encoding: [0xc4,0x47,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- sthrl %r3,bar+100
- sthrl %r4,bar+100
-
-#CHECK: sthrl %r7, frob@PLT # encoding: [0xc4,0x77,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: sthrl %r8, frob@PLT # encoding: [0xc4,0x87,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- sthrl %r7,frob@PLT
- sthrl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-sthy-01.s b/test/MC/SystemZ/insn-sthy-01.s
deleted file mode 100644
index 259c5e1c82..0000000000
--- a/test/MC/SystemZ/insn-sthy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sthy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x70]
-#CHECK: sthy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x70]
-#CHECK: sthy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x70]
-#CHECK: sthy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x70]
-#CHECK: sthy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x70]
-#CHECK: sthy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x70]
-#CHECK: sthy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x70]
-#CHECK: sthy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x70]
-#CHECK: sthy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x70]
-#CHECK: sthy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x70]
-
- sthy %r0, -524288
- sthy %r0, -1
- sthy %r0, 0
- sthy %r0, 1
- sthy %r0, 524287
- sthy %r0, 0(%r1)
- sthy %r0, 0(%r15)
- sthy %r0, 524287(%r1,%r15)
- sthy %r0, 524287(%r15,%r1)
- sthy %r15, 0
diff --git a/test/MC/SystemZ/insn-sthy-02.s b/test/MC/SystemZ/insn-sthy-02.s
deleted file mode 100644
index 0ad547b4b8..0000000000
--- a/test/MC/SystemZ/insn-sthy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sthy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: sthy %r0, 524288
-
- sthy %r0, -524289
- sthy %r0, 524288
diff --git a/test/MC/SystemZ/insn-stmg-01.s b/test/MC/SystemZ/insn-stmg-01.s
deleted file mode 100644
index d189014422..0000000000
--- a/test/MC/SystemZ/insn-stmg-01.s
+++ /dev/null
@@ -1,29 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: stmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x24]
-#CHECK: stmg %r0, %r15, 0 # encoding: [0xeb,0x0f,0x00,0x00,0x00,0x24]
-#CHECK: stmg %r14, %r15, 0 # encoding: [0xeb,0xef,0x00,0x00,0x00,0x24]
-#CHECK: stmg %r15, %r15, 0 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x24]
-#CHECK: stmg %r0, %r0, -524288 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x24]
-#CHECK: stmg %r0, %r0, -1 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x24]
-#CHECK: stmg %r0, %r0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x24]
-#CHECK: stmg %r0, %r0, 1 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x24]
-#CHECK: stmg %r0, %r0, 524287 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x24]
-#CHECK: stmg %r0, %r0, 0(%r1) # encoding: [0xeb,0x00,0x10,0x00,0x00,0x24]
-#CHECK: stmg %r0, %r0, 0(%r15) # encoding: [0xeb,0x00,0xf0,0x00,0x00,0x24]
-#CHECK: stmg %r0, %r0, 524287(%r1) # encoding: [0xeb,0x00,0x1f,0xff,0x7f,0x24]
-#CHECK: stmg %r0, %r0, 524287(%r15) # encoding: [0xeb,0x00,0xff,0xff,0x7f,0x24]
-
- stmg %r0,%r0,0
- stmg %r0,%r15,0
- stmg %r14,%r15,0
- stmg %r15,%r15,0
- stmg %r0,%r0,-524288
- stmg %r0,%r0,-1
- stmg %r0,%r0,0
- stmg %r0,%r0,1
- stmg %r0,%r0,524287
- stmg %r0,%r0,0(%r1)
- stmg %r0,%r0,0(%r15)
- stmg %r0,%r0,524287(%r1)
- stmg %r0,%r0,524287(%r15)
diff --git a/test/MC/SystemZ/insn-stmg-02.s b/test/MC/SystemZ/insn-stmg-02.s
deleted file mode 100644
index 342c38aec9..0000000000
--- a/test/MC/SystemZ/insn-stmg-02.s
+++ /dev/null
@@ -1,13 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: stmg %r0, %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: stmg %r0, %r0, 524288
-#CHECK: error: invalid use of indexed addressing
-#CHECK: stmg %r0, %r0, 0(%r1,%r2)
-
- stmg %r0, %r0, -524289
- stmg %r0, %r0, 524288
- stmg %r0, %r0, 0(%r1,%r2)
diff --git a/test/MC/SystemZ/insn-strl-01.s b/test/MC/SystemZ/insn-strl-01.s
deleted file mode 100644
index 84bd41f4c0..0000000000
--- a/test/MC/SystemZ/insn-strl-01.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: strl %r0, 2864434397 # encoding: [0xc4,0x0f,0x55,0x5d,0xe6,0x6e]
-#CHECK: strl %r15, 2864434397 # encoding: [0xc4,0xff,0x55,0x5d,0xe6,0x6e]
-
- strl %r0,0xaabbccdd
- strl %r15,0xaabbccdd
-
-#CHECK: strl %r0, foo # encoding: [0xc4,0x0f,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-#CHECK: strl %r15, foo # encoding: [0xc4,0xff,A,A,A,A]
-# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
-
- strl %r0,foo
- strl %r15,foo
-
-#CHECK: strl %r3, bar+100 # encoding: [0xc4,0x3f,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-#CHECK: strl %r4, bar+100 # encoding: [0xc4,0x4f,A,A,A,A]
-# fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
-
- strl %r3,bar+100
- strl %r4,bar+100
-
-#CHECK: strl %r7, frob@PLT # encoding: [0xc4,0x7f,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-#CHECK: strl %r8, frob@PLT # encoding: [0xc4,0x8f,A,A,A,A]
-# fixup A - offset: 2, value: frob@PLT+2, kind: FK_390_PC32DBL
-
- strl %r7,frob@PLT
- strl %r8,frob@PLT
diff --git a/test/MC/SystemZ/insn-strv-01.s b/test/MC/SystemZ/insn-strv-01.s
deleted file mode 100644
index 6a818a8b9e..0000000000
--- a/test/MC/SystemZ/insn-strv-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: strv %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x3e]
-#CHECK: strv %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x3e]
-#CHECK: strv %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x3e]
-#CHECK: strv %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x3e]
-#CHECK: strv %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x3e]
-#CHECK: strv %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x3e]
-#CHECK: strv %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x3e]
-#CHECK: strv %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x3e]
-#CHECK: strv %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x3e]
-#CHECK: strv %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x3e]
-
- strv %r0,-524288
- strv %r0,-1
- strv %r0,0
- strv %r0,1
- strv %r0,524287
- strv %r0,0(%r1)
- strv %r0,0(%r15)
- strv %r0,524287(%r1,%r15)
- strv %r0,524287(%r15,%r1)
- strv %r15,0
diff --git a/test/MC/SystemZ/insn-strv-02.s b/test/MC/SystemZ/insn-strv-02.s
deleted file mode 100644
index 24460edfed..0000000000
--- a/test/MC/SystemZ/insn-strv-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: strv %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: strv %r0, 524288
-
- strv %r0, -524289
- strv %r0, 524288
diff --git a/test/MC/SystemZ/insn-strvg-01.s b/test/MC/SystemZ/insn-strvg-01.s
deleted file mode 100644
index 6a4d49d3bc..0000000000
--- a/test/MC/SystemZ/insn-strvg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: strvg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x2f]
-#CHECK: strvg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x2f]
-#CHECK: strvg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x2f]
-#CHECK: strvg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x2f]
-#CHECK: strvg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x2f]
-#CHECK: strvg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x2f]
-#CHECK: strvg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x2f]
-#CHECK: strvg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x2f]
-#CHECK: strvg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x2f]
-#CHECK: strvg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x2f]
-
- strvg %r0,-524288
- strvg %r0,-1
- strvg %r0,0
- strvg %r0,1
- strvg %r0,524287
- strvg %r0,0(%r1)
- strvg %r0,0(%r15)
- strvg %r0,524287(%r1,%r15)
- strvg %r0,524287(%r15,%r1)
- strvg %r15,0
diff --git a/test/MC/SystemZ/insn-strvg-02.s b/test/MC/SystemZ/insn-strvg-02.s
deleted file mode 100644
index ebb0d5bffb..0000000000
--- a/test/MC/SystemZ/insn-strvg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: strvg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: strvg %r0, 524288
-
- strvg %r0, -524289
- strvg %r0, 524288
diff --git a/test/MC/SystemZ/insn-sty-01.s b/test/MC/SystemZ/insn-sty-01.s
deleted file mode 100644
index 1ca2d5c550..0000000000
--- a/test/MC/SystemZ/insn-sty-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sty %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x50]
-#CHECK: sty %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x50]
-#CHECK: sty %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x50]
-#CHECK: sty %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x50]
-#CHECK: sty %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x50]
-#CHECK: sty %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x50]
-#CHECK: sty %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x50]
-#CHECK: sty %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x50]
-#CHECK: sty %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x50]
-#CHECK: sty %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x50]
-
- sty %r0, -524288
- sty %r0, -1
- sty %r0, 0
- sty %r0, 1
- sty %r0, 524287
- sty %r0, 0(%r1)
- sty %r0, 0(%r15)
- sty %r0, 524287(%r1,%r15)
- sty %r0, 524287(%r15,%r1)
- sty %r15, 0
diff --git a/test/MC/SystemZ/insn-sty-02.s b/test/MC/SystemZ/insn-sty-02.s
deleted file mode 100644
index fea7c089ab..0000000000
--- a/test/MC/SystemZ/insn-sty-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sty %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: sty %r0, 524288
-
- sty %r0, -524289
- sty %r0, 524288
diff --git a/test/MC/SystemZ/insn-sxbr-01.s b/test/MC/SystemZ/insn-sxbr-01.s
deleted file mode 100644
index e7f4ed25bf..0000000000
--- a/test/MC/SystemZ/insn-sxbr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: sxbr %f0, %f0 # encoding: [0xb3,0x4b,0x00,0x00]
-#CHECK: sxbr %f0, %f13 # encoding: [0xb3,0x4b,0x00,0x0d]
-#CHECK: sxbr %f8, %f8 # encoding: [0xb3,0x4b,0x00,0x88]
-#CHECK: sxbr %f13, %f0 # encoding: [0xb3,0x4b,0x00,0xd0]
-
- sxbr %f0, %f0
- sxbr %f0, %f13
- sxbr %f8, %f8
- sxbr %f13, %f0
diff --git a/test/MC/SystemZ/insn-sxbr-02.s b/test/MC/SystemZ/insn-sxbr-02.s
deleted file mode 100644
index 397238bd39..0000000000
--- a/test/MC/SystemZ/insn-sxbr-02.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: sxbr %f0, %f2
-#CHECK: error: invalid register
-#CHECK: sxbr %f0, %f14
-#CHECK: error: invalid register
-#CHECK: sxbr %f2, %f0
-#CHECK: error: invalid register
-#CHECK: sxbr %f14, %f0
-
- sxbr %f0, %f2
- sxbr %f0, %f14
- sxbr %f2, %f0
- sxbr %f14, %f0
-
diff --git a/test/MC/SystemZ/insn-sy-01.s b/test/MC/SystemZ/insn-sy-01.s
deleted file mode 100644
index bc56bd790e..0000000000
--- a/test/MC/SystemZ/insn-sy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#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]
-#CHECK: sy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x5b]
-#CHECK: sy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x5b]
-#CHECK: sy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x5b]
-#CHECK: sy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x5b]
-#CHECK: sy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x5b]
-#CHECK: sy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x5b]
-#CHECK: sy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x5b]
-
- sy %r0, -524288
- sy %r0, -1
- sy %r0, 0
- sy %r0, 1
- sy %r0, 524287
- sy %r0, 0(%r1)
- sy %r0, 0(%r15)
- sy %r0, 524287(%r1,%r15)
- sy %r0, 524287(%r15,%r1)
- sy %r15, 0
diff --git a/test/MC/SystemZ/insn-sy-02.s b/test/MC/SystemZ/insn-sy-02.s
deleted file mode 100644
index 7d64ca922d..0000000000
--- a/test/MC/SystemZ/insn-sy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: sy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: sy %r0, 524288
-
- sy %r0, -524289
- sy %r0, 524288
diff --git a/test/MC/SystemZ/insn-x-01.s b/test/MC/SystemZ/insn-x-01.s
deleted file mode 100644
index a2e3a2605a..0000000000
--- a/test/MC/SystemZ/insn-x-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: x %r0, 0 # encoding: [0x57,0x00,0x00,0x00]
-#CHECK: x %r0, 4095 # encoding: [0x57,0x00,0x0f,0xff]
-#CHECK: x %r0, 0(%r1) # encoding: [0x57,0x00,0x10,0x00]
-#CHECK: x %r0, 0(%r15) # encoding: [0x57,0x00,0xf0,0x00]
-#CHECK: x %r0, 4095(%r1,%r15) # encoding: [0x57,0x01,0xff,0xff]
-#CHECK: x %r0, 4095(%r15,%r1) # encoding: [0x57,0x0f,0x1f,0xff]
-#CHECK: x %r15, 0 # encoding: [0x57,0xf0,0x00,0x00]
-
- x %r0, 0
- x %r0, 4095
- x %r0, 0(%r1)
- x %r0, 0(%r15)
- x %r0, 4095(%r1,%r15)
- x %r0, 4095(%r15,%r1)
- x %r15, 0
diff --git a/test/MC/SystemZ/insn-x-02.s b/test/MC/SystemZ/insn-x-02.s
deleted file mode 100644
index 3719740464..0000000000
--- a/test/MC/SystemZ/insn-x-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: x %r0, -1
-#CHECK: error: invalid operand
-#CHECK: x %r0, 4096
-
- x %r0, -1
- x %r0, 4096
diff --git a/test/MC/SystemZ/insn-xg-01.s b/test/MC/SystemZ/insn-xg-01.s
deleted file mode 100644
index 6cf5e7e4b4..0000000000
--- a/test/MC/SystemZ/insn-xg-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: xg %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x82]
-#CHECK: xg %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x82]
-#CHECK: xg %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x82]
-#CHECK: xg %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x82]
-#CHECK: xg %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x82]
-#CHECK: xg %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x82]
-#CHECK: xg %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x82]
-#CHECK: xg %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x82]
-#CHECK: xg %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x82]
-#CHECK: xg %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x82]
-
- xg %r0, -524288
- xg %r0, -1
- xg %r0, 0
- xg %r0, 1
- xg %r0, 524287
- xg %r0, 0(%r1)
- xg %r0, 0(%r15)
- xg %r0, 524287(%r1,%r15)
- xg %r0, 524287(%r15,%r1)
- xg %r15, 0
diff --git a/test/MC/SystemZ/insn-xg-02.s b/test/MC/SystemZ/insn-xg-02.s
deleted file mode 100644
index 0505b9facf..0000000000
--- a/test/MC/SystemZ/insn-xg-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: xg %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: xg %r0, 524288
-
- xg %r0, -524289
- xg %r0, 524288
diff --git a/test/MC/SystemZ/insn-xgr-01.s b/test/MC/SystemZ/insn-xgr-01.s
deleted file mode 100644
index 1a5a6d6e1c..0000000000
--- a/test/MC/SystemZ/insn-xgr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: xgr %r0, %r0 # encoding: [0xb9,0x82,0x00,0x00]
-#CHECK: xgr %r0, %r15 # encoding: [0xb9,0x82,0x00,0x0f]
-#CHECK: xgr %r15, %r0 # encoding: [0xb9,0x82,0x00,0xf0]
-#CHECK: xgr %r7, %r8 # encoding: [0xb9,0x82,0x00,0x78]
-
- xgr %r0,%r0
- xgr %r0,%r15
- xgr %r15,%r0
- xgr %r7,%r8
diff --git a/test/MC/SystemZ/insn-xi-01.s b/test/MC/SystemZ/insn-xi-01.s
deleted file mode 100644
index 2a7670c732..0000000000
--- a/test/MC/SystemZ/insn-xi-01.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: xi 0, 0 # encoding: [0x97,0x00,0x00,0x00]
-#CHECK: xi 4095, 0 # encoding: [0x97,0x00,0x0f,0xff]
-#CHECK: xi 0, 255 # encoding: [0x97,0xff,0x00,0x00]
-#CHECK: xi 0(%r1), 42 # encoding: [0x97,0x2a,0x10,0x00]
-#CHECK: xi 0(%r15), 42 # encoding: [0x97,0x2a,0xf0,0x00]
-#CHECK: xi 4095(%r1), 42 # encoding: [0x97,0x2a,0x1f,0xff]
-#CHECK: xi 4095(%r15), 42 # encoding: [0x97,0x2a,0xff,0xff]
-
- xi 0, 0
- xi 4095, 0
- xi 0, 255
- xi 0(%r1), 42
- xi 0(%r15), 42
- xi 4095(%r1), 42
- xi 4095(%r15), 42
diff --git a/test/MC/SystemZ/insn-xi-02.s b/test/MC/SystemZ/insn-xi-02.s
deleted file mode 100644
index a1ce668a69..0000000000
--- a/test/MC/SystemZ/insn-xi-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: xi -1, 0
-#CHECK: error: invalid operand
-#CHECK: xi 4096, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: xi 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: xi 0, -1
-#CHECK: error: invalid operand
-#CHECK: xi 0, 256
-
- xi -1, 0
- xi 4096, 0
- xi 0(%r1,%r2), 0
- xi 0, -1
- xi 0, 256
diff --git a/test/MC/SystemZ/insn-xihf-01.s b/test/MC/SystemZ/insn-xihf-01.s
deleted file mode 100644
index ad2ec1946a..0000000000
--- a/test/MC/SystemZ/insn-xihf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: xihf %r0, 0 # encoding: [0xc0,0x06,0x00,0x00,0x00,0x00]
-#CHECK: xihf %r0, 4294967295 # encoding: [0xc0,0x06,0xff,0xff,0xff,0xff]
-#CHECK: xihf %r15, 0 # encoding: [0xc0,0xf6,0x00,0x00,0x00,0x00]
-
- xihf %r0, 0
- xihf %r0, 0xffffffff
- xihf %r15, 0
diff --git a/test/MC/SystemZ/insn-xihf-02.s b/test/MC/SystemZ/insn-xihf-02.s
deleted file mode 100644
index 945993b822..0000000000
--- a/test/MC/SystemZ/insn-xihf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: xihf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: xihf %r0, 1 << 32
-
- xihf %r0, -1
- xihf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-xilf-01.s b/test/MC/SystemZ/insn-xilf-01.s
deleted file mode 100644
index 475e573321..0000000000
--- a/test/MC/SystemZ/insn-xilf-01.s
+++ /dev/null
@@ -1,9 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: xilf %r0, 0 # encoding: [0xc0,0x07,0x00,0x00,0x00,0x00]
-#CHECK: xilf %r0, 4294967295 # encoding: [0xc0,0x07,0xff,0xff,0xff,0xff]
-#CHECK: xilf %r15, 0 # encoding: [0xc0,0xf7,0x00,0x00,0x00,0x00]
-
- xilf %r0, 0
- xilf %r0, 0xffffffff
- xilf %r15, 0
diff --git a/test/MC/SystemZ/insn-xilf-02.s b/test/MC/SystemZ/insn-xilf-02.s
deleted file mode 100644
index df02b7cc94..0000000000
--- a/test/MC/SystemZ/insn-xilf-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: xilf %r0, -1
-#CHECK: error: invalid operand
-#CHECK: xilf %r0, 1 << 32
-
- xilf %r0, -1
- xilf %r0, 1 << 32
diff --git a/test/MC/SystemZ/insn-xiy-01.s b/test/MC/SystemZ/insn-xiy-01.s
deleted file mode 100644
index c329ce0572..0000000000
--- a/test/MC/SystemZ/insn-xiy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: xiy -524288, 0 # encoding: [0xeb,0x00,0x00,0x00,0x80,0x57]
-#CHECK: xiy -1, 0 # encoding: [0xeb,0x00,0x0f,0xff,0xff,0x57]
-#CHECK: xiy 0, 0 # encoding: [0xeb,0x00,0x00,0x00,0x00,0x57]
-#CHECK: xiy 1, 0 # encoding: [0xeb,0x00,0x00,0x01,0x00,0x57]
-#CHECK: xiy 524287, 0 # encoding: [0xeb,0x00,0x0f,0xff,0x7f,0x57]
-#CHECK: xiy 0, 255 # encoding: [0xeb,0xff,0x00,0x00,0x00,0x57]
-#CHECK: xiy 0(%r1), 42 # encoding: [0xeb,0x2a,0x10,0x00,0x00,0x57]
-#CHECK: xiy 0(%r15), 42 # encoding: [0xeb,0x2a,0xf0,0x00,0x00,0x57]
-#CHECK: xiy 524287(%r1), 42 # encoding: [0xeb,0x2a,0x1f,0xff,0x7f,0x57]
-#CHECK: xiy 524287(%r15), 42 # encoding: [0xeb,0x2a,0xff,0xff,0x7f,0x57]
-
- xiy -524288, 0
- xiy -1, 0
- xiy 0, 0
- xiy 1, 0
- xiy 524287, 0
- xiy 0, 255
- xiy 0(%r1), 42
- xiy 0(%r15), 42
- xiy 524287(%r1), 42
- xiy 524287(%r15), 42
diff --git a/test/MC/SystemZ/insn-xiy-02.s b/test/MC/SystemZ/insn-xiy-02.s
deleted file mode 100644
index 519c26c965..0000000000
--- a/test/MC/SystemZ/insn-xiy-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: xiy -524289, 0
-#CHECK: error: invalid operand
-#CHECK: xiy 524288, 0
-#CHECK: error: invalid use of indexed addressing
-#CHECK: xiy 0(%r1,%r2), 0
-#CHECK: error: invalid operand
-#CHECK: xiy 0, -1
-#CHECK: error: invalid operand
-#CHECK: xiy 0, 256
-
- xiy -524289, 0
- xiy 524288, 0
- xiy 0(%r1,%r2), 0
- xiy 0, -1
- xiy 0, 256
diff --git a/test/MC/SystemZ/insn-xr-01.s b/test/MC/SystemZ/insn-xr-01.s
deleted file mode 100644
index 471e6a63d6..0000000000
--- a/test/MC/SystemZ/insn-xr-01.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: xr %r0, %r0 # encoding: [0x17,0x00]
-#CHECK: xr %r0, %r15 # encoding: [0x17,0x0f]
-#CHECK: xr %r15, %r0 # encoding: [0x17,0xf0]
-#CHECK: xr %r7, %r8 # encoding: [0x17,0x78]
-
- xr %r0,%r0
- xr %r0,%r15
- xr %r15,%r0
- xr %r7,%r8
diff --git a/test/MC/SystemZ/insn-xy-01.s b/test/MC/SystemZ/insn-xy-01.s
deleted file mode 100644
index 132db04bf5..0000000000
--- a/test/MC/SystemZ/insn-xy-01.s
+++ /dev/null
@@ -1,23 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: xy %r0, -524288 # encoding: [0xe3,0x00,0x00,0x00,0x80,0x57]
-#CHECK: xy %r0, -1 # encoding: [0xe3,0x00,0x0f,0xff,0xff,0x57]
-#CHECK: xy %r0, 0 # encoding: [0xe3,0x00,0x00,0x00,0x00,0x57]
-#CHECK: xy %r0, 1 # encoding: [0xe3,0x00,0x00,0x01,0x00,0x57]
-#CHECK: xy %r0, 524287 # encoding: [0xe3,0x00,0x0f,0xff,0x7f,0x57]
-#CHECK: xy %r0, 0(%r1) # encoding: [0xe3,0x00,0x10,0x00,0x00,0x57]
-#CHECK: xy %r0, 0(%r15) # encoding: [0xe3,0x00,0xf0,0x00,0x00,0x57]
-#CHECK: xy %r0, 524287(%r1,%r15) # encoding: [0xe3,0x01,0xff,0xff,0x7f,0x57]
-#CHECK: xy %r0, 524287(%r15,%r1) # encoding: [0xe3,0x0f,0x1f,0xff,0x7f,0x57]
-#CHECK: xy %r15, 0 # encoding: [0xe3,0xf0,0x00,0x00,0x00,0x57]
-
- xy %r0, -524288
- xy %r0, -1
- xy %r0, 0
- xy %r0, 1
- xy %r0, 524287
- xy %r0, 0(%r1)
- xy %r0, 0(%r15)
- xy %r0, 524287(%r1,%r15)
- xy %r0, 524287(%r15,%r1)
- xy %r15, 0
diff --git a/test/MC/SystemZ/insn-xy-02.s b/test/MC/SystemZ/insn-xy-02.s
deleted file mode 100644
index 6ba3bad48c..0000000000
--- a/test/MC/SystemZ/insn-xy-02.s
+++ /dev/null
@@ -1,10 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid operand
-#CHECK: xy %r0, -524289
-#CHECK: error: invalid operand
-#CHECK: xy %r0, 524288
-
- xy %r0, -524289
- xy %r0, 524288
diff --git a/test/MC/SystemZ/regs-01.s b/test/MC/SystemZ/regs-01.s
deleted file mode 100644
index df11fee691..0000000000
--- a/test/MC/SystemZ/regs-01.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lr %r0, %r1 # encoding: [0x18,0x01]
-#CHECK: lr %r2, %r3 # encoding: [0x18,0x23]
-#CHECK: lr %r4, %r5 # encoding: [0x18,0x45]
-#CHECK: lr %r6, %r7 # encoding: [0x18,0x67]
-#CHECK: lr %r8, %r9 # encoding: [0x18,0x89]
-#CHECK: lr %r10, %r11 # encoding: [0x18,0xab]
-#CHECK: lr %r12, %r13 # encoding: [0x18,0xcd]
-#CHECK: lr %r14, %r15 # encoding: [0x18,0xef]
-
- lr %r0,%r1
- lr %r2,%r3
- lr %r4,%r5
- lr %r6,%r7
- lr %r8,%r9
- lr %r10,%r11
- lr %r12,%r13
- lr %r14,%r15
diff --git a/test/MC/SystemZ/regs-02.s b/test/MC/SystemZ/regs-02.s
deleted file mode 100644
index baaa0f9f97..0000000000
--- a/test/MC/SystemZ/regs-02.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lgr %r0, %r1 # encoding: [0xb9,0x04,0x00,0x01]
-#CHECK: lgr %r2, %r3 # encoding: [0xb9,0x04,0x00,0x23]
-#CHECK: lgr %r4, %r5 # encoding: [0xb9,0x04,0x00,0x45]
-#CHECK: lgr %r6, %r7 # encoding: [0xb9,0x04,0x00,0x67]
-#CHECK: lgr %r8, %r9 # encoding: [0xb9,0x04,0x00,0x89]
-#CHECK: lgr %r10, %r11 # encoding: [0xb9,0x04,0x00,0xab]
-#CHECK: lgr %r12, %r13 # encoding: [0xb9,0x04,0x00,0xcd]
-#CHECK: lgr %r14, %r15 # encoding: [0xb9,0x04,0x00,0xef]
-
- lgr %r0,%r1
- lgr %r2,%r3
- lgr %r4,%r5
- lgr %r6,%r7
- lgr %r8,%r9
- lgr %r10,%r11
- lgr %r12,%r13
- lgr %r14,%r15
diff --git a/test/MC/SystemZ/regs-03.s b/test/MC/SystemZ/regs-03.s
deleted file mode 100644
index 6ced4157b4..0000000000
--- a/test/MC/SystemZ/regs-03.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: dlr %r0, %r0 # encoding: [0xb9,0x97,0x00,0x00]
-#CHECK: dlr %r2, %r0 # encoding: [0xb9,0x97,0x00,0x20]
-#CHECK: dlr %r4, %r0 # encoding: [0xb9,0x97,0x00,0x40]
-#CHECK: dlr %r6, %r0 # encoding: [0xb9,0x97,0x00,0x60]
-#CHECK: dlr %r8, %r0 # encoding: [0xb9,0x97,0x00,0x80]
-#CHECK: dlr %r10, %r0 # encoding: [0xb9,0x97,0x00,0xa0]
-#CHECK: dlr %r12, %r0 # encoding: [0xb9,0x97,0x00,0xc0]
-#CHECK: dlr %r14, %r0 # encoding: [0xb9,0x97,0x00,0xe0]
-
- dlr %r0,%r0
- dlr %r2,%r0
- dlr %r4,%r0
- dlr %r6,%r0
- dlr %r8,%r0
- dlr %r10,%r0
- dlr %r12,%r0
- dlr %r14,%r0
diff --git a/test/MC/SystemZ/regs-04.s b/test/MC/SystemZ/regs-04.s
deleted file mode 100644
index a2da67186f..0000000000
--- a/test/MC/SystemZ/regs-04.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ler %f0, %f1 # encoding: [0x38,0x01]
-#CHECK: ler %f2, %f3 # encoding: [0x38,0x23]
-#CHECK: ler %f4, %f5 # encoding: [0x38,0x45]
-#CHECK: ler %f6, %f7 # encoding: [0x38,0x67]
-#CHECK: ler %f8, %f9 # encoding: [0x38,0x89]
-#CHECK: ler %f10, %f11 # encoding: [0x38,0xab]
-#CHECK: ler %f12, %f13 # encoding: [0x38,0xcd]
-#CHECK: ler %f14, %f15 # encoding: [0x38,0xef]
-
- ler %f0,%f1
- ler %f2,%f3
- ler %f4,%f5
- ler %f6,%f7
- ler %f8,%f9
- ler %f10,%f11
- ler %f12,%f13
- ler %f14,%f15
diff --git a/test/MC/SystemZ/regs-05.s b/test/MC/SystemZ/regs-05.s
deleted file mode 100644
index b5f50b51a3..0000000000
--- a/test/MC/SystemZ/regs-05.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: ldr %f0, %f1 # encoding: [0x28,0x01]
-#CHECK: ldr %f2, %f3 # encoding: [0x28,0x23]
-#CHECK: ldr %f4, %f5 # encoding: [0x28,0x45]
-#CHECK: ldr %f6, %f7 # encoding: [0x28,0x67]
-#CHECK: ldr %f8, %f9 # encoding: [0x28,0x89]
-#CHECK: ldr %f10, %f11 # encoding: [0x28,0xab]
-#CHECK: ldr %f12, %f13 # encoding: [0x28,0xcd]
-#CHECK: ldr %f14, %f15 # encoding: [0x28,0xef]
-
- ldr %f0,%f1
- ldr %f2,%f3
- ldr %f4,%f5
- ldr %f6,%f7
- ldr %f8,%f9
- ldr %f10,%f11
- ldr %f12,%f13
- ldr %f14,%f15
diff --git a/test/MC/SystemZ/regs-06.s b/test/MC/SystemZ/regs-06.s
deleted file mode 100644
index 43bf38c9c4..0000000000
--- a/test/MC/SystemZ/regs-06.s
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-
-#CHECK: lxr %f0, %f1 # encoding: [0xb3,0x65,0x00,0x01]
-#CHECK: lxr %f4, %f5 # encoding: [0xb3,0x65,0x00,0x45]
-#CHECK: lxr %f8, %f9 # encoding: [0xb3,0x65,0x00,0x89]
-#CHECK: lxr %f12, %f13 # encoding: [0xb3,0x65,0x00,0xcd]
-
- lxr %f0,%f1
- lxr %f4,%f5
- lxr %f8,%f9
- lxr %f12,%f13
diff --git a/test/MC/SystemZ/regs-07.s b/test/MC/SystemZ/regs-07.s
deleted file mode 100644
index d3585a6e2c..0000000000
--- a/test/MC/SystemZ/regs-07.s
+++ /dev/null
@@ -1,28 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lr %r16,%r1
-#CHECK: error: invalid register
-#CHECK: lr %f0,%r1
-#CHECK: error: invalid register
-#CHECK: lr %a0,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: lr %arid,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: lr %0,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: lr 0,%r1
-#CHECK: error: unknown token in expression
-#CHECK: lr (%r0),%r1
-#CHECK: error: unknown token in expression
-#CHECK: lr %,%r1
-
- lr %r16,%r1
- lr %f0,%r1
- lr %a0,%r1
- lr %arid,%r1
- lr %0,%r1
- lr 0,%r1
- lr (%r0),%r1
- lr %,%r1
diff --git a/test/MC/SystemZ/regs-08.s b/test/MC/SystemZ/regs-08.s
deleted file mode 100644
index f11c45737a..0000000000
--- a/test/MC/SystemZ/regs-08.s
+++ /dev/null
@@ -1,28 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lgr %r16,%r1
-#CHECK: error: invalid register
-#CHECK: lgr %f0,%r1
-#CHECK: error: invalid register
-#CHECK: lgr %a0,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: lgr %arid,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: lgr %0,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: lgr 0,%r1
-#CHECK: error: unknown token in expression
-#CHECK: lgr (%r0),%r1
-#CHECK: error: unknown token in expression
-#CHECK: lgr %,%r1
-
- lgr %r16,%r1
- lgr %f0,%r1
- lgr %a0,%r1
- lgr %arid,%r1
- lgr %0,%r1
- lgr 0,%r1
- lgr (%r0),%r1
- lgr %,%r1
diff --git a/test/MC/SystemZ/regs-09.s b/test/MC/SystemZ/regs-09.s
deleted file mode 100644
index 60f4d39140..0000000000
--- a/test/MC/SystemZ/regs-09.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: dlr %r1,%r8
-#CHECK: error: invalid register
-#CHECK: dlr %r16,%r1
-#CHECK: error: invalid register
-#CHECK: dlr %f0,%r1
-#CHECK: error: invalid register
-#CHECK: dlr %a0,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: dlr %arid,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: dlr %0,%r1
-#CHECK: error: invalid operand for instruction
-#CHECK: dlr 0,%r1
-#CHECK: error: unknown token in expression
-#CHECK: dlr (%r0),%r1
-#CHECK: error: unknown token in expression
-#CHECK: dlr %,%r1
-
- dlr %r1,%r8
- dlr %r16,%r1
- dlr %f0,%r1
- dlr %a0,%r1
- dlr %arid,%r1
- dlr %0,%r1
- dlr 0,%r1
- dlr (%r0),%r1
- dlr %,%r1
diff --git a/test/MC/SystemZ/regs-10.s b/test/MC/SystemZ/regs-10.s
deleted file mode 100644
index 865aa82532..0000000000
--- a/test/MC/SystemZ/regs-10.s
+++ /dev/null
@@ -1,28 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: ler %f1,%f16
-#CHECK: error: invalid register
-#CHECK: ler %f1,%r0
-#CHECK: error: invalid register
-#CHECK: ler %f1,%a0
-#CHECK: error: invalid operand for instruction
-#CHECK: ler %f1,%fly
-#CHECK: error: invalid operand for instruction
-#CHECK: ler %f1,%0
-#CHECK: error: invalid operand for instruction
-#CHECK: ler %f1,0
-#CHECK: error: unknown token in expression
-#CHECK: ler %f1,(%f0)
-#CHECK: error: unknown token in expression
-#CHECK: ler %f1,%
-
- ler %f1,%f16
- ler %f1,%r0
- ler %f1,%a0
- ler %f1,%fly
- ler %f1,%0
- ler %f1,0
- ler %f1,(%f0)
- ler %f1,%
diff --git a/test/MC/SystemZ/regs-11.s b/test/MC/SystemZ/regs-11.s
deleted file mode 100644
index 5d0f04f043..0000000000
--- a/test/MC/SystemZ/regs-11.s
+++ /dev/null
@@ -1,28 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: ldr %f1,%f16
-#CHECK: error: invalid register
-#CHECK: ldr %f1,%r0
-#CHECK: error: invalid register
-#CHECK: ldr %f1,%a0
-#CHECK: error: invalid operand for instruction
-#CHECK: ldr %f1,%fly
-#CHECK: error: invalid operand for instruction
-#CHECK: ldr %f1,%0
-#CHECK: error: invalid operand for instruction
-#CHECK: ldr %f1,0
-#CHECK: error: unknown token in expression
-#CHECK: ldr %f1,(%f0)
-#CHECK: error: unknown token in expression
-#CHECK: ldr %f1,%
-
- ldr %f1,%f16
- ldr %f1,%r0
- ldr %f1,%a0
- ldr %f1,%fly
- ldr %f1,%0
- ldr %f1,0
- ldr %f1,(%f0)
- ldr %f1,%
diff --git a/test/MC/SystemZ/regs-12.s b/test/MC/SystemZ/regs-12.s
deleted file mode 100644
index f6cf0e7584..0000000000
--- a/test/MC/SystemZ/regs-12.s
+++ /dev/null
@@ -1,31 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: lxr %f1,%f2
-#CHECK: error: invalid register
-#CHECK: lxr %f1,%f16
-#CHECK: error: invalid register
-#CHECK: lxr %f1,%r0
-#CHECK: error: invalid register
-#CHECK: lxr %f1,%a0
-#CHECK: error: invalid operand for instruction
-#CHECK: lxr %f1,%fly
-#CHECK: error: invalid operand for instruction
-#CHECK: lxr %f1,%0
-#CHECK: error: invalid operand for instruction
-#CHECK: lxr %f1,0
-#CHECK: error: unknown token in expression
-#CHECK: lxr %f1,(%f0)
-#CHECK: error: unknown token in expression
-#CHECK: lxr %f1,%
-
- lxr %f1,%f2
- lxr %f1,%f16
- lxr %f1,%r0
- lxr %f1,%a0
- lxr %f1,%fly
- lxr %f1,%0
- lxr %f1,0
- lxr %f1,(%f0)
- lxr %f1,%
diff --git a/test/MC/SystemZ/regs-13.s b/test/MC/SystemZ/regs-13.s
deleted file mode 100644
index 88b0c05b86..0000000000
--- a/test/MC/SystemZ/regs-13.s
+++ /dev/null
@@ -1,69 +0,0 @@
-# RUN: llvm-mc -triple s390x-linux-gnu < %s | FileCheck %s
-
-#CHECK: .cfi_offset %r0, 0
-#CHECK: .cfi_offset %r1, 8
-#CHECK: .cfi_offset %r2, 16
-#CHECK: .cfi_offset %r3, 24
-#CHECK: .cfi_offset %r4, 32
-#CHECK: .cfi_offset %r5, 40
-#CHECK: .cfi_offset %r6, 48
-#CHECK: .cfi_offset %r7, 56
-#CHECK: .cfi_offset %r8, 64
-#CHECK: .cfi_offset %r9, 72
-#CHECK: .cfi_offset %r10, 80
-#CHECK: .cfi_offset %r11, 88
-#CHECK: .cfi_offset %r12, 96
-#CHECK: .cfi_offset %r13, 104
-#CHECK: .cfi_offset %r14, 112
-#CHECK: .cfi_offset %r15, 120
-#CHECK: .cfi_offset %f0, 128
-#CHECK: .cfi_offset %f1, 136
-#CHECK: .cfi_offset %f2, 144
-#CHECK: .cfi_offset %f3, 152
-#CHECK: .cfi_offset %f4, 160
-#CHECK: .cfi_offset %f5, 168
-#CHECK: .cfi_offset %f6, 176
-#CHECK: .cfi_offset %f7, 184
-#CHECK: .cfi_offset %f8, 192
-#CHECK: .cfi_offset %f9, 200
-#CHECK: .cfi_offset %f10, 208
-#CHECK: .cfi_offset %f11, 216
-#CHECK: .cfi_offset %f12, 224
-#CHECK: .cfi_offset %f13, 232
-#CHECK: .cfi_offset %f14, 240
-#CHECK: .cfi_offset %f15, 248
-
- .cfi_startproc
- .cfi_offset %r0,0
- .cfi_offset %r1,8
- .cfi_offset %r2,16
- .cfi_offset %r3,24
- .cfi_offset %r4,32
- .cfi_offset %r5,40
- .cfi_offset %r6,48
- .cfi_offset %r7,56
- .cfi_offset %r8,64
- .cfi_offset %r9,72
- .cfi_offset %r10,80
- .cfi_offset %r11,88
- .cfi_offset %r12,96
- .cfi_offset %r13,104
- .cfi_offset %r14,112
- .cfi_offset %r15,120
- .cfi_offset %f0,128
- .cfi_offset %f1,136
- .cfi_offset %f2,144
- .cfi_offset %f3,152
- .cfi_offset %f4,160
- .cfi_offset %f5,168
- .cfi_offset %f6,176
- .cfi_offset %f7,184
- .cfi_offset %f8,192
- .cfi_offset %f9,200
- .cfi_offset %f10,208
- .cfi_offset %f11,216
- .cfi_offset %f12,224
- .cfi_offset %f13,232
- .cfi_offset %f14,240
- .cfi_offset %f15,248
- .cfi_endproc
diff --git a/test/MC/SystemZ/regs-14.s b/test/MC/SystemZ/regs-14.s
deleted file mode 100644
index e22307d49c..0000000000
--- a/test/MC/SystemZ/regs-14.s
+++ /dev/null
@@ -1,18 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: invalid register
-#CHECK: .cfi_offset %a0,0
-#CHECK: error: register expected
-#CHECK: .cfi_offset %foo,0
-#CHECK: error: register expected
-#CHECK: .cfi_offset %,0
-#CHECK: error: register expected
-#CHECK: .cfi_offset r0,0
-
- .cfi_startproc
- .cfi_offset %a0,0
- .cfi_offset %foo,0
- .cfi_offset %,0
- .cfi_offset r0,0
- .cfi_endproc
diff --git a/test/MC/SystemZ/regs-15.s b/test/MC/SystemZ/regs-15.s
deleted file mode 100644
index baec6a639b..0000000000
--- a/test/MC/SystemZ/regs-15.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
-# RUN: FileCheck < %t %s
-
-#CHECK: error: %r0 used in an address
-#CHECK: sll %r2,8(%r0)
-#CHECK: error: %r0 used in an address
-#CHECK: br %r0
-#CHECK: error: %r0 used in an address
-#CHECK: l %r1,8(%r0)
-#CHECK: error: %r0 used in an address
-#CHECK: l %r1,8(%r0,%r15)
-#CHECK: error: %r0 used in an address
-#CHECK: l %r1,8(%r15,%r0)
-
- sll %r2,8(%r0)
- br %r0
- l %r1,8(%r0)
- l %r1,8(%r0,%r15)
- l %r1,8(%r15,%r0)
diff --git a/test/MC/SystemZ/regs-bad.s b/test/MC/SystemZ/regs-bad.s
new file mode 100644
index 0000000000..6a8bff6ec7
--- /dev/null
+++ b/test/MC/SystemZ/regs-bad.s
@@ -0,0 +1,197 @@
+# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
+# RUN: FileCheck < %t %s
+
+#CHECK: error: invalid register
+#CHECK: lr %r16,%r1
+#CHECK: error: invalid register
+#CHECK: lr %f0,%r1
+#CHECK: error: invalid register
+#CHECK: lr %a0,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: lr %arid,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: lr %0,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: lr 0,%r1
+#CHECK: error: unknown token in expression
+#CHECK: lr (%r0),%r1
+#CHECK: error: unknown token in expression
+#CHECK: lr %,%r1
+
+ lr %r16,%r1
+ lr %f0,%r1
+ lr %a0,%r1
+ lr %arid,%r1
+ lr %0,%r1
+ lr 0,%r1
+ lr (%r0),%r1
+ lr %,%r1
+
+#CHECK: error: invalid register
+#CHECK: lgr %r16,%r1
+#CHECK: error: invalid register
+#CHECK: lgr %f0,%r1
+#CHECK: error: invalid register
+#CHECK: lgr %a0,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: lgr %arid,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: lgr %0,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: lgr 0,%r1
+#CHECK: error: unknown token in expression
+#CHECK: lgr (%r0),%r1
+#CHECK: error: unknown token in expression
+#CHECK: lgr %,%r1
+
+ lgr %r16,%r1
+ lgr %f0,%r1
+ lgr %a0,%r1
+ lgr %arid,%r1
+ lgr %0,%r1
+ lgr 0,%r1
+ lgr (%r0),%r1
+ lgr %,%r1
+
+#CHECK: error: invalid register
+#CHECK: dlr %r1,%r8
+#CHECK: error: invalid register
+#CHECK: dlr %r16,%r1
+#CHECK: error: invalid register
+#CHECK: dlr %f0,%r1
+#CHECK: error: invalid register
+#CHECK: dlr %a0,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: dlr %arid,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: dlr %0,%r1
+#CHECK: error: invalid operand for instruction
+#CHECK: dlr 0,%r1
+#CHECK: error: unknown token in expression
+#CHECK: dlr (%r0),%r1
+#CHECK: error: unknown token in expression
+#CHECK: dlr %,%r1
+
+ dlr %r1,%r8
+ dlr %r16,%r1
+ dlr %f0,%r1
+ dlr %a0,%r1
+ dlr %arid,%r1
+ dlr %0,%r1
+ dlr 0,%r1
+ dlr (%r0),%r1
+ dlr %,%r1
+
+#CHECK: error: invalid register
+#CHECK: ler %f1,%f16
+#CHECK: error: invalid register
+#CHECK: ler %f1,%r0
+#CHECK: error: invalid register
+#CHECK: ler %f1,%a0
+#CHECK: error: invalid operand for instruction
+#CHECK: ler %f1,%fly
+#CHECK: error: invalid operand for instruction
+#CHECK: ler %f1,%0
+#CHECK: error: invalid operand for instruction
+#CHECK: ler %f1,0
+#CHECK: error: unknown token in expression
+#CHECK: ler %f1,(%f0)
+#CHECK: error: unknown token in expression
+#CHECK: ler %f1,%
+
+ ler %f1,%f16
+ ler %f1,%r0
+ ler %f1,%a0
+ ler %f1,%fly
+ ler %f1,%0
+ ler %f1,0
+ ler %f1,(%f0)
+ ler %f1,%
+
+#CHECK: error: invalid register
+#CHECK: ldr %f1,%f16
+#CHECK: error: invalid register
+#CHECK: ldr %f1,%r0
+#CHECK: error: invalid register
+#CHECK: ldr %f1,%a0
+#CHECK: error: invalid operand for instruction
+#CHECK: ldr %f1,%fly
+#CHECK: error: invalid operand for instruction
+#CHECK: ldr %f1,%0
+#CHECK: error: invalid operand for instruction
+#CHECK: ldr %f1,0
+#CHECK: error: unknown token in expression
+#CHECK: ldr %f1,(%f0)
+#CHECK: error: unknown token in expression
+#CHECK: ldr %f1,%
+
+ ldr %f1,%f16
+ ldr %f1,%r0
+ ldr %f1,%a0
+ ldr %f1,%fly
+ ldr %f1,%0
+ ldr %f1,0
+ ldr %f1,(%f0)
+ ldr %f1,%
+
+#CHECK: error: invalid register
+#CHECK: lxr %f1,%f2
+#CHECK: error: invalid register
+#CHECK: lxr %f1,%f16
+#CHECK: error: invalid register
+#CHECK: lxr %f1,%r0
+#CHECK: error: invalid register
+#CHECK: lxr %f1,%a0
+#CHECK: error: invalid operand for instruction
+#CHECK: lxr %f1,%fly
+#CHECK: error: invalid operand for instruction
+#CHECK: lxr %f1,%0
+#CHECK: error: invalid operand for instruction
+#CHECK: lxr %f1,0
+#CHECK: error: unknown token in expression
+#CHECK: lxr %f1,(%f0)
+#CHECK: error: unknown token in expression
+#CHECK: lxr %f1,%
+
+ lxr %f1,%f2
+ lxr %f1,%f16
+ lxr %f1,%r0
+ lxr %f1,%a0
+ lxr %f1,%fly
+ lxr %f1,%0
+ lxr %f1,0
+ lxr %f1,(%f0)
+ lxr %f1,%
+
+#CHECK: error: invalid register
+#CHECK: .cfi_offset %a0,0
+#CHECK: error: register expected
+#CHECK: .cfi_offset %foo,0
+#CHECK: error: register expected
+#CHECK: .cfi_offset %,0
+#CHECK: error: register expected
+#CHECK: .cfi_offset r0,0
+
+ .cfi_startproc
+ .cfi_offset %a0,0
+ .cfi_offset %foo,0
+ .cfi_offset %,0
+ .cfi_offset r0,0
+ .cfi_endproc
+
+#CHECK: error: %r0 used in an address
+#CHECK: sll %r2,8(%r0)
+#CHECK: error: %r0 used in an address
+#CHECK: br %r0
+#CHECK: error: %r0 used in an address
+#CHECK: l %r1,8(%r0)
+#CHECK: error: %r0 used in an address
+#CHECK: l %r1,8(%r0,%r15)
+#CHECK: error: %r0 used in an address
+#CHECK: l %r1,8(%r15,%r0)
+
+ sll %r2,8(%r0)
+ br %r0
+ l %r1,8(%r0)
+ l %r1,8(%r0,%r15)
+ l %r1,8(%r15,%r0)
diff --git a/test/MC/SystemZ/regs-good.s b/test/MC/SystemZ/regs-good.s
new file mode 100644
index 0000000000..7513d0c6b2
--- /dev/null
+++ b/test/MC/SystemZ/regs-good.s
@@ -0,0 +1,169 @@
+# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
+
+#CHECK: lr %r0, %r1 # encoding: [0x18,0x01]
+#CHECK: lr %r2, %r3 # encoding: [0x18,0x23]
+#CHECK: lr %r4, %r5 # encoding: [0x18,0x45]
+#CHECK: lr %r6, %r7 # encoding: [0x18,0x67]
+#CHECK: lr %r8, %r9 # encoding: [0x18,0x89]
+#CHECK: lr %r10, %r11 # encoding: [0x18,0xab]
+#CHECK: lr %r12, %r13 # encoding: [0x18,0xcd]
+#CHECK: lr %r14, %r15 # encoding: [0x18,0xef]
+
+ lr %r0,%r1
+ lr %r2,%r3
+ lr %r4,%r5
+ lr %r6,%r7
+ lr %r8,%r9
+ lr %r10,%r11
+ lr %r12,%r13
+ lr %r14,%r15
+
+#CHECK: lgr %r0, %r1 # encoding: [0xb9,0x04,0x00,0x01]
+#CHECK: lgr %r2, %r3 # encoding: [0xb9,0x04,0x00,0x23]
+#CHECK: lgr %r4, %r5 # encoding: [0xb9,0x04,0x00,0x45]
+#CHECK: lgr %r6, %r7 # encoding: [0xb9,0x04,0x00,0x67]
+#CHECK: lgr %r8, %r9 # encoding: [0xb9,0x04,0x00,0x89]
+#CHECK: lgr %r10, %r11 # encoding: [0xb9,0x04,0x00,0xab]
+#CHECK: lgr %r12, %r13 # encoding: [0xb9,0x04,0x00,0xcd]
+#CHECK: lgr %r14, %r15 # encoding: [0xb9,0x04,0x00,0xef]
+
+ lgr %r0,%r1
+ lgr %r2,%r3
+ lgr %r4,%r5
+ lgr %r6,%r7
+ lgr %r8,%r9
+ lgr %r10,%r11
+ lgr %r12,%r13
+ lgr %r14,%r15
+
+#CHECK: dlr %r0, %r0 # encoding: [0xb9,0x97,0x00,0x00]
+#CHECK: dlr %r2, %r0 # encoding: [0xb9,0x97,0x00,0x20]
+#CHECK: dlr %r4, %r0 # encoding: [0xb9,0x97,0x00,0x40]
+#CHECK: dlr %r6, %r0 # encoding: [0xb9,0x97,0x00,0x60]
+#CHECK: dlr %r8, %r0 # encoding: [0xb9,0x97,0x00,0x80]
+#CHECK: dlr %r10, %r0 # encoding: [0xb9,0x97,0x00,0xa0]
+#CHECK: dlr %r12, %r0 # encoding: [0xb9,0x97,0x00,0xc0]
+#CHECK: dlr %r14, %r0 # encoding: [0xb9,0x97,0x00,0xe0]
+
+ dlr %r0,%r0
+ dlr %r2,%r0
+ dlr %r4,%r0
+ dlr %r6,%r0
+ dlr %r8,%r0
+ dlr %r10,%r0
+ dlr %r12,%r0
+ dlr %r14,%r0
+
+#CHECK: ler %f0, %f1 # encoding: [0x38,0x01]
+#CHECK: ler %f2, %f3 # encoding: [0x38,0x23]
+#CHECK: ler %f4, %f5 # encoding: [0x38,0x45]
+#CHECK: ler %f6, %f7 # encoding: [0x38,0x67]
+#CHECK: ler %f8, %f9 # encoding: [0x38,0x89]
+#CHECK: ler %f10, %f11 # encoding: [0x38,0xab]
+#CHECK: ler %f12, %f13 # encoding: [0x38,0xcd]
+#CHECK: ler %f14, %f15 # encoding: [0x38,0xef]
+
+ ler %f0,%f1
+ ler %f2,%f3
+ ler %f4,%f5
+ ler %f6,%f7
+ ler %f8,%f9
+ ler %f10,%f11
+ ler %f12,%f13
+ ler %f14,%f15
+
+#CHECK: ldr %f0, %f1 # encoding: [0x28,0x01]
+#CHECK: ldr %f2, %f3 # encoding: [0x28,0x23]
+#CHECK: ldr %f4, %f5 # encoding: [0x28,0x45]
+#CHECK: ldr %f6, %f7 # encoding: [0x28,0x67]
+#CHECK: ldr %f8, %f9 # encoding: [0x28,0x89]
+#CHECK: ldr %f10, %f11 # encoding: [0x28,0xab]
+#CHECK: ldr %f12, %f13 # encoding: [0x28,0xcd]
+#CHECK: ldr %f14, %f15 # encoding: [0x28,0xef]
+
+ ldr %f0,%f1
+ ldr %f2,%f3
+ ldr %f4,%f5
+ ldr %f6,%f7
+ ldr %f8,%f9
+ ldr %f10,%f11
+ ldr %f12,%f13
+ ldr %f14,%f15
+
+#CHECK: lxr %f0, %f1 # encoding: [0xb3,0x65,0x00,0x01]
+#CHECK: lxr %f4, %f5 # encoding: [0xb3,0x65,0x00,0x45]
+#CHECK: lxr %f8, %f9 # encoding: [0xb3,0x65,0x00,0x89]
+#CHECK: lxr %f12, %f13 # encoding: [0xb3,0x65,0x00,0xcd]
+
+ lxr %f0,%f1
+ lxr %f4,%f5
+ lxr %f8,%f9
+ lxr %f12,%f13
+
+#CHECK: .cfi_offset %r0, 0
+#CHECK: .cfi_offset %r1, 8
+#CHECK: .cfi_offset %r2, 16
+#CHECK: .cfi_offset %r3, 24
+#CHECK: .cfi_offset %r4, 32
+#CHECK: .cfi_offset %r5, 40
+#CHECK: .cfi_offset %r6, 48
+#CHECK: .cfi_offset %r7, 56
+#CHECK: .cfi_offset %r8, 64
+#CHECK: .cfi_offset %r9, 72
+#CHECK: .cfi_offset %r10, 80
+#CHECK: .cfi_offset %r11, 88
+#CHECK: .cfi_offset %r12, 96
+#CHECK: .cfi_offset %r13, 104
+#CHECK: .cfi_offset %r14, 112
+#CHECK: .cfi_offset %r15, 120
+#CHECK: .cfi_offset %f0, 128
+#CHECK: .cfi_offset %f1, 136
+#CHECK: .cfi_offset %f2, 144
+#CHECK: .cfi_offset %f3, 152
+#CHECK: .cfi_offset %f4, 160
+#CHECK: .cfi_offset %f5, 168
+#CHECK: .cfi_offset %f6, 176
+#CHECK: .cfi_offset %f7, 184
+#CHECK: .cfi_offset %f8, 192
+#CHECK: .cfi_offset %f9, 200
+#CHECK: .cfi_offset %f10, 208
+#CHECK: .cfi_offset %f11, 216
+#CHECK: .cfi_offset %f12, 224
+#CHECK: .cfi_offset %f13, 232
+#CHECK: .cfi_offset %f14, 240
+#CHECK: .cfi_offset %f15, 248
+
+ .cfi_startproc
+ .cfi_offset %r0,0
+ .cfi_offset %r1,8
+ .cfi_offset %r2,16
+ .cfi_offset %r3,24
+ .cfi_offset %r4,32
+ .cfi_offset %r5,40
+ .cfi_offset %r6,48
+ .cfi_offset %r7,56
+ .cfi_offset %r8,64
+ .cfi_offset %r9,72
+ .cfi_offset %r10,80
+ .cfi_offset %r11,88
+ .cfi_offset %r12,96
+ .cfi_offset %r13,104
+ .cfi_offset %r14,112
+ .cfi_offset %r15,120
+ .cfi_offset %f0,128
+ .cfi_offset %f1,136
+ .cfi_offset %f2,144
+ .cfi_offset %f3,152
+ .cfi_offset %f4,160
+ .cfi_offset %f5,168
+ .cfi_offset %f6,176
+ .cfi_offset %f7,184
+ .cfi_offset %f8,192
+ .cfi_offset %f9,200
+ .cfi_offset %f10,208
+ .cfi_offset %f11,216
+ .cfi_offset %f12,224
+ .cfi_offset %f13,232
+ .cfi_offset %f14,240
+ .cfi_offset %f15,248
+ .cfi_endproc
diff --git a/test/Object/X86/objdump-disassembly-inline-relocations.test b/test/Object/X86/objdump-disassembly-inline-relocations.test
index a5875f6a2f..2ef1a435d7 100644
--- a/test/Object/X86/objdump-disassembly-inline-relocations.test
+++ b/test/Object/X86/objdump-disassembly-inline-relocations.test
@@ -2,6 +2,10 @@ RUN: llvm-objdump -d -r %p/../Inputs/trivial-object-test.coff-i386 \
RUN: | FileCheck %s -check-prefix COFF-i386
RUN: llvm-objdump -d -r %p/../Inputs/trivial-object-test.coff-x86-64 \
RUN: | FileCheck %s -check-prefix COFF-x86-64
+RUN: llvm-objdump -d -r %p/../Inputs/trivial-object-test.macho-i386 \
+RUN: | FileCheck %s -check-prefix MACHO-i386
+RUN: llvm-objdump -d -r %p/../Inputs/trivial-object-test.macho-x86-64 \
+RUN: | FileCheck %s -check-prefix MACHO-x86-64
COFF-i386: file format COFF-i386
COFF-i386: Disassembly of section .text:
@@ -30,3 +34,34 @@ COFF-x86-64: 19: IMAGE_REL_AMD64_REL32 SomeOtherFun
COFF-x86-64: 1d: 8b 44 24 24 movl 36(%rsp), %eax
COFF-x86-64: 21: 48 83 c4 28 addq $40, %rsp
COFF-x86-64: 25: c3 ret
+
+MACHO-i386: file format Mach-O 32-bit i386
+MACHO-i386: Disassembly of section __TEXT,__text:
+MACHO-i386: _main:
+MACHO-i386: 0: 83 ec 0c subl $12, %esp
+MACHO-i386: 3: c7 44 24 08 00 00 00 00 movl $0, 8(%esp)
+MACHO-i386: b: c7 04 24 24 00 00 00 movl $36, (%esp)
+MACHO-i386: e: GENERIC_RELOC_VANILLA __cstring
+MACHO-i386: 12: e8 1f 00 00 00 calll 31
+MACHO-i386: 13: GENERIC_RELOC_VANILLA __jump_table
+MACHO-i386: 17: e8 15 00 00 00 calll 21
+MACHO-i386: 18: GENERIC_RELOC_VANILLA __jump_table
+MACHO-i386: 1c: 8b 44 24 08 movl 8(%esp), %eax
+MACHO-i386: 20: 83 c4 0c addl $12, %esp
+MACHO-i386: 23: c3 ret
+
+MACHO-x86-64: file format Mach-O 64-bit x86-64
+MACHO-x86-64: Disassembly of section __TEXT,__text:
+MACHO-x86-64: _main:
+MACHO-x86-64: 0: 48 83 ec 08 subq $8, %rsp
+MACHO-x86-64: 4: c7 44 24 04 00 00 00 00 movl $0, 4(%rsp)
+MACHO-x86-64: c: 48 8d 3d 00 00 00 00 leaq (%rip), %rdi
+MACHO-x86-64: f: X86_64_RELOC_SIGNED L_.str
+MACHO-x86-64: 13: e8 00 00 00 00 callq 0
+MACHO-x86-64: 14: X86_64_RELOC_BRANCH _puts
+MACHO-x86-64: 18: 30 c0 xorb %al, %al
+MACHO-x86-64: 1a: e8 00 00 00 00 callq 0
+MACHO-x86-64: 1b: X86_64_RELOC_BRANCH _SomeOtherFunction
+MACHO-x86-64: 1f: 8b 44 24 04 movl 4(%rsp), %eax
+MACHO-x86-64: 23: 48 83 c4 08 addq $8, %rsp
+MACHO-x86-64: 27: c3 ret
diff --git a/test/Transforms/GlobalOpt/atexit.ll b/test/Transforms/GlobalOpt/atexit.ll
new file mode 100644
index 0000000000..dbcd0d7b00
--- /dev/null
+++ b/test/Transforms/GlobalOpt/atexit.ll
@@ -0,0 +1,6 @@
+; RUN: opt < %s -globalopt -S | FileCheck %s
+
+; CHECK: ModuleID
+define internal hidden i32 @__cxa_atexit(void (i8*)* nocapture %func, i8* nocapture %arg, i8* nocapture %dso_handle) nounwind readnone optsize noimplicitfloat {
+ unreachable
+}
diff --git a/test/Transforms/LoopVectorize/hoist-loads.ll b/test/Transforms/LoopVectorize/hoist-loads.ll
new file mode 100644
index 0000000000..fad17350cd
--- /dev/null
+++ b/test/Transforms/LoopVectorize/hoist-loads.ll
@@ -0,0 +1,69 @@
+; RUN: opt -loop-vectorize -force-vector-width=2 -force-vector-unroll=1 -S < %s | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
+
+@A = common global [1024 x float] zeroinitializer, align 16
+@B = common global [1024 x float] zeroinitializer, align 16
+
+; Make sure we can vectorize in the presence of hoistable conditional loads.
+; CHECK: hoist_cond_load
+; CHECK: load <2 x float>
+
+define void @hoist_cond_load() {
+entry:
+ br label %for.body
+for.body:
+ %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %if.end9 ]
+ %arrayidx = getelementptr inbounds [1024 x float]* @A, i64 0, i64 %indvars.iv
+ %arrayidx2 = getelementptr inbounds [1024 x float]* @B, i64 0, i64 %indvars.iv
+ %0 = load float* %arrayidx2, align 4
+ %cmp3 = fcmp oeq float %0, 0.000000e+00
+ br i1 %cmp3, label %if.end9, label %if.else
+
+if.else:
+ %1 = load float* %arrayidx, align 4
+ br label %if.end9
+
+if.end9:
+ %tmp.0 = phi float [ %1, %if.else ], [ 0.000000e+00, %for.body ]
+ store float %tmp.0, float* %arrayidx, align 4
+ %indvars.iv.next = add i64 %indvars.iv, 1
+ %lftr.wideiv = trunc i64 %indvars.iv.next to i32
+ %exitcond = icmp ne i32 %lftr.wideiv, 1024
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.end:
+ ret void
+}
+
+; However, we can't hoist loads whose address we have not seen unconditionally
+; accessed.
+; CHECK: dont_hoist_cond_load
+; CHECK-NOT: load <2 x float>
+
+define void @dont_hoist_cond_load() {
+entry:
+ br label %for.body
+for.body:
+ %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %if.end9 ]
+ %arrayidx = getelementptr inbounds [1024 x float]* @A, i64 0, i64 %indvars.iv
+ %arrayidx2 = getelementptr inbounds [1024 x float]* @B, i64 0, i64 %indvars.iv
+ %0 = load float* %arrayidx2, align 4
+ %cmp3 = fcmp oeq float %0, 0.000000e+00
+ br i1 %cmp3, label %if.end9, label %if.else
+
+if.else:
+ %1 = load float* %arrayidx, align 4
+ br label %if.end9
+
+if.end9:
+ %tmp.0 = phi float [ %1, %if.else ], [ 0.000000e+00, %for.body ]
+ store float %tmp.0, float* %arrayidx2, align 4
+ %indvars.iv.next = add i64 %indvars.iv, 1
+ %lftr.wideiv = trunc i64 %indvars.iv.next to i32
+ %exitcond = icmp ne i32 %lftr.wideiv, 1024
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.end:
+ ret void
+}
diff --git a/test/Transforms/LoopVectorize/induction.ll b/test/Transforms/LoopVectorize/induction.ll
new file mode 100644
index 0000000000..48bb438a86
--- /dev/null
+++ b/test/Transforms/LoopVectorize/induction.ll
@@ -0,0 +1,30 @@
+; RUN: opt < %s -loop-vectorize -force-vector-unroll=1 -force-vector-width=2 -S | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
+
+; Make sure that we can handle multiple integer induction variables.
+; CHECK: multi_int_induction
+; CHECK: vector.body:
+; CHECK: %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
+; CHECK: %normalized.idx = sub i64 %index, 0
+; CHECK: %[[VAR:.*]] = trunc i64 %normalized.idx to i32
+; CHECK: %offset.idx = add i32 190, %[[VAR]]
+define void @multi_int_induction(i32* %A, i32 %N) {
+for.body.lr.ph:
+ br label %for.body
+
+for.body:
+ %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ]
+ %count.09 = phi i32 [ 190, %for.body.lr.ph ], [ %inc, %for.body ]
+ %arrayidx2 = getelementptr inbounds i32* %A, i64 %indvars.iv
+ store i32 %count.09, i32* %arrayidx2, align 4
+ %inc = add nsw i32 %count.09, 1
+ %indvars.iv.next = add i64 %indvars.iv, 1
+ %lftr.wideiv = trunc i64 %indvars.iv.next to i32
+ %exitcond = icmp ne i32 %lftr.wideiv, %N
+ br i1 %exitcond, label %for.body, label %for.end
+
+for.end:
+ ret void
+}
+
diff --git a/test/Transforms/ObjCARC/allocas.ll b/test/Transforms/ObjCARC/allocas.ll
new file mode 100644
index 0000000000..eabd54deb7
--- /dev/null
+++ b/test/Transforms/ObjCARC/allocas.ll
@@ -0,0 +1,203 @@
+; RUN: opt -objc-arc -S < %s | FileCheck %s
+
+declare i8* @objc_retain(i8*)
+declare i8* @objc_retainAutoreleasedReturnValue(i8*)
+declare void @objc_release(i8*)
+declare i8* @objc_autorelease(i8*)
+declare i8* @objc_autoreleaseReturnValue(i8*)
+declare void @objc_autoreleasePoolPop(i8*)
+declare i8* @objc_autoreleasePoolPush()
+declare i8* @objc_retainBlock(i8*)
+
+declare i8* @objc_retainedObject(i8*)
+declare i8* @objc_unretainedObject(i8*)
+declare i8* @objc_unretainedPointer(i8*)
+
+declare void @use_pointer(i8*)
+declare void @callee()
+declare void @callee_fnptr(void ()*)
+declare void @invokee()
+declare i8* @returner()
+declare void @bar(i32 ()*)
+declare void @use_alloca(i8**)
+
+declare void @llvm.dbg.value(metadata, i64, metadata)
+
+declare i8* @objc_msgSend(i8*, i8*, ...)
+
+
+; In the presense of allocas, unconditionally remove retain/release pairs only
+; if they are known safe in both directions. This prevents matching up an inner
+; retain with the boundary guarding release in the following situation:
+;
+; %A = alloca
+; retain(%x)
+; retain(%x) <--- Inner Retain
+; store %x, %A
+; %y = load %A
+; ... DO STUFF ...
+; release(%y)
+; release(%x) <--- Guarding Release
+;
+; rdar://13750319
+
+; CHECK: define void @test1a(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_release(i8* %y)
+; CHECK: @objc_release(i8* %x)
+; CHECK: ret void
+; CHECK: }
+define void @test1a(i8* %x) {
+entry:
+ %A = alloca i8*
+ tail call i8* @objc_retain(i8* %x)
+ tail call i8* @objc_retain(i8* %x)
+ store i8* %x, i8** %A, align 8
+ %y = load i8** %A
+ call void @use_alloca(i8** %A)
+ call void @objc_release(i8* %y), !clang.imprecise_release !0
+ call void @use_pointer(i8* %x)
+ call void @objc_release(i8* %x), !clang.imprecise_release !0
+ ret void
+}
+
+; CHECK: define void @test1b(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_release(i8* %y)
+; CHECK: @objc_release(i8* %x)
+; CHECK: ret void
+; CHECK: }
+define void @test1b(i8* %x) {
+entry:
+ %A = alloca i8*
+ %gep = getelementptr i8** %A, i32 0
+ tail call i8* @objc_retain(i8* %x)
+ tail call i8* @objc_retain(i8* %x)
+ store i8* %x, i8** %gep, align 8
+ %y = load i8** %A
+ call void @use_alloca(i8** %A)
+ call void @objc_release(i8* %y), !clang.imprecise_release !0
+ call void @use_pointer(i8* %x)
+ call void @objc_release(i8* %x), !clang.imprecise_release !0
+ ret void
+}
+
+
+; CHECK: define void @test1c(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_release(i8* %y)
+; CHECK: @objc_release(i8* %x)
+; CHECK: ret void
+; CHECK: }
+define void @test1c(i8* %x) {
+entry:
+ %A = alloca i8*, i32 3
+ %gep = getelementptr i8** %A, i32 2
+ tail call i8* @objc_retain(i8* %x)
+ tail call i8* @objc_retain(i8* %x)
+ store i8* %x, i8** %gep, align 8
+ %y = load i8** %gep
+ call void @use_alloca(i8** %A)
+ call void @objc_release(i8* %y), !clang.imprecise_release !0
+ call void @use_pointer(i8* %x)
+ call void @objc_release(i8* %x), !clang.imprecise_release !0
+ ret void
+}
+
+
+; CHECK: define void @test1d(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_release(i8* %y)
+; CHECK: @objc_release(i8* %x)
+; CHECK: ret void
+; CHECK: }
+define void @test1d(i8* %x) {
+entry:
+ br i1 undef, label %use_allocaA, label %use_allocaB
+
+use_allocaA:
+ %allocaA = alloca i8*
+ br label %exit
+
+use_allocaB:
+ %allocaB = alloca i8*
+ br label %exit
+
+exit:
+ %A = phi i8** [ %allocaA, %use_allocaA ], [ %allocaB, %use_allocaB ]
+ %gep = getelementptr i8** %A, i32 0
+ tail call i8* @objc_retain(i8* %x)
+ tail call i8* @objc_retain(i8* %x)
+ store i8* %x, i8** %gep, align 8
+ %y = load i8** %gep
+ call void @use_alloca(i8** %A)
+ call void @objc_release(i8* %y), !clang.imprecise_release !0
+ call void @use_pointer(i8* %x)
+ call void @objc_release(i8* %x), !clang.imprecise_release !0
+ ret void
+}
+
+; CHECK: define void @test1e(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_release(i8* %y)
+; CHECK: @objc_release(i8* %x)
+; CHECK: ret void
+; CHECK: }
+define void @test1e(i8* %x) {
+entry:
+ br i1 undef, label %use_allocaA, label %use_allocaB
+
+use_allocaA:
+ %allocaA = alloca i8*, i32 4
+ br label %exit
+
+use_allocaB:
+ %allocaB = alloca i8*, i32 4
+ br label %exit
+
+exit:
+ %A = phi i8** [ %allocaA, %use_allocaA ], [ %allocaB, %use_allocaB ]
+ %gep = getelementptr i8** %A, i32 2
+ tail call i8* @objc_retain(i8* %x)
+ tail call i8* @objc_retain(i8* %x)
+ store i8* %x, i8** %gep, align 8
+ %y = load i8** %gep
+ call void @use_alloca(i8** %A)
+ call void @objc_release(i8* %y), !clang.imprecise_release !0
+ call void @use_pointer(i8* %x)
+ call void @objc_release(i8* %x), !clang.imprecise_release !0
+ ret void
+}
+
+; CHECK: define void @test1f(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_retain(i8* %x)
+; CHECK: @objc_release(i8* %y)
+; CHECK: @objc_release(i8* %x)
+; CHECK: ret void
+; CHECK: }
+define void @test1f(i8* %x) {
+entry:
+ %allocaOne = alloca i8*
+ %allocaTwo = alloca i8*
+ %A = select i1 undef, i8** %allocaOne, i8** %allocaTwo
+ tail call i8* @objc_retain(i8* %x)
+ tail call i8* @objc_retain(i8* %x)
+ store i8* %x, i8** %A, align 8
+ %y = load i8** %A
+ call void @use_alloca(i8** %A)
+ call void @objc_release(i8* %y), !clang.imprecise_release !0
+ call void @use_pointer(i8* %x)
+ call void @objc_release(i8* %x), !clang.imprecise_release !0
+ ret void
+}
+
+
+!0 = metadata !{}
+
+declare i32 @__gxx_personality_v0(...)
diff --git a/test/Transforms/SLPVectorizer/X86/diamond.ll b/test/Transforms/SLPVectorizer/X86/diamond.ll
index 49c8712d20..8959b0d9ee 100644
--- a/test/Transforms/SLPVectorizer/X86/diamond.ll
+++ b/test/Transforms/SLPVectorizer/X86/diamond.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -basicaa -slp-vectorizer -dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7-avx | FileCheck %s
+; RUN: opt < %s -basicaa -slp-vectorizer -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7-avx | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.8.0"
@@ -74,6 +74,34 @@ entry:
%add20 = mul i32 %3, %mul238
%arrayidx21 = getelementptr inbounds i32* %B, i64 3
store i32 %add20, i32* %arrayidx21, align 4
- ret i32 %0 ;<--------- This value has multiple users and can't be vectorized.
+ ret i32 %0 ;<--------- This value has multiple users
}
+; In this example we have an external user that is not the first element in the vector.
+; CHECK: @extr_user1
+; CHECK: store <4 x i32>
+; CHECK-NEXT: extractelement <4 x i32>
+; CHECK: ret
+define i32 @extr_user1(i32* noalias nocapture %B, i32* noalias nocapture %A, i32 %n, i32 %m) {
+entry:
+ %0 = load i32* %A, align 4
+ %mul238 = add i32 %m, %n
+ %add = mul i32 %0, %mul238
+ store i32 %add, i32* %B, align 4
+ %arrayidx4 = getelementptr inbounds i32* %A, i64 1
+ %1 = load i32* %arrayidx4, align 4
+ %add8 = mul i32 %1, %mul238
+ %arrayidx9 = getelementptr inbounds i32* %B, i64 1
+ store i32 %add8, i32* %arrayidx9, align 4
+ %arrayidx10 = getelementptr inbounds i32* %A, i64 2
+ %2 = load i32* %arrayidx10, align 4
+ %add14 = mul i32 %2, %mul238
+ %arrayidx15 = getelementptr inbounds i32* %B, i64 2
+ store i32 %add14, i32* %arrayidx15, align 4
+ %arrayidx16 = getelementptr inbounds i32* %A, i64 3
+ %3 = load i32* %arrayidx16, align 4
+ %add20 = mul i32 %3, %mul238
+ %arrayidx21 = getelementptr inbounds i32* %B, i64 3
+ store i32 %add20, i32* %arrayidx21, align 4
+ ret i32 %1 ;<--------- This value has multiple users
+}
diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp
index c676a05cb6..11ac0de104 100644
--- a/tools/bugpoint/Miscompilation.cpp
+++ b/tools/bugpoint/Miscompilation.cpp
@@ -130,7 +130,7 @@ ReduceMiscompilingPasses::doTest(std::vector<std::string> &Prefix,
//
OwningPtr<Module> PrefixOutput(ParseInputFile(BitcodeResult,
BD.getContext()));
- if (PrefixOutput == 0) {
+ if (!PrefixOutput) {
errs() << BD.getToolName() << ": Error reading bitcode file '"
<< BitcodeResult << "'!\n";
exit(1);
diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp
index 1866403cf8..ac7db20aed 100644
--- a/tools/lli/lli.cpp
+++ b/tools/lli/lli.cpp
@@ -337,14 +337,14 @@ int main(int argc, char **argv, char * const *envp) {
Mod->setTargetTriple(Triple::normalize(TargetTriple));
// Enable MCJIT if desired.
- JITMemoryManager *JMM = 0;
+ RTDyldMemoryManager *RTDyldMM = 0;
if (UseMCJIT && !ForceInterpreter) {
builder.setUseMCJIT(true);
if (RemoteMCJIT)
- JMM = new RecordingMemoryManager();
+ RTDyldMM = new RecordingMemoryManager();
else
- JMM = new SectionMemoryManager();
- builder.setJITMemoryManager(JMM);
+ RTDyldMM = new SectionMemoryManager();
+ builder.setMCJITMemoryManager(RTDyldMM);
} else {
if (RemoteMCJIT) {
errs() << "error: Remote process execution requires -use-mcjit\n";
@@ -461,7 +461,7 @@ int main(int argc, char **argv, char * const *envp) {
int Result;
if (RemoteMCJIT) {
- RecordingMemoryManager *MM = static_cast<RecordingMemoryManager*>(JMM);
+ RecordingMemoryManager *MM = static_cast<RecordingMemoryManager*>(RTDyldMM);
// Everything is prepared now, so lay out our program for the target
// address space, assign the section addresses to resolve any relocations,
// and send it to the target.
@@ -495,8 +495,8 @@ int main(int argc, char **argv, char * const *envp) {
// invalidated will be known.
(void)EE->getPointerToFunction(EntryFn);
// Clear instruction cache before code will be executed.
- if (JMM)
- static_cast<SectionMemoryManager*>(JMM)->invalidateInstructionCache();
+ if (RTDyldMM)
+ static_cast<SectionMemoryManager*>(RTDyldMM)->invalidateInstructionCache();
// Run main.
Result = EE->runFunctionAsMain(EntryFn, InputArgv, envp);
diff --git a/tools/llvm-mc/llvm-mc.cpp b/tools/llvm-mc/llvm-mc.cpp
index 4b01c33504..289a445089 100644
--- a/tools/llvm-mc/llvm-mc.cpp
+++ b/tools/llvm-mc/llvm-mc.cpp
@@ -379,12 +379,12 @@ int main(int argc, char **argv) {
// it later.
SrcMgr.setIncludeDirs(IncludeDirs);
- llvm::OwningPtr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(TripleName));
- assert(MAI && "Unable to create target asm info!");
-
llvm::OwningPtr<MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TripleName));
assert(MRI && "Unable to create target register info!");
+ llvm::OwningPtr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(*MRI, TripleName));
+ assert(MAI && "Unable to create target asm info!");
+
// FIXME: This is not pretty. MCContext has a ptr to MCObjectFileInfo and
// MCObjectFileInfo needs a MCContext reference in order to initialize itself.
OwningPtr<MCObjectFileInfo> MOFI(new MCObjectFileInfo());
diff --git a/tools/llvm-objdump/MachODump.cpp b/tools/llvm-objdump/MachODump.cpp
index 6797e2dc5b..c7e5cc1ede 100644
--- a/tools/llvm-objdump/MachODump.cpp
+++ b/tools/llvm-objdump/MachODump.cpp
@@ -251,11 +251,12 @@ static void DisassembleInputMachO2(StringRef Filename,
InstrAnalysis(TheTarget->createMCInstrAnalysis(InstrInfo.get()));
// Set up disassembler.
- OwningPtr<const MCAsmInfo> AsmInfo(TheTarget->createMCAsmInfo(TripleName));
+ OwningPtr<const MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TripleName));
+ OwningPtr<const MCAsmInfo> AsmInfo(
+ TheTarget->createMCAsmInfo(*MRI, TripleName));
OwningPtr<const MCSubtargetInfo>
STI(TheTarget->createMCSubtargetInfo(TripleName, "", ""));
OwningPtr<const MCDisassembler> DisAsm(TheTarget->createMCDisassembler(*STI));
- OwningPtr<const MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TripleName));
int AsmPrinterVariant = AsmInfo->getAssemblerDialect();
OwningPtr<MCInstPrinter>
IP(TheTarget->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *InstrInfo,
diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp
index 247b90f030..053123fd3e 100644
--- a/tools/llvm-objdump/llvm-objdump.cpp
+++ b/tools/llvm-objdump/llvm-objdump.cpp
@@ -272,8 +272,15 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
if (Symbols.empty())
Symbols.push_back(std::make_pair(0, name));
+ OwningPtr<const MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TripleName));
+ if (!MRI) {
+ errs() << "error: no register info for target " << TripleName << "\n";
+ return;
+ }
+
// Set up disassembler.
- OwningPtr<const MCAsmInfo> AsmInfo(TheTarget->createMCAsmInfo(TripleName));
+ OwningPtr<const MCAsmInfo> AsmInfo(
+ TheTarget->createMCAsmInfo(*MRI, TripleName));
if (!AsmInfo) {
errs() << "error: no assembly info for target " << TripleName << "\n";
@@ -295,12 +302,6 @@ static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
return;
}
- OwningPtr<const MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TripleName));
- if (!MRI) {
- errs() << "error: no register info for target " << TripleName << "\n";
- return;
- }
-
OwningPtr<const MCInstrInfo> MII(TheTarget->createMCInstrInfo());
if (!MII) {
errs() << "error: no instruction info for target " << TripleName << "\n";
diff --git a/unittests/ADT/APFloatTest.cpp b/unittests/ADT/APFloatTest.cpp
index 278983565c..099f6db7cb 100644
--- a/unittests/ADT/APFloatTest.cpp
+++ b/unittests/ADT/APFloatTest.cpp
@@ -33,6 +33,29 @@ static std::string convertToString(double d, unsigned Prec, unsigned Pad) {
namespace {
+TEST(APFloatTest, FMA) {
+ APFloat::roundingMode rdmd = APFloat::rmNearestTiesToEven;
+
+ {
+ APFloat f1(14.5f);
+ APFloat f2(-14.5f);
+ APFloat f3(225.0f);
+ f1.fusedMultiplyAdd(f2, f3, APFloat::rmNearestTiesToEven);
+ EXPECT_EQ(14.75f, f1.convertToFloat());
+ }
+
+ {
+ APFloat Val2(2.0f);
+ APFloat f1((float)1.17549435e-38F);
+ APFloat f2((float)1.17549435e-38F);
+ f1.divide(Val2, rdmd);
+ f2.divide(Val2, rdmd);
+ APFloat f3(12.0f);
+ f1.fusedMultiplyAdd(f2, f3, APFloat::rmNearestTiesToEven);
+ EXPECT_EQ(12.0f, f1.convertToFloat());
+ }
+}
+
TEST(APFloatTest, Denormal) {
APFloat::roundingMode rdmd = APFloat::rmNearestTiesToEven;
diff --git a/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp b/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp
index 0061e30e7a..abe8be450a 100644
--- a/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp
+++ b/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp
@@ -98,7 +98,7 @@ protected:
void compileAndRun(int ExpectedRC = OriginalRC) {
// This function shouldn't be called until after SetUp.
- ASSERT_TRUE(0 != TheJIT);
+ ASSERT_TRUE(TheJIT.isValid());
ASSERT_TRUE(0 != Main);
TheJIT->finalizeObject();
diff --git a/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h b/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
index b0e98a88de..e99aa99160 100644
--- a/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
+++ b/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
@@ -165,7 +165,7 @@ protected:
std::string Error;
TheJIT.reset(EB.setEngineKind(EngineKind::JIT)
.setUseMCJIT(true) /* can this be folded into the EngineKind enum? */
- .setJITMemoryManager(MM)
+ .setMCJITMemoryManager(MM)
.setErrorStr(&Error)
.setOptLevel(CodeGenOpt::None)
.setAllocateGVsWithCode(false) /*does this do anything?*/
@@ -188,7 +188,7 @@ protected:
OwningPtr<TargetMachine> TM;
OwningPtr<ExecutionEngine> TheJIT;
IRBuilder<> Builder;
- JITMemoryManager *MM;
+ RTDyldMemoryManager *MM;
OwningPtr<Module> M;
};
diff --git a/unittests/Support/ManagedStatic.cpp b/unittests/Support/ManagedStatic.cpp
index 8ddad38ecf..1497f4e340 100644
--- a/unittests/Support/ManagedStatic.cpp
+++ b/unittests/Support/ManagedStatic.cpp
@@ -19,7 +19,8 @@ using namespace llvm;
namespace {
-#if defined(HAVE_PTHREAD_H) && !__has_feature(memory_sanitizer)
+#if LLVM_ENABLE_THREADS != 0 && defined(HAVE_PTHREAD_H) && \
+ !__has_feature(memory_sanitizer)
namespace test1 {
llvm::ManagedStatic<int> ms;
void *helper(void*) {
diff --git a/utils/FileCheck/FileCheck.cpp b/utils/FileCheck/FileCheck.cpp
index cd7bb5a44f..07294a3b63 100644
--- a/utils/FileCheck/FileCheck.cpp
+++ b/utils/FileCheck/FileCheck.cpp
@@ -60,6 +60,12 @@ class Pattern {
/// used for trailing CHECK-NOTs.
bool MatchEOF;
+ /// MatchNot
+ bool MatchNot;
+
+ /// MatchDag
+ bool MatchDag;
+
/// FixedStr - If non-empty, this pattern is a fixed string match with the
/// specified fixed string.
StringRef FixedStr;
@@ -83,7 +89,8 @@ class Pattern {
public:
- Pattern(bool matchEOF = false) : MatchEOF(matchEOF) { }
+ Pattern(bool matchEOF = false)
+ : MatchEOF(matchEOF), MatchNot(false), MatchDag(false) { }
/// getLoc - Return the location in source code.
SMLoc getLoc() const { return PatternLoc; }
@@ -108,6 +115,12 @@ public:
void PrintFailureInfo(const SourceMgr &SM, StringRef Buffer,
const StringMap<StringRef> &VariableTable) const;
+ void setMatchNot(bool Not) { MatchNot = Not; }
+ bool getMatchNot() const { return MatchNot; }
+
+ void setMatchDag(bool Dag) { MatchDag = Dag; }
+ bool getMatchDag() const { return MatchDag; }
+
private:
static void AddFixedStringToRegEx(StringRef FixedStr, std::string &TheStr);
bool AddRegExToRegEx(StringRef RS, unsigned &CurParen, SourceMgr &SM);
@@ -581,13 +594,30 @@ struct CheckString {
/// to a CHECK: directive.
bool IsCheckNext;
- /// NotStrings - These are all of the strings that are disallowed from
+ /// DagNotStrings - These are all of the strings that are disallowed from
/// occurring between this match string and the previous one (or start of
/// file).
- std::vector<Pattern> NotStrings;
+ std::vector<Pattern> DagNotStrings;
CheckString(const Pattern &P, SMLoc L, bool isCheckNext)
: Pat(P), Loc(L), IsCheckNext(isCheckNext) {}
+
+ /// Check - Match check string and its "not strings" and/or "dag strings".
+ size_t Check(const SourceMgr &SM, StringRef Buffer, size_t &MatchLen,
+ StringMap<StringRef> &VariableTable) const;
+
+ /// CheckNext - Verify there is a single line in the given buffer.
+ bool CheckNext(const SourceMgr &SM, StringRef Buffer) const;
+
+ /// CheckNot - Verify there's no "not strings" in the given buffer.
+ bool CheckNot(const SourceMgr &SM, StringRef Buffer,
+ const std::vector<const Pattern *> &NotStrings,
+ StringMap<StringRef> &VariableTable) const;
+
+ /// CheckDag - Match "dag strings" and their mixed "not strings".
+ size_t CheckDag(const SourceMgr &SM, StringRef Buffer,
+ std::vector<const Pattern *> &NotStrings,
+ StringMap<StringRef> &VariableTable) const;
};
/// Canonicalize whitespaces in the input file. Line endings are replaced
@@ -652,7 +682,7 @@ static bool ReadCheckFile(SourceMgr &SM,
// Find all instances of CheckPrefix followed by : in the file.
StringRef Buffer = F->getBuffer();
- std::vector<Pattern> NotMatches;
+ std::vector<Pattern> DagNotMatches;
// LineNumber keeps track of the line on which CheckPrefix instances are
// found.
@@ -673,7 +703,7 @@ static bool ReadCheckFile(SourceMgr &SM,
// When we find a check prefix, keep track of whether we find CHECK: or
// CHECK-NEXT:
- bool IsCheckNext = false, IsCheckNot = false;
+ bool IsCheckNext = false, IsCheckNot = false, IsCheckDag = false;
// Verify that the : is present after the prefix.
if (Buffer[CheckPrefix.size()] == ':') {
@@ -686,6 +716,10 @@ static bool ReadCheckFile(SourceMgr &SM,
memcmp(Buffer.data()+CheckPrefix.size(), "-NOT:", 5) == 0) {
Buffer = Buffer.substr(CheckPrefix.size()+5);
IsCheckNot = true;
+ } else if (Buffer.size() > CheckPrefix.size()+5 &&
+ memcmp(Buffer.data()+CheckPrefix.size(), "-DAG:", 5) == 0) {
+ Buffer = Buffer.substr(CheckPrefix.size()+5);
+ IsCheckDag = true;
} else {
Buffer = Buffer.substr(1);
continue;
@@ -706,6 +740,9 @@ static bool ReadCheckFile(SourceMgr &SM,
if (P.ParsePattern(Buffer.substr(0, EOL), SM, LineNumber))
return true;
+ P.setMatchNot(IsCheckNot);
+ P.setMatchDag(IsCheckDag);
+
Buffer = Buffer.substr(EOL);
// Verify that CHECK-NEXT lines have at least one CHECK line before them.
@@ -717,9 +754,9 @@ static bool ReadCheckFile(SourceMgr &SM,
return true;
}
- // Handle CHECK-NOT.
- if (IsCheckNot) {
- NotMatches.push_back(P);
+ // Handle CHECK-DAG/-NOT.
+ if (IsCheckDag || IsCheckNot) {
+ DagNotMatches.push_back(P);
continue;
}
@@ -727,15 +764,15 @@ static bool ReadCheckFile(SourceMgr &SM,
CheckStrings.push_back(CheckString(P,
PatternLoc,
IsCheckNext));
- std::swap(NotMatches, CheckStrings.back().NotStrings);
+ std::swap(DagNotMatches, CheckStrings.back().DagNotStrings);
}
- // Add an EOF pattern for any trailing CHECK-NOTs.
- if (!NotMatches.empty()) {
+ // Add an EOF pattern for any trailing CHECK-DAG/-NOTs.
+ if (!DagNotMatches.empty()) {
CheckStrings.push_back(CheckString(Pattern(true),
SMLoc::getFromPointer(Buffer.data()),
false));
- std::swap(NotMatches, CheckStrings.back().NotStrings);
+ std::swap(DagNotMatches, CheckStrings.back().DagNotStrings);
}
if (CheckStrings.empty()) {
@@ -747,11 +784,11 @@ static bool ReadCheckFile(SourceMgr &SM,
return false;
}
-static void PrintCheckFailed(const SourceMgr &SM, const CheckString &CheckStr,
- StringRef Buffer,
+static void PrintCheckFailed(const SourceMgr &SM, const SMLoc &Loc,
+ const Pattern &Pat, StringRef Buffer,
StringMap<StringRef> &VariableTable) {
// Otherwise, we have an error, emit an error message.
- SM.PrintMessage(CheckStr.Loc, SourceMgr::DK_Error,
+ SM.PrintMessage(Loc, SourceMgr::DK_Error,
"expected string not found in input");
// Print the "scanning from here" line. If the current position is at the
@@ -762,7 +799,13 @@ static void PrintCheckFailed(const SourceMgr &SM, const CheckString &CheckStr,
"scanning from here");
// Allow the pattern to print additional information if desired.
- CheckStr.Pat.PrintFailureInfo(SM, Buffer, VariableTable);
+ Pat.PrintFailureInfo(SM, Buffer, VariableTable);
+}
+
+static void PrintCheckFailed(const SourceMgr &SM, const CheckString &CheckStr,
+ StringRef Buffer,
+ StringMap<StringRef> &VariableTable) {
+ PrintCheckFailed(SM, CheckStr.Loc, CheckStr.Pat, Buffer, VariableTable);
}
/// CountNumNewlinesBetween - Count the number of newlines in the specified
@@ -785,6 +828,178 @@ static unsigned CountNumNewlinesBetween(StringRef Range) {
}
}
+size_t CheckString::Check(const SourceMgr &SM, StringRef Buffer,
+ size_t &MatchLen,
+ StringMap<StringRef> &VariableTable) const {
+ size_t LastPos = 0;
+ std::vector<const Pattern *> NotStrings;
+
+ // Match "dag strings" (with mixed "not strings" if any).
+ LastPos = CheckDag(SM, Buffer, NotStrings, VariableTable);
+ if (LastPos == StringRef::npos)
+ return StringRef::npos;
+
+ // Match itself from the last position after matching CHECK-DAG.
+ StringRef MatchBuffer = Buffer.substr(LastPos);
+ size_t MatchPos = Pat.Match(MatchBuffer, MatchLen, VariableTable);
+ if (MatchPos == StringRef::npos) {
+ PrintCheckFailed(SM, *this, MatchBuffer, VariableTable);
+ return StringRef::npos;
+ }
+ MatchPos += LastPos;
+
+ StringRef SkippedRegion = Buffer.substr(LastPos, MatchPos);
+
+ // If this check is a "CHECK-NEXT", verify that the previous match was on
+ // the previous line (i.e. that there is one newline between them).
+ if (CheckNext(SM, SkippedRegion))
+ return StringRef::npos;
+
+ // If this match had "not strings", verify that they don't exist in the
+ // skipped region.
+ if (CheckNot(SM, SkippedRegion, NotStrings, VariableTable))
+ return StringRef::npos;
+
+ return MatchPos;
+}
+
+bool CheckString::CheckNext(const SourceMgr &SM, StringRef Buffer) const {
+ if (!IsCheckNext)
+ return false;
+
+ // Count the number of newlines between the previous match and this one.
+ assert(Buffer.data() !=
+ SM.getMemoryBuffer(
+ SM.FindBufferContainingLoc(
+ SMLoc::getFromPointer(Buffer.data())))->getBufferStart() &&
+ "CHECK-NEXT can't be the first check in a file");
+
+ unsigned NumNewLines = CountNumNewlinesBetween(Buffer);
+
+ if (NumNewLines == 0) {
+ SM.PrintMessage(Loc, SourceMgr::DK_Error, CheckPrefix+
+ "-NEXT: is on the same line as previous match");
+ SM.PrintMessage(SMLoc::getFromPointer(Buffer.end()),
+ SourceMgr::DK_Note, "'next' match was here");
+ SM.PrintMessage(SMLoc::getFromPointer(Buffer.data()), SourceMgr::DK_Note,
+ "previous match ended here");
+ return true;
+ }
+
+ if (NumNewLines != 1) {
+ SM.PrintMessage(Loc, SourceMgr::DK_Error, CheckPrefix+
+ "-NEXT: is not on the line after the previous match");
+ SM.PrintMessage(SMLoc::getFromPointer(Buffer.end()),
+ SourceMgr::DK_Note, "'next' match was here");
+ SM.PrintMessage(SMLoc::getFromPointer(Buffer.data()), SourceMgr::DK_Note,
+ "previous match ended here");
+ return true;
+ }
+
+ return false;
+}
+
+bool CheckString::CheckNot(const SourceMgr &SM, StringRef Buffer,
+ const std::vector<const Pattern *> &NotStrings,
+ StringMap<StringRef> &VariableTable) const {
+ for (unsigned ChunkNo = 0, e = NotStrings.size();
+ ChunkNo != e; ++ChunkNo) {
+ const Pattern *Pat = NotStrings[ChunkNo];
+ assert(Pat->getMatchNot() && "Expect CHECK-NOT!");
+
+ size_t MatchLen = 0;
+ size_t Pos = Pat->Match(Buffer, MatchLen, VariableTable);
+
+ if (Pos == StringRef::npos) continue;
+
+ SM.PrintMessage(SMLoc::getFromPointer(Buffer.data()+Pos),
+ SourceMgr::DK_Error,
+ CheckPrefix+"-NOT: string occurred!");
+ SM.PrintMessage(Pat->getLoc(), SourceMgr::DK_Note,
+ CheckPrefix+"-NOT: pattern specified here");
+ return true;
+ }
+
+ return false;
+}
+
+size_t CheckString::CheckDag(const SourceMgr &SM, StringRef Buffer,
+ std::vector<const Pattern *> &NotStrings,
+ StringMap<StringRef> &VariableTable) const {
+ if (DagNotStrings.empty())
+ return 0;
+
+ size_t LastPos = 0;
+ size_t StartPos = LastPos;
+
+ for (unsigned ChunkNo = 0, e = DagNotStrings.size();
+ ChunkNo != e; ++ChunkNo) {
+ const Pattern &Pat = DagNotStrings[ChunkNo];
+
+ assert((Pat.getMatchDag() ^ Pat.getMatchNot()) &&
+ "Invalid CHECK-DAG or CHECK-NOT!");
+
+ if (Pat.getMatchNot()) {
+ NotStrings.push_back(&Pat);
+ continue;
+ }
+
+ assert(Pat.getMatchDag() && "Expect CHECK-DAG!");
+
+ size_t MatchLen = 0, MatchPos;
+
+ // CHECK-DAG always matches from the start.
+ StringRef MatchBuffer = Buffer.substr(StartPos);
+ MatchPos = Pat.Match(MatchBuffer, MatchLen, VariableTable);
+ // With a group of CHECK-DAGs, a single mismatching means the match on
+ // that group of CHECK-DAGs fails immediately.
+ if (MatchPos == StringRef::npos) {
+ PrintCheckFailed(SM, Pat.getLoc(), Pat, MatchBuffer, VariableTable);
+ return StringRef::npos;
+ }
+ // Re-calc it as the offset relative to the start of the original string.
+ MatchPos += StartPos;
+
+ if (!NotStrings.empty()) {
+ if (MatchPos < LastPos) {
+ // Reordered?
+ SM.PrintMessage(SMLoc::getFromPointer(Buffer.data() + MatchPos),
+ SourceMgr::DK_Error,
+ CheckPrefix+"-DAG: found a match of CHECK-DAG"
+ " reordering across a CHECK-NOT");
+ SM.PrintMessage(SMLoc::getFromPointer(Buffer.data() + LastPos),
+ SourceMgr::DK_Note,
+ CheckPrefix+"-DAG: the farthest match of CHECK-DAG"
+ " is found here");
+ SM.PrintMessage(NotStrings[0]->getLoc(), SourceMgr::DK_Note,
+ CheckPrefix+"-NOT: the crossed pattern specified"
+ " here");
+ SM.PrintMessage(Pat.getLoc(), SourceMgr::DK_Note,
+ CheckPrefix+"-DAG: the reordered pattern specified"
+ " here");
+ return StringRef::npos;
+ }
+ // All subsequent CHECK-DAGs should be matched from the farthest
+ // position of all precedent CHECK-DAGs (including this one.)
+ StartPos = LastPos;
+ // If there's CHECK-NOTs between two CHECK-DAGs or from CHECK to
+ // CHECK-DAG, verify that there's no 'not' strings occurred in that
+ // region.
+ StringRef SkippedRegion = Buffer.substr(LastPos, MatchPos);
+ size_t Pos = CheckNot(SM, SkippedRegion, NotStrings, VariableTable);
+ if (Pos != StringRef::npos)
+ return StringRef::npos;
+ // Clear "not strings".
+ NotStrings.clear();
+ }
+
+ // Update the last position with CHECK-DAG matches.
+ LastPos = std::max(MatchPos + MatchLen, LastPos);
+ }
+
+ return LastPos;
+}
+
int main(int argc, char **argv) {
sys::PrintStackTraceOnErrorSignal();
PrettyStackTraceProgram X(argc, argv);
@@ -825,76 +1040,17 @@ int main(int argc, char **argv) {
// file.
StringRef Buffer = F->getBuffer();
- const char *LastMatch = Buffer.data();
-
for (unsigned StrNo = 0, e = CheckStrings.size(); StrNo != e; ++StrNo) {
const CheckString &CheckStr = CheckStrings[StrNo];
- StringRef SearchFrom = Buffer;
-
// Find StrNo in the file.
size_t MatchLen = 0;
- size_t MatchPos = CheckStr.Pat.Match(Buffer, MatchLen, VariableTable);
- Buffer = Buffer.substr(MatchPos);
+ size_t MatchPos = CheckStr.Check(SM, Buffer, MatchLen, VariableTable);
- // If we didn't find a match, reject the input.
- if (MatchPos == StringRef::npos) {
- PrintCheckFailed(SM, CheckStr, SearchFrom, VariableTable);
+ if (MatchPos == StringRef::npos)
return 1;
- }
-
- StringRef SkippedRegion(LastMatch, Buffer.data()-LastMatch);
-
- // If this check is a "CHECK-NEXT", verify that the previous match was on
- // the previous line (i.e. that there is one newline between them).
- if (CheckStr.IsCheckNext) {
- // Count the number of newlines between the previous match and this one.
- assert(LastMatch != F->getBufferStart() &&
- "CHECK-NEXT can't be the first check in a file");
-
- unsigned NumNewLines = CountNumNewlinesBetween(SkippedRegion);
- if (NumNewLines == 0) {
- SM.PrintMessage(CheckStr.Loc, SourceMgr::DK_Error,
- CheckPrefix+"-NEXT: is on the same line as previous match");
- SM.PrintMessage(SMLoc::getFromPointer(Buffer.data()),
- SourceMgr::DK_Note, "'next' match was here");
- SM.PrintMessage(SMLoc::getFromPointer(LastMatch), SourceMgr::DK_Note,
- "previous match was here");
- return 1;
- }
-
- if (NumNewLines != 1) {
- SM.PrintMessage(CheckStr.Loc, SourceMgr::DK_Error, CheckPrefix+
- "-NEXT: is not on the line after the previous match");
- SM.PrintMessage(SMLoc::getFromPointer(Buffer.data()),
- SourceMgr::DK_Note, "'next' match was here");
- SM.PrintMessage(SMLoc::getFromPointer(LastMatch), SourceMgr::DK_Note,
- "previous match was here");
- return 1;
- }
- }
-
- // If this match had "not strings", verify that they don't exist in the
- // skipped region.
- for (unsigned ChunkNo = 0, e = CheckStr.NotStrings.size();
- ChunkNo != e; ++ChunkNo) {
- size_t MatchLen = 0;
- size_t Pos = CheckStr.NotStrings[ChunkNo].Match(SkippedRegion, MatchLen,
- VariableTable);
- if (Pos == StringRef::npos) continue;
-
- SM.PrintMessage(SMLoc::getFromPointer(LastMatch+Pos), SourceMgr::DK_Error,
- CheckPrefix+"-NOT: string occurred!");
- SM.PrintMessage(CheckStr.NotStrings[ChunkNo].getLoc(), SourceMgr::DK_Note,
- CheckPrefix+"-NOT: pattern specified here");
- return 1;
- }
-
- // Otherwise, everything is good. Step over the matched text and remember
- // the position after the match as the end of the last match.
- Buffer = Buffer.substr(MatchLen);
- LastMatch = Buffer.data();
+ Buffer = Buffer.substr(MatchPos + MatchLen);
}
return 0;
diff --git a/utils/unittest/CMakeLists.txt b/utils/unittest/CMakeLists.txt
index 70ed35df2e..8bdfee15c1 100644
--- a/utils/unittest/CMakeLists.txt
+++ b/utils/unittest/CMakeLists.txt
@@ -27,6 +27,10 @@ endif()
set(LLVM_REQUIRES_RTTI 1)
add_definitions( -DGTEST_HAS_RTTI=0 )
+if (NOT LLVM_ENABLE_THREADS)
+ add_definitions( -DGTEST_HAS_PTHREAD=0 )
+endif()
+
# Visual Studio 2012 only supports up to 8 template parameters in
# std::tr1::tuple by default, but gtest requires 10
if(MSVC AND MSVC_VERSION EQUAL 1700)