[clang] [compiler-rt] [libc] [libunwind] [lld] [lldb] [llvm] Add NXP EZH (SmartDMA) architecture (PR #201498)

via cfe-commits cfe-commits at lists.llvm.org
Thu Jun 4 08:22:18 PDT 2026


https://github.com/rpasek updated https://github.com/llvm/llvm-project/pull/201498

>From 32b8072d801c04ba2fa87889ec889c3706bd008d Mon Sep 17 00:00:00 2001
From: Richard Pasek <rpasek at google.com>
Date: Mon, 1 Jun 2026 20:25:00 -0400
Subject: [PATCH 1/7] [llvm] Add NXP EZH target backend

This commit introduces the core LLVM backend support for the NXP EZH
(SmartDMA) processor architecture, including instruction definitions,
registers, calling conventions, frame lowering, and disassembly.

Information sources:
* SmartDMA Cookbook (AN14650.pdf)
* fsl_smartdma_prv.h
---
 llvm/CMakeLists.txt                           |     1 +
 llvm/Maintainers.md                           |     5 +
 llvm/include/llvm/BinaryFormat/ELF.h          |     6 +
 .../llvm/BinaryFormat/ELFRelocs/EZH.def       |    19 +
 llvm/include/llvm/IR/RuntimeLibcalls.td       |     2 +-
 llvm/include/llvm/TargetParser/Triple.h       |     3 +-
 llvm/lib/Target/EZH/AsmParser/CMakeLists.txt  |    18 +
 .../lib/Target/EZH/AsmParser/EZHAsmParser.cpp |   325 +
 llvm/lib/Target/EZH/CMakeLists.txt            |    58 +
 .../Target/EZH/Disassembler/CMakeLists.txt    |    14 +
 .../EZH/Disassembler/EZHDisassembler.cpp      |   174 +
 .../Target/EZH/Disassembler/EZHDisassembler.h |    34 +
 llvm/lib/Target/EZH/EZH.h                     |    37 +
 llvm/lib/Target/EZH/EZH.td                    |    55 +
 llvm/lib/Target/EZH/EZHAsmPrinter.cpp         |   274 +
 llvm/lib/Target/EZH/EZHBasicBlockInfo.cpp     |    86 +
 llvm/lib/Target/EZH/EZHBasicBlockInfo.h       |    89 +
 llvm/lib/Target/EZH/EZHBitSliceInjection.cpp  |   131 +
 llvm/lib/Target/EZH/EZHBranchFixup.cpp        |    55 +
 llvm/lib/Target/EZH/EZHCallingConv.td         |    36 +
 llvm/lib/Target/EZH/EZHCondCode.h             |    45 +
 llvm/lib/Target/EZH/EZHConstantIslandPass.cpp |   703 +
 llvm/lib/Target/EZH/EZHConstantPoolValue.h    |   164 +
 llvm/lib/Target/EZH/EZHFrameLowering.cpp      |   485 +
 llvm/lib/Target/EZH/EZHFrameLowering.h        |    70 +
 llvm/lib/Target/EZH/EZHISelDAGToDAG.cpp       |   277 +
 llvm/lib/Target/EZH/EZHISelLowering.cpp       |  1862 +
 llvm/lib/Target/EZH/EZHISelLowering.h         |   135 +
 llvm/lib/Target/EZH/EZHInstrFormats.td        |   409 +
 llvm/lib/Target/EZH/EZHInstrInfo.cpp          |   495 +
 llvm/lib/Target/EZH/EZHInstrInfo.h            |    92 +
 llvm/lib/Target/EZH/EZHInstrInfo.td           |  1248 +
 llvm/lib/Target/EZH/EZHMCInstLower.cpp        |    89 +
 llvm/lib/Target/EZH/EZHMCInstLower.h          |    44 +
 .../lib/Target/EZH/EZHMachineFunctionInfo.cpp |    20 +
 llvm/lib/Target/EZH/EZHMachineFunctionInfo.h  |    66 +
 llvm/lib/Target/EZH/EZHRegisterInfo.cpp       |   335 +
 llvm/lib/Target/EZH/EZHRegisterInfo.h         |    60 +
 llvm/lib/Target/EZH/EZHRegisterInfo.td        |    65 +
 llvm/lib/Target/EZH/EZHSchedule.td            |    69 +
 llvm/lib/Target/EZH/EZHSelectionDAGInfo.cpp   |    28 +
 llvm/lib/Target/EZH/EZHSelectionDAGInfo.h     |    34 +
 llvm/lib/Target/EZH/EZHSubtarget.cpp          |    65 +
 llvm/lib/Target/EZH/EZHSubtarget.h            |    84 +
 llvm/lib/Target/EZH/EZHTargetMachine.cpp      |   119 +
 llvm/lib/Target/EZH/EZHTargetMachine.h        |    68 +
 llvm/lib/Target/EZH/EZHTargetObjectFile.cpp   |   127 +
 llvm/lib/Target/EZH/EZHTargetObjectFile.h     |    53 +
 llvm/lib/Target/EZH/EZHTargetTransformInfo.h  |   123 +
 .../Target/EZH/MCTargetDesc/CMakeLists.txt    |    18 +
 .../Target/EZH/MCTargetDesc/EZHAsmBackend.cpp |   180 +
 .../lib/Target/EZH/MCTargetDesc/EZHBaseInfo.h |    61 +
 .../EZH/MCTargetDesc/EZHELFObjectWriter.cpp   |    93 +
 .../Target/EZH/MCTargetDesc/EZHFixupKinds.h   |    43 +
 .../EZH/MCTargetDesc/EZHInstPrinter.cpp       |   110 +
 .../Target/EZH/MCTargetDesc/EZHInstPrinter.h  |    67 +
 .../Target/EZH/MCTargetDesc/EZHMCAsmInfo.cpp  |    43 +
 .../Target/EZH/MCTargetDesc/EZHMCAsmInfo.h    |    31 +
 .../EZH/MCTargetDesc/EZHMCCodeEmitter.cpp     |   192 +
 .../EZH/MCTargetDesc/EZHMCTargetDesc.cpp      |   169 +
 .../Target/EZH/MCTargetDesc/EZHMCTargetDesc.h |    51 +
 llvm/lib/Target/EZH/TargetInfo/CMakeLists.txt |    10 +
 .../Target/EZH/TargetInfo/EZHTargetInfo.cpp   |    23 +
 .../lib/Target/EZH/TargetInfo/EZHTargetInfo.h |    20 +
 llvm/lib/TargetParser/TargetDataLayout.cpp    |     2 +
 llvm/lib/TargetParser/Triple.cpp              |    10 +
 llvm/test/CodeGen/EZH/if-cvt-alu.ll           |   109 +
 llvm/test/MC/EZH/instructions.s               | 60865 ++++++++++++++++
 68 files changed, 70951 insertions(+), 2 deletions(-)
 create mode 100644 llvm/include/llvm/BinaryFormat/ELFRelocs/EZH.def
 create mode 100644 llvm/lib/Target/EZH/AsmParser/CMakeLists.txt
 create mode 100644 llvm/lib/Target/EZH/AsmParser/EZHAsmParser.cpp
 create mode 100644 llvm/lib/Target/EZH/CMakeLists.txt
 create mode 100644 llvm/lib/Target/EZH/Disassembler/CMakeLists.txt
 create mode 100644 llvm/lib/Target/EZH/Disassembler/EZHDisassembler.cpp
 create mode 100644 llvm/lib/Target/EZH/Disassembler/EZHDisassembler.h
 create mode 100644 llvm/lib/Target/EZH/EZH.h
 create mode 100644 llvm/lib/Target/EZH/EZH.td
 create mode 100644 llvm/lib/Target/EZH/EZHAsmPrinter.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHBasicBlockInfo.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHBasicBlockInfo.h
 create mode 100644 llvm/lib/Target/EZH/EZHBitSliceInjection.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHBranchFixup.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHCallingConv.td
 create mode 100644 llvm/lib/Target/EZH/EZHCondCode.h
 create mode 100644 llvm/lib/Target/EZH/EZHConstantIslandPass.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHConstantPoolValue.h
 create mode 100644 llvm/lib/Target/EZH/EZHFrameLowering.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHFrameLowering.h
 create mode 100644 llvm/lib/Target/EZH/EZHISelDAGToDAG.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHISelLowering.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHISelLowering.h
 create mode 100644 llvm/lib/Target/EZH/EZHInstrFormats.td
 create mode 100644 llvm/lib/Target/EZH/EZHInstrInfo.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHInstrInfo.h
 create mode 100644 llvm/lib/Target/EZH/EZHInstrInfo.td
 create mode 100644 llvm/lib/Target/EZH/EZHMCInstLower.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHMCInstLower.h
 create mode 100644 llvm/lib/Target/EZH/EZHMachineFunctionInfo.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHMachineFunctionInfo.h
 create mode 100644 llvm/lib/Target/EZH/EZHRegisterInfo.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHRegisterInfo.h
 create mode 100644 llvm/lib/Target/EZH/EZHRegisterInfo.td
 create mode 100644 llvm/lib/Target/EZH/EZHSchedule.td
 create mode 100644 llvm/lib/Target/EZH/EZHSelectionDAGInfo.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHSelectionDAGInfo.h
 create mode 100644 llvm/lib/Target/EZH/EZHSubtarget.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHSubtarget.h
 create mode 100644 llvm/lib/Target/EZH/EZHTargetMachine.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHTargetMachine.h
 create mode 100644 llvm/lib/Target/EZH/EZHTargetObjectFile.cpp
 create mode 100644 llvm/lib/Target/EZH/EZHTargetObjectFile.h
 create mode 100644 llvm/lib/Target/EZH/EZHTargetTransformInfo.h
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/CMakeLists.txt
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHAsmBackend.cpp
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHBaseInfo.h
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHELFObjectWriter.cpp
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHFixupKinds.h
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHInstPrinter.cpp
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHInstPrinter.h
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHMCAsmInfo.cpp
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHMCAsmInfo.h
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHMCCodeEmitter.cpp
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHMCTargetDesc.cpp
 create mode 100644 llvm/lib/Target/EZH/MCTargetDesc/EZHMCTargetDesc.h
 create mode 100644 llvm/lib/Target/EZH/TargetInfo/CMakeLists.txt
 create mode 100644 llvm/lib/Target/EZH/TargetInfo/EZHTargetInfo.cpp
 create mode 100644 llvm/lib/Target/EZH/TargetInfo/EZHTargetInfo.h
 create mode 100644 llvm/test/CodeGen/EZH/if-cvt-alu.ll
 create mode 100644 llvm/test/MC/EZH/instructions.s

diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index 4509fbaba1d25..d6dcef4b4e73f 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -595,6 +595,7 @@ set(LLVM_ALL_EXPERIMENTAL_TARGETS
   ARC
   CSKY
   DirectX
+  EZH
   M68k
   Xtensa
 )
diff --git a/llvm/Maintainers.md b/llvm/Maintainers.md
index 0af4245ccd265..6b2cb2d0aa38d 100644
--- a/llvm/Maintainers.md
+++ b/llvm/Maintainers.md
@@ -257,6 +257,11 @@ zixuan.wu at linux.alibaba.com (email), [zixuan-wu](https://github.com/zixuan-wu) (
 Justin Bogner \
 mail at justinbogner.com (email), [bogner](https://github.com/bogner) (GitHub)
 
+#### EZH backend
+
+Richard Pasek \
+rpasek at google.com (email), [rpasek](https://github.com/rpasek) (GitHub)
+
 #### Hexagon backend
 
 Brian Cain \
diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h
index 72cded68463a6..046551f1dc09d 100644
--- a/llvm/include/llvm/BinaryFormat/ELF.h
+++ b/llvm/include/llvm/BinaryFormat/ELF.h
@@ -325,6 +325,7 @@ enum {
   EM_VE = 251,            // NEC SX-Aurora VE
   EM_CSKY = 252,          // C-SKY 32-bit processor
   EM_LOONGARCH = 258,     // LoongArch
+  EM_EZH = 259,           // NXP SMARTDMA EZH
 };
 
 // Object file classes.
@@ -707,6 +708,11 @@ enum {
 #include "ELFRelocs/Lanai.def"
 };
 
+// ELF Relocation type for EZH.
+enum {
+#include "ELFRelocs/EZH.def"
+};
+
 // RISCV Specific e_flags
 enum : unsigned {
   EF_RISCV_RVC = 0x0001,
diff --git a/llvm/include/llvm/BinaryFormat/ELFRelocs/EZH.def b/llvm/include/llvm/BinaryFormat/ELFRelocs/EZH.def
new file mode 100644
index 0000000000000..8d4fb3925be02
--- /dev/null
+++ b/llvm/include/llvm/BinaryFormat/ELFRelocs/EZH.def
@@ -0,0 +1,19 @@
+
+#ifndef ELF_RELOC
+#error "ELF_RELOC must be defined"
+#endif
+
+// No relocation
+ELF_RELOC(R_EZH_NONE,        0)
+// 21-bit symbol relocation
+ELF_RELOC(R_EZH_21,          1)
+// 21-bit symbol relocation with last two bits masked to 0
+ELF_RELOC(R_EZH_21_F,        2)
+// 25-bit branch targets
+ELF_RELOC(R_EZH_25,          3)
+// General 32-bit relocation
+ELF_RELOC(R_EZH_32,          4)
+// Upper 16-bits of a symbolic relocation
+ELF_RELOC(R_EZH_HI16,        5)
+// Lower 16-bits of a symbolic relocation
+ELF_RELOC(R_EZH_LO16,        6)
diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.td b/llvm/include/llvm/IR/RuntimeLibcalls.td
index cbdc48a9a717f..9db68a2d52154 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.td
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.td
@@ -3574,7 +3574,7 @@ def isDefaultLibcallArch : RuntimeLibcallPredicate<[{
   TT.isMIPS() || TT.isLoongArch() || TT.isVE() || TT.isBPF() ||
   TT.getArch() == Triple::csky || TT.getArch() == Triple::arc ||
   TT.getArch() == Triple::m68k ||  TT.getArch() == Triple::xtensa ||
-  (TT.isSystemZ() && !TT.isOSzOS())
+  TT.getArch() == Triple::ezh || (TT.isSystemZ() && !TT.isOSzOS())
 }]>;
 
 
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index 7b24db121818f..990712ae288bc 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -114,7 +114,8 @@ class Triple {
     renderscript32, // 32-bit RenderScript
     renderscript64, // 64-bit RenderScript
     ve,             // NEC SX-Aurora Vector Engine
-    LastArchType = ve
+    ezh,            // EZH: SMARTDMA
+    LastArchType = ezh
   };
   enum SubArchType {
     NoSubArch,
diff --git a/llvm/lib/Target/EZH/AsmParser/CMakeLists.txt b/llvm/lib/Target/EZH/AsmParser/CMakeLists.txt
new file mode 100644
index 0000000000000..b82cb5c31a608
--- /dev/null
+++ b/llvm/lib/Target/EZH/AsmParser/CMakeLists.txt
@@ -0,0 +1,18 @@
+include_directories( ${CMAKE_CURRENT_BINARY_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/.. )
+
+add_llvm_component_library(LLVMEZHAsmParser
+  EZHAsmParser.cpp
+
+  LINK_COMPONENTS
+  CodeGenTypes
+  EZHDesc
+  EZHInfo
+  MC
+  MCParser
+  Support
+
+  ADD_TO_COMPONENT
+  EZH
+  )
+
+add_dependencies( LLVMEZHAsmParser EZHCommonTableGen )
diff --git a/llvm/lib/Target/EZH/AsmParser/EZHAsmParser.cpp b/llvm/lib/Target/EZH/AsmParser/EZHAsmParser.cpp
new file mode 100644
index 0000000000000..c9c6c4f5ec5fe
--- /dev/null
+++ b/llvm/lib/Target/EZH/AsmParser/EZHAsmParser.cpp
@@ -0,0 +1,325 @@
+//===-- EZHAsmParser.cpp - Parse EZH assembly to MCInst instructions --===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHInstrInfo.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "TargetInfo/EZHTargetInfo.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCExpr.h"
+#include "llvm/MC/MCInst.h"
+#include "llvm/MC/MCParser/AsmLexer.h"
+#include "llvm/MC/MCParser/MCAsmParser.h"
+#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
+#include "llvm/MC/MCParser/MCTargetAsmParser.h"
+#include "llvm/MC/MCStreamer.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MC/TargetRegistry.h"
+#include "llvm/Support/SMLoc.h"
+
+using namespace llvm;
+
+#define DEBUG_TYPE "ezh-asm-parser"
+
+static MCRegister MatchRegisterName(StringRef Name);
+namespace {
+
+class EZHAsmParser : public MCTargetAsmParser {
+  MCAsmParser &Parser;
+
+  bool cvtShiftedImm(MCInst &Inst, const OperandVector &Operands);
+
+#define GET_ASSEMBLER_HEADER
+#include "EZHGenAsmMatcher.inc"
+
+  bool matchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
+                               OperandVector &Operands, MCStreamer &Out,
+                               uint64_t &ErrorInfo,
+                               bool MatchingInlineAsm) override;
+
+  bool parseRegister(MCRegister &Reg, SMLoc &StartLoc, SMLoc &EndLoc) override;
+  ParseStatus tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
+                               SMLoc &EndLoc) override;
+
+  bool parseInstruction(ParseInstructionInfo &Info, StringRef Name,
+                        SMLoc NameLoc, OperandVector &Operands) override;
+
+public:
+  EZHAsmParser(const MCSubtargetInfo &STI, MCAsmParser &Parser,
+               const MCInstrInfo &MII)
+      : MCTargetAsmParser(STI, MII), Parser(Parser) {
+    setAvailableFeatures(ComputeAvailableFeatures(STI.getFeatureBits()));
+  }
+};
+
+struct EZHOperand : public MCParsedAsmOperand {
+  enum KindTy { Token, Register, Immediate } Kind;
+
+  struct TokOp {
+    const char *Data;
+    unsigned Length;
+  };
+
+  struct RegOp {
+    unsigned RegNum;
+  };
+
+  struct ImmOp {
+    const MCExpr *Val;
+  };
+
+  union {
+    struct TokOp Tok;
+    struct RegOp Reg;
+    struct ImmOp Imm;
+  };
+
+  SMLoc StartLoc, EndLoc;
+
+public:
+  EZHOperand(KindTy K) : MCParsedAsmOperand(), Kind(K) {}
+
+  bool isToken() const override { return Kind == Token; }
+  bool isReg() const override { return Kind == Register; }
+  bool isImm() const override { return Kind == Immediate; }
+  bool isMem() const override { return false; }
+
+  SMLoc getStartLoc() const override { return StartLoc; }
+  SMLoc getEndLoc() const override { return EndLoc; }
+
+  MCRegister getReg() const override {
+    assert(Kind == Register && "Invalid access!");
+    return Reg.RegNum;
+  }
+
+  const MCExpr *getImm() const {
+    assert(Kind == Immediate && "Invalid access!");
+    return Imm.Val;
+  }
+
+  StringRef getToken() const {
+    assert(Kind == Token && "Invalid access!");
+    return StringRef(Tok.Data, Tok.Length);
+  }
+
+  void print(raw_ostream &OS) const {
+    switch (Kind) {
+    case Immediate:
+      if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm()))
+        OS << CE->getValue();
+      else
+        OS << "<expr>";
+      break;
+    case Register:
+      OS << "<register " << getReg() << ">";
+      break;
+    case Token:
+      OS << "'" << getToken() << "'";
+      break;
+    }
+  }
+  void print(raw_ostream &OS, const MCAsmInfo &MAI) const override {
+    print(OS);
+  }
+
+  static std::unique_ptr<EZHOperand> createToken(StringRef Str, SMLoc S) {
+    auto Op = std::make_unique<EZHOperand>(Token);
+    Op->Tok.Data = Str.data();
+    Op->Tok.Length = Str.size();
+    Op->StartLoc = S;
+    Op->EndLoc = S;
+    return Op;
+  }
+
+  static std::unique_ptr<EZHOperand> createReg(unsigned RegNum, SMLoc S,
+                                               SMLoc E) {
+    auto Op = std::make_unique<EZHOperand>(Register);
+    Op->Reg.RegNum = RegNum;
+    Op->StartLoc = S;
+    Op->EndLoc = E;
+    return Op;
+  }
+
+  static std::unique_ptr<EZHOperand> createImm(const MCExpr *Val, SMLoc S,
+                                               SMLoc E) {
+    auto Op = std::make_unique<EZHOperand>(Immediate);
+    Op->Imm.Val = Val;
+    Op->StartLoc = S;
+    Op->EndLoc = E;
+    return Op;
+  }
+
+  void addRegOperands(MCInst &Inst, unsigned N) const {
+    assert(N == 1 && "Invalid number of operands!");
+    Inst.addOperand(MCOperand::createReg(getReg()));
+  }
+
+  void addImmOperands(MCInst &Inst, unsigned N) const {
+    assert(N == 1 && "Invalid number of operands!");
+    const MCExpr *Expr = getImm();
+    if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr))
+      Inst.addOperand(MCOperand::createImm(CE->getValue()));
+    else
+      Inst.addOperand(MCOperand::createExpr(Expr));
+  }
+
+  // Custom operand matchers for EZH tablegen
+  bool isbrtarget() const { return isImm(); }
+  void addbrtargetOperands(MCInst &Inst, unsigned N) const {
+    addImmOperands(Inst, N);
+  }
+
+  bool iscalltarget() const { return isImm(); }
+  void addcalltargetOperands(MCInst &Inst, unsigned N) const {
+    addImmOperands(Inst, N);
+  }
+
+  bool isshifted_imm11() const { return isImm(); }
+  void addshifted_imm11Operands(MCInst &Inst, unsigned N) const {
+    assert(N == 2 && "Invalid number of operands!");
+    const MCExpr *Expr = getImm();
+    if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr)) {
+      int64_t Val = CE->getValue();
+      uint64_t Shift = 0;
+      if (Val != 0) {
+        while ((Val & 1) == 0 && Shift < 31) {
+          Val >>= 1;
+          Shift++;
+        }
+      }
+      Inst.addOperand(MCOperand::createImm(Val));
+      Inst.addOperand(MCOperand::createImm(Shift));
+    } else {
+      Inst.addOperand(MCOperand::createExpr(Expr));
+      Inst.addOperand(MCOperand::createImm(0));
+    }
+  }
+};
+
+} // end anonymous namespace
+
+bool EZHAsmParser::cvtShiftedImm(MCInst &Inst, const OperandVector &Operands) {
+  ((EZHOperand &)*Operands[1]).addRegOperands(Inst, 1);
+  const MCExpr *Expr = ((EZHOperand &)*Operands[2]).getImm();
+  if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr)) {
+    int64_t Val = CE->getValue();
+    uint64_t Shift = 0;
+    if (Val != 0) {
+      while ((Val & 1) == 0 && Shift < 31) {
+        Val >>= 1;
+        Shift++;
+      }
+    }
+    Inst.addOperand(MCOperand::createImm(Val));
+    Inst.addOperand(MCOperand::createImm(Shift));
+  } else {
+    Inst.addOperand(MCOperand::createExpr(Expr));
+    Inst.addOperand(MCOperand::createImm(0));
+  }
+  return false;
+}
+
+bool EZHAsmParser::matchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
+                                           OperandVector &Operands,
+                                           MCStreamer &Out, uint64_t &ErrorInfo,
+                                           bool MatchingInlineAsm) {
+  MCInst Inst;
+  unsigned MatchResult =
+      MatchInstructionImpl(Operands, Inst, ErrorInfo, MatchingInlineAsm);
+  switch (MatchResult) {
+  case Match_Success:
+    Inst.setLoc(IDLoc);
+    Out.emitInstruction(Inst, getSTI());
+    return false;
+  case Match_MissingFeature:
+    return Error(IDLoc,
+                 "instruction requires a CPU feature not currently enabled");
+  case Match_InvalidOperand: {
+    SMLoc ErrorLoc = IDLoc;
+    if (ErrorInfo != ~0ULL) {
+      if (ErrorInfo >= Operands.size())
+        return Error(IDLoc, "too few operands for instruction");
+      ErrorLoc = ((EZHOperand &)*Operands[ErrorInfo]).getStartLoc();
+      if (ErrorLoc == SMLoc())
+        ErrorLoc = IDLoc;
+    }
+    return Error(ErrorLoc, "invalid operand for instruction");
+  }
+  case Match_MnemonicFail:
+    return Error(IDLoc, "invalid instruction");
+  }
+  llvm_unreachable("Implement any new match types added!");
+}
+
+bool EZHAsmParser::parseRegister(MCRegister &Reg, SMLoc &StartLoc,
+                                 SMLoc &EndLoc) {
+  auto Res = tryParseRegister(Reg, StartLoc, EndLoc);
+  return !Res.isSuccess();
+}
+
+ParseStatus EZHAsmParser::tryParseRegister(MCRegister &Reg, SMLoc &StartLoc,
+                                           SMLoc &EndLoc) {
+  const AsmToken &Tok = Parser.getTok();
+  if (Tok.isNot(AsmToken::Identifier))
+    return ParseStatus::NoMatch;
+
+  StringRef Name = Tok.getString();
+  MCRegister RegNum = MatchRegisterName(Name);
+  if (RegNum == 0)
+    return ParseStatus::NoMatch;
+
+  Reg = RegNum;
+  StartLoc = Tok.getLoc();
+  EndLoc = Tok.getEndLoc();
+  Parser.Lex(); // Eat identifier token
+  return ParseStatus::Success;
+}
+
+bool EZHAsmParser::parseInstruction(ParseInstructionInfo &Info, StringRef Name,
+                                    SMLoc NameLoc, OperandVector &Operands) {
+  Operands.push_back(EZHOperand::createToken(Name, NameLoc));
+
+  if (getLexer().is(AsmToken::EndOfStatement))
+    return false;
+
+  // Read the first operand
+  while (true) {
+    SMLoc S = getLexer().getLoc();
+
+    // Parse Register
+    MCRegister RegNum;
+    SMLoc StartLoc, EndLoc;
+    if (tryParseRegister(RegNum, StartLoc, EndLoc).isSuccess()) {
+      Operands.push_back(EZHOperand::createReg(RegNum, StartLoc, EndLoc));
+    }
+    // Parse Immediate
+    else {
+      const MCExpr *Expr;
+      if (Parser.parseExpression(Expr))
+        return Error(S, "unknown operand");
+      Operands.push_back(EZHOperand::createImm(Expr, S, getLexer().getLoc()));
+    }
+
+    if (getLexer().is(AsmToken::EndOfStatement))
+      break;
+
+    if (getLexer().isNot(AsmToken::Comma))
+      return Error(getLexer().getLoc(), "unexpected token in operand list");
+    Parser.Lex(); // Eat the comma
+  }
+
+  return false;
+}
+
+// Force static initialization.
+extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeEZHAsmParser() {
+  RegisterMCAsmParser<EZHAsmParser> X(getTheEZHTarget());
+}
+
+#define GET_REGISTER_MATCHER
+#define GET_MATCHER_IMPLEMENTATION
+#include "EZHGenAsmMatcher.inc"
diff --git a/llvm/lib/Target/EZH/CMakeLists.txt b/llvm/lib/Target/EZH/CMakeLists.txt
new file mode 100644
index 0000000000000..85eada20591b5
--- /dev/null
+++ b/llvm/lib/Target/EZH/CMakeLists.txt
@@ -0,0 +1,58 @@
+add_llvm_component_group(EZH)
+
+set(LLVM_TARGET_DEFINITIONS EZH.td)
+
+tablegen(LLVM EZHGenAsmMatcher.inc -gen-asm-matcher)
+tablegen(LLVM EZHGenAsmWriter.inc -gen-asm-writer)
+tablegen(LLVM EZHGenCallingConv.inc -gen-callingconv)
+tablegen(LLVM EZHGenDAGISel.inc -gen-dag-isel)
+tablegen(LLVM EZHGenDisassemblerTables.inc -gen-disassembler)
+tablegen(LLVM EZHGenInstrInfo.inc -gen-instr-info)
+tablegen(LLVM EZHGenMCCodeEmitter.inc -gen-emitter)
+tablegen(LLVM EZHGenRegisterInfo.inc -gen-register-info)
+tablegen(LLVM EZHGenSDNodeInfo.inc -gen-sd-node-info)
+tablegen(LLVM EZHGenSubtargetInfo.inc -gen-subtarget)
+
+add_public_tablegen_target(EZHCommonTableGen)
+
+add_llvm_target(EZHCodeGen
+  EZHAsmPrinter.cpp
+  EZHBasicBlockInfo.cpp
+  EZHBitSliceInjection.cpp
+  EZHBranchFixup.cpp
+  EZHConstantIslandPass.cpp
+  EZHFrameLowering.cpp
+  EZHInstrInfo.cpp
+  EZHISelDAGToDAG.cpp
+  EZHISelLowering.cpp
+  EZHMachineFunctionInfo.cpp
+  EZHMCInstLower.cpp
+  EZHRegisterInfo.cpp
+  EZHSelectionDAGInfo.cpp
+  EZHSubtarget.cpp
+  EZHTargetMachine.cpp
+  EZHTargetObjectFile.cpp
+
+  LINK_COMPONENTS
+  Analysis
+  AsmPrinter
+  CodeGen
+  CodeGenTypes
+  Core
+  EZHDesc
+  EZHInfo
+  MC
+  SelectionDAG
+  Support
+  Target
+  TargetParser
+  TransformUtils
+
+  ADD_TO_COMPONENT
+  EZH
+  )
+
+add_subdirectory(AsmParser)
+add_subdirectory(Disassembler)
+add_subdirectory(MCTargetDesc)
+add_subdirectory(TargetInfo)
diff --git a/llvm/lib/Target/EZH/Disassembler/CMakeLists.txt b/llvm/lib/Target/EZH/Disassembler/CMakeLists.txt
new file mode 100644
index 0000000000000..48be39d632a10
--- /dev/null
+++ b/llvm/lib/Target/EZH/Disassembler/CMakeLists.txt
@@ -0,0 +1,14 @@
+add_llvm_component_library(LLVMEZHDisassembler
+  EZHDisassembler.cpp
+
+  LINK_COMPONENTS
+  CodeGenTypes
+  EZHDesc
+  EZHInfo
+  MC
+  MCDisassembler
+  Support
+
+  ADD_TO_COMPONENT
+  EZH
+  )
diff --git a/llvm/lib/Target/EZH/Disassembler/EZHDisassembler.cpp b/llvm/lib/Target/EZH/Disassembler/EZHDisassembler.cpp
new file mode 100644
index 0000000000000..068cad3cf6963
--- /dev/null
+++ b/llvm/lib/Target/EZH/Disassembler/EZHDisassembler.cpp
@@ -0,0 +1,174 @@
+//===- EZHDisassembler.cpp - Disassembler for EZH -----------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is part of the EZH Disassembler.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHDisassembler.h"
+#include "EZHInstrInfo.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "TargetInfo/EZHTargetInfo.h"
+#include "llvm/MC/MCDecoderOps.h"
+#include "llvm/MC/MCDisassembler/MCDisassembler.h"
+#include "llvm/MC/MCInst.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MC/TargetRegistry.h"
+#include "llvm/Support/Compiler.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/MathExtras.h"
+
+using namespace llvm;
+using namespace llvm::MCD;
+
+#define DEBUG_TYPE "ezh-disassembler"
+
+typedef MCDisassembler::DecodeStatus DecodeStatus;
+
+EZHDisassembler::EZHDisassembler(const MCSubtargetInfo &STI, MCContext &Ctx)
+    : MCDisassembler(STI, Ctx) {}
+
+static MCDisassembler *createEZHDisassembler(const Target &T,
+                                             const MCSubtargetInfo &STI,
+                                             MCContext &Ctx) {
+  return new EZHDisassembler(STI, Ctx);
+}
+
+extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void
+LLVMInitializeEZHDisassembler() {
+  TargetRegistry::RegisterMCDisassembler(getTheEZHTarget(),
+                                         createEZHDisassembler);
+}
+
+static const unsigned GPRDecoderTable[] = {
+    EZH::R0, EZH::R1, EZH::R2,  EZH::R3,  EZH::R4,  EZH::R5,
+    EZH::R6, EZH::R7, EZH::GPO, EZH::GPD, EZH::CFS, EZH::CFM,
+    EZH::SP, EZH::PC, EZH::GPI, EZH::RA};
+
+static uint64_t fieldFromInstruction(uint32_t insn, unsigned startBit,
+                                     unsigned numBits) {
+  return (insn >> startBit) & ((1ULL << numBits) - 1);
+}
+
+static bool Check(DecodeStatus &Out, DecodeStatus In) {
+  switch (In) {
+  case MCDisassembler::Success:
+    return true;
+  case MCDisassembler::SoftFail:
+    Out = MCDisassembler::SoftFail;
+    return true;
+  case MCDisassembler::Fail:
+    Out = MCDisassembler::Fail;
+    return false;
+  }
+  llvm_unreachable("Invalid decode status");
+}
+
+[[maybe_unused]] static DecodeStatus
+DecodeGPRRegisterClass(MCInst &Inst, unsigned RegNo, uint64_t Address,
+                       const void *Decoder) {
+  if (RegNo > 15)
+    return MCDisassembler::Fail;
+
+  unsigned Reg = GPRDecoderTable[RegNo];
+  Inst.addOperand(MCOperand::createReg(Reg));
+  return MCDisassembler::Success;
+}
+
+[[maybe_unused]] static DecodeStatus
+DecodeGPRAllRegisterClass(MCInst &Inst, unsigned RegNo, uint64_t Address,
+                          const void *Decoder) {
+  return DecodeGPRRegisterClass(Inst, RegNo, Address, Decoder);
+}
+
+[[maybe_unused]] static DecodeStatus
+DecodeGPRSPRegisterClass(MCInst &Inst, unsigned RegNo, uint64_t Address,
+                         const void *Decoder) {
+  return DecodeGPRRegisterClass(Inst, RegNo, Address, Decoder);
+}
+
+static DecodeStatus decodeSimm12(MCInst &Inst, uint64_t Imm, uint64_t Address,
+                                 const void *Decoder) {
+  Inst.addOperand(MCOperand::createImm(SignExtend64<12>(Imm)));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeSimm11(MCInst &Inst, uint64_t Imm, uint64_t Address,
+                                 const void *Decoder) {
+  Inst.addOperand(MCOperand::createImm(SignExtend64<11>(Imm)));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeWordOffset(MCInst &Inst, uint64_t Imm,
+                                     uint64_t Address, const void *Decoder) {
+  Inst.addOperand(MCOperand::createImm(SignExtend64<8>(Imm) << 2));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeSimm8(MCInst &Inst, uint64_t Imm, uint64_t Address,
+                                const void *Decoder) {
+  Inst.addOperand(MCOperand::createImm(SignExtend64<8>(Imm)));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeSimm21(MCInst &Inst, uint64_t Imm, uint64_t Address,
+                                 const void *Decoder) {
+  // Imm is a 21-bit word address (23-bit byte address).
+  // EZH absolute branches replace the lower 23 bits of the current PC.
+  uint64_t Target = (Address & ~0x7FFFFFULL) | ((Imm & 0x1FFFFF) * 4);
+  Inst.addOperand(MCOperand::createImm(Target));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeSimm30(MCInst &Inst, uint64_t Imm, uint64_t Address,
+                                 const void *Decoder) {
+  uint64_t Target = (Imm & 0x3FFFFFFF) << 2;
+  Inst.addOperand(MCOperand::createImm(Target));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus decodeSimm16(MCInst &Inst, uint64_t Imm, uint64_t Address,
+                                 const void *Decoder) {
+  Inst.addOperand(MCOperand::createImm(SignExtend64<16>(Imm)));
+  return MCDisassembler::Success;
+}
+
+#include "EZHGenDisassemblerTables.inc"
+
+static DecodeStatus readInstruction32(ArrayRef<uint8_t> Bytes, uint64_t &Size,
+                                      uint32_t &Insn) {
+  if (Bytes.size() < 4) {
+    Size = 0;
+    return MCDisassembler::Fail;
+  }
+
+  // Little endian decoding
+  Insn =
+      (Bytes[3] << 24) | (Bytes[2] << 16) | (Bytes[1] << 8) | (Bytes[0] << 0);
+  Size = 4;
+  return MCDisassembler::Success;
+}
+
+DecodeStatus EZHDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
+                                             ArrayRef<uint8_t> Bytes,
+                                             uint64_t Address,
+                                             raw_ostream &CStream) const {
+  uint32_t Insn;
+  DecodeStatus Result = readInstruction32(Bytes, Size, Insn);
+
+  if (Result == MCDisassembler::Fail)
+    return MCDisassembler::Fail;
+
+  Result = decodeInstruction(DecoderTable32, Instr, Insn, Address, this, STI);
+
+  if (Result != MCDisassembler::Fail) {
+    return Result;
+  }
+
+  return MCDisassembler::Fail;
+}
diff --git a/llvm/lib/Target/EZH/Disassembler/EZHDisassembler.h b/llvm/lib/Target/EZH/Disassembler/EZHDisassembler.h
new file mode 100644
index 0000000000000..1673e64a786bc
--- /dev/null
+++ b/llvm/lib/Target/EZH/Disassembler/EZHDisassembler.h
@@ -0,0 +1,34 @@
+//===- EZHDisassembler.cpp - Disassembler for EZH -----------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is part of the EZH Disassembler.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_DISASSEMBLER_EZHDISASSEMBLER_H
+#define LLVM_LIB_TARGET_EZH_DISASSEMBLER_EZHDISASSEMBLER_H
+
+#include "llvm/MC/MCDisassembler/MCDisassembler.h"
+
+namespace llvm {
+
+class EZHDisassembler : public MCDisassembler {
+public:
+  EZHDisassembler(const MCSubtargetInfo &STI, MCContext &Ctx);
+
+  ~EZHDisassembler() override = default;
+
+  // getInstruction - See MCDisassembler.
+  MCDisassembler::DecodeStatus
+  getInstruction(MCInst &Instr, uint64_t &Size, ArrayRef<uint8_t> Bytes,
+                 uint64_t Address, raw_ostream &CStream) const override;
+};
+
+} // end namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_DISASSEMBLER_EZHDISASSEMBLER_H
diff --git a/llvm/lib/Target/EZH/EZH.h b/llvm/lib/Target/EZH/EZH.h
new file mode 100644
index 0000000000000..d4eefcd001715
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZH.h
@@ -0,0 +1,37 @@
+//===-- EZH.h - Top-level interface for EZH representation --*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the entry points for global functions defined in the LLVM
+// EZH back-end.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZH_H
+#define LLVM_LIB_TARGET_EZH_EZH_H
+
+#include "llvm/Pass.h"
+
+namespace llvm {
+class FunctionPass;
+class EZHTargetMachine;
+class PassRegistry;
+
+// createEZHISelDag - This pass converts a legalized DAG into a
+// EZH-specific DAG, ready for instruction scheduling.
+FunctionPass *createEZHISelDag(EZHTargetMachine &TM);
+
+FunctionPass *createEZHBranchFixupPass();
+FunctionPass *createEZHConstantIslandPass();
+FunctionPass *createEZHBitSliceInjectionPass();
+
+void initializeEZHAsmPrinterPass(PassRegistry &);
+void initializeEZHDAGToDAGISelLegacyPass(PassRegistry &);
+
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZH_H
diff --git a/llvm/lib/Target/EZH/EZH.td b/llvm/lib/Target/EZH/EZH.td
new file mode 100644
index 0000000000000..456bef5d3ad88
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZH.td
@@ -0,0 +1,55 @@
+//===- EZH.td - Describe the EZH Target Machine --------*- tablegen -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+//===----------------------------------------------------------------------===//
+// Target-independent interfaces which we are implementing
+//===----------------------------------------------------------------------===//
+
+include "llvm/Target/Target.td"
+
+//===----------------------------------------------------------------------===//
+// Register File, Calling Conv, Instruction Descriptions
+//===----------------------------------------------------------------------===//
+
+include "EZHSchedule.td"
+include "EZHRegisterInfo.td"
+include "EZHCallingConv.td"
+include "EZHInstrInfo.td"
+
+defm : RemapAllTargetPseudoPointerOperands<GPR>;
+
+def EZHInstrInfo : InstrInfo;
+
+//===----------------------------------------------------------------------===//
+// EZH Subtarget features.
+//===----------------------------------------------------------------------===//
+
+def FeatureBitSliceInterrupts : SubtargetFeature<"bitslice-interrupts", "HasBitSliceInterrupts", "true",
+                                                 "Enable EZH bitslice interrupt workaround (injection of e_gotol_bs before branches/calls)">;
+
+//===----------------------------------------------------------------------===//
+// EZH processors supported.
+//===----------------------------------------------------------------------===//
+
+def : ProcessorModel<"generic", EZHSchedModel, [FeatureBitSliceInterrupts]>;
+def : ProcessorModel<"v11", EZHSchedModel, [FeatureBitSliceInterrupts]>;
+
+def EZHInstPrinter : AsmWriter {
+  string AsmWriterClassName  = "InstPrinter";
+  bit isMCAsmWriter = 1;
+}
+
+//===----------------------------------------------------------------------===//
+// Declare the target which we are implementing
+//===----------------------------------------------------------------------===//
+
+def EZH : Target {
+  // Pull in Instruction Info:
+  let InstructionSet = EZHInstrInfo;
+  let AssemblyWriters = [EZHInstPrinter];
+}
diff --git a/llvm/lib/Target/EZH/EZHAsmPrinter.cpp b/llvm/lib/Target/EZH/EZHAsmPrinter.cpp
new file mode 100644
index 0000000000000..eb79663f1f623
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHAsmPrinter.cpp
@@ -0,0 +1,274 @@
+//===-- EZHAsmPrinter.cpp - EZH LLVM assembly writer ------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHConstantPoolValue.h"
+#include "EZHMCInstLower.h"
+#include "EZHTargetMachine.h"
+#include "MCTargetDesc/EZHInstPrinter.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "TargetInfo/EZHTargetInfo.h"
+#include "llvm/CodeGen/AsmPrinter.h"
+#include "llvm/CodeGen/MachineConstantPool.h"
+#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/CodeGen/MachineJumpTableInfo.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCExpr.h"
+#include "llvm/MC/MCInstBuilder.h"
+#include "llvm/MC/MCStreamer.h"
+#include "llvm/MC/MCSymbol.h"
+#include "llvm/MC/TargetRegistry.h"
+
+using namespace llvm;
+
+#define DEBUG_TYPE "asm-printer"
+
+namespace {
+class EZHAsmPrinter : public AsmPrinter {
+
+public:
+  explicit EZHAsmPrinter(TargetMachine &TM,
+                         std::unique_ptr<MCStreamer> Streamer)
+      : AsmPrinter(TM, std::move(Streamer), ID) {}
+
+  StringRef getPassName() const override { return "EZH Assembly Printer"; }
+
+  void emitInstruction(const MachineInstr *MI) override;
+  void emitFunctionBodyEnd() override;
+  void emitBasicBlockEnd(const MachineBasicBlock &MBB) override;
+  void emitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) override;
+  bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
+                       const char *ExtraCode, raw_ostream &OS) override;
+
+  bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
+                             const char *ExtraCode, raw_ostream &OS) override;
+
+  void emitConstantPool() override {
+    // Do nothing. We handle constant pool emission via CONSTPOOL_ENTRY in
+    // Constant Island pass.
+  }
+  void emitJumpTableInfo() override {
+    // Do nothing. We handle jump table emission via CONSTPOOL_ENTRY in Constant
+    // Island pass.
+  }
+
+  static char ID;
+};
+} // end of anonymous namespace
+
+void EZHAsmPrinter::emitFunctionBodyEnd() {}
+
+void EZHAsmPrinter::emitBasicBlockEnd(const MachineBasicBlock &MBB) {}
+
+void EZHAsmPrinter::emitMachineConstantPoolValue(
+    MachineConstantPoolValue *MCPV) {
+  auto *CPV = static_cast<const EZHConstantPoolValue *>(MCPV);
+
+  if (CPV->isJumpTable()) {
+    SmallString<32> SymName;
+    raw_svector_ostream OS(SymName);
+    OS << ".LJTI" << MF->getFunctionNumber() << "_" << CPV->getJumpTableIndex();
+    MCSymbol *Sym = OutContext.getOrCreateSymbol(SymName.str());
+    OutStreamer->emitValue(MCSymbolRefExpr::create(Sym, OutContext), 4);
+  } else if (CPV->isBlockAddress()) {
+    MCSymbol *Sym = GetBlockAddressSymbol(CPV->getBlockAddress());
+    OutStreamer->emitValue(MCSymbolRefExpr::create(Sym, OutContext), 4);
+  } else if (CPV->isExtSymbol()) {
+    MCSymbol *Sym = OutContext.getOrCreateSymbol(CPV->getExtSymbol());
+    OutStreamer->emitValue(MCSymbolRefExpr::create(Sym, OutContext), 4);
+  } else if (CPV->isMachineBasicBlock()) {
+    OutStreamer->emitValue(
+        MCSymbolRefExpr::create(CPV->getMachineBasicBlock()->getSymbol(),
+                                OutContext),
+        4);
+  } else if (CPV->isGlobalValue()) {
+    const MCExpr *Expr =
+        MCSymbolRefExpr::create(getSymbol(CPV->getGlobalValue()), OutContext);
+    if (CPV->getOffset() != 0) {
+      Expr = MCBinaryExpr::createAdd(
+          Expr, MCConstantExpr::create(CPV->getOffset(), OutContext),
+          OutContext);
+    }
+    OutStreamer->emitValue(Expr, 4);
+  } else if (CPV->isConstantPoolIndex()) {
+    MCSymbol *Sym = GetCPISymbol(CPV->getConstantPoolIndex());
+    OutStreamer->emitValue(MCSymbolRefExpr::create(Sym, OutContext), 4);
+  }
+}
+
+void EZHAsmPrinter::emitInstruction(const MachineInstr *MI) {
+
+  if (MI->getOpcode() == EZH::CONSTPOOL_ENTRY) {
+    const MachineOperand &MO0 = MI->getOperand(0);
+    const MachineOperand &MO1 = MI->getOperand(1);
+
+    MCSymbol *Sym = MO0.getMCSymbol();
+    OutStreamer->emitLabel(Sym);
+
+    if (MO1.isGlobal()) {
+      OutStreamer->emitValue(
+          MCSymbolRefExpr::create(getSymbol(MO1.getGlobal()), OutContext), 4);
+    } else if (MO1.isImm()) {
+      OutStreamer->emitValue(MCConstantExpr::create(MO1.getImm(), OutContext),
+                             4);
+    } else if (MO1.isCPI()) {
+      int CPI = MO1.getIndex();
+      const MachineConstantPool *MCP =
+          MI->getParent()->getParent()->getConstantPool();
+      const std::vector<MachineConstantPoolEntry> &Constants =
+          MCP->getConstants();
+      const MachineConstantPoolEntry &CPE = Constants[CPI];
+      if (CPE.isMachineConstantPoolEntry()) {
+        emitMachineConstantPoolValue(CPE.Val.MachineCPVal);
+      } else {
+        emitGlobalConstant(MI->getParent()->getParent()->getDataLayout(),
+                           CPE.Val.ConstVal);
+      }
+    } else if (MO1.isSymbol()) {
+      OutStreamer->emitValue(
+          MCSymbolRefExpr::create(
+              OutContext.getOrCreateSymbol(MO1.getSymbolName()), OutContext),
+          4);
+    } else if (MO1.isJTI()) {
+      int JTI = MO1.getIndex();
+      const MachineJumpTableInfo *MJTI =
+          MI->getParent()->getParent()->getJumpTableInfo();
+      const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
+      const std::vector<MachineBasicBlock *> &MBBs = JT[JTI].MBBs;
+      for (MachineBasicBlock *MBB : MBBs) {
+        const MCExpr *Expr =
+            MCSymbolRefExpr::create(MBB->getSymbol(), OutContext);
+        if (TM.getRelocationModel() == Reloc::PIC_) {
+          const MCExpr *Base = MCSymbolRefExpr::create(Sym, OutContext);
+          const MCExpr *Diff = MCBinaryExpr::createSub(Expr, Base, OutContext);
+          OutStreamer->emitValue(Diff, 4);
+        } else {
+          OutStreamer->emitValue(Expr, 4);
+        }
+      }
+    }
+    return;
+  }
+
+  if (MI->getOpcode() == EZH::LOAD_CONSTANT) {
+    Register Rd = MI->getOperand(0).getReg();
+    const MachineOperand &MO = MI->getOperand(1);
+
+    MCSymbol *Sym = nullptr;
+    if (MO.isMCSymbol()) {
+      Sym = MO.getMCSymbol();
+    } else if (MO.isCPI()) {
+      Sym = GetCPISymbol(MO.getIndex());
+    } else if (MO.isImm()) {
+      int64_t Imm = MO.getImm();
+      if (isInt<11>(Imm)) {
+        EmitToStreamer(*OutStreamer,
+                       MCInstBuilder(EZH::MOVri__).addReg(Rd).addImm(Imm));
+        return;
+      } else {
+        llvm_unreachable("Immediate constant too large for E_LOAD_IMM!");
+      }
+    } else {
+      llvm_unreachable("Unexpected operand type for LOAD_CONSTANT!");
+    }
+
+    // e_ldr Rd, pc, Sym
+    EmitToStreamer(*OutStreamer,
+                   MCInstBuilder(EZH::LDR).addReg(Rd).addReg(EZH::PC).addExpr(
+                       MCSymbolRefExpr::create(Sym, OutContext)));
+    return;
+  }
+
+  if (MI->getOpcode() == EZH::RET) {
+    // Intercept standard RET and print as a safe register-move return (e_mov
+    // pc, ra). This is 100% immune to bit-slice interrupt RA corruption!
+    EmitToStreamer(*OutStreamer,
+                   MCInstBuilder(EZH::MOVrr__).addReg(EZH::PC).addReg(EZH::RA));
+    return;
+  }
+
+  EZHMCInstLower MCInstLowering(OutContext, *this);
+  MCInst TmpInst;
+  MCInstLowering.Lower(MI, TmpInst);
+  EmitToStreamer(*OutStreamer, TmpInst);
+}
+
+bool EZHAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
+                                    const char *ExtraCode, raw_ostream &OS) {
+  if (ExtraCode && ExtraCode[0]) {
+    if (ExtraCode[0] == 'c') {
+      const MachineOperand &MO = MI->getOperand(OpNo);
+      if (MO.isImm()) {
+        OS << MO.getImm();
+        return false;
+      }
+      if (MO.isGlobal()) {
+        OS << getSymbol(MO.getGlobal())->getName();
+        if (MO.getOffset() != 0)
+          OS << "+" << MO.getOffset();
+        return false;
+      }
+    }
+    return AsmPrinter::PrintAsmOperand(MI, OpNo, ExtraCode, OS);
+  }
+
+  const MachineOperand &MO = MI->getOperand(OpNo);
+  if (MO.isReg()) {
+    OS << EZHInstPrinter::getRegisterName(MO.getReg());
+    return false;
+  }
+  if (MO.isImm()) {
+    OS << MO.getImm();
+    return false;
+  }
+  if (MO.isGlobal()) {
+    OS << getSymbol(MO.getGlobal())->getName();
+    if (MO.getOffset() != 0)
+      OS << "+" << MO.getOffset();
+    return false;
+  }
+  if (MO.isSymbol()) {
+    OS << MO.getSymbolName();
+    return false;
+  }
+  if (MO.isFI()) {
+    OS << MO.getIndex();
+    return false;
+  }
+  if (MO.isMBB()) {
+    OS << MO.getMBB()->getSymbol()->getName();
+    return false;
+  }
+  if (MO.isBlockAddress()) {
+    OS << GetBlockAddressSymbol(MO.getBlockAddress())->getName();
+    return false;
+  }
+  return AsmPrinter::PrintAsmOperand(MI, OpNo, ExtraCode, OS);
+}
+
+bool EZHAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
+                                          const char *ExtraCode,
+                                          raw_ostream &OS) {
+  if (ExtraCode && ExtraCode[0])
+    return true;
+  const MachineOperand &MO = MI->getOperand(OpNo);
+  if (MO.isReg()) {
+    OS << EZHInstPrinter::getRegisterName(MO.getReg());
+    return false;
+  }
+  return AsmPrinter::PrintAsmMemoryOperand(MI, OpNo, ExtraCode, OS);
+}
+
+char EZHAsmPrinter::ID = 0;
+
+INITIALIZE_PASS(EZHAsmPrinter, "ezh-asm-printer", "EZH Assembly Printer", false,
+                false)
+
+extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void
+LLVMInitializeEZHAsmPrinter() {
+  RegisterAsmPrinter<EZHAsmPrinter> X(getTheEZHTarget());
+}
diff --git a/llvm/lib/Target/EZH/EZHBasicBlockInfo.cpp b/llvm/lib/Target/EZH/EZHBasicBlockInfo.cpp
new file mode 100644
index 0000000000000..b79a1e0ff3c7c
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHBasicBlockInfo.cpp
@@ -0,0 +1,86 @@
+//===--- EZHBasicBlockInfo.cpp - Utilities for block sizes ---------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHBasicBlockInfo.h"
+#include "EZH.h"
+#include "EZHInstrInfo.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/CodeGen/TargetSubtargetInfo.h"
+#include "llvm/Support/Debug.h"
+
+#define DEBUG_TYPE "ezh-bb-utils"
+
+using namespace llvm;
+
+void llvm::EZHBasicBlockUtils::computeBlockSize(MachineBasicBlock *MBB) {
+  EZHBasicBlockInfo &BBI = BBInfo[MBB->getNumber()];
+  BBI.Size = 0;
+  BBI.PostAlign = Align(1);
+
+  for (MachineInstr &I : *MBB) {
+    BBI.Size += TII->getInstSizeInBytes(I);
+  }
+}
+
+unsigned llvm::EZHBasicBlockUtils::getOffsetOf(MachineInstr *MI) const {
+  const MachineBasicBlock *MBB = MI->getParent();
+  unsigned Offset = BBInfo[MBB->getNumber()].Offset;
+
+  bool Found = false;
+  for (const MachineInstr &I : *MBB) {
+    if (&I == MI) {
+      Found = true;
+      break;
+    }
+    Offset += TII->getInstSizeInBytes(I);
+  }
+  assert(Found && "Didn't find MI in its own basic block?");
+  return Offset;
+}
+
+bool llvm::EZHBasicBlockUtils::isBBInRange(MachineInstr *MI,
+                                           MachineBasicBlock *DestBB,
+                                           unsigned MaxDisp) const {
+  unsigned PCAdj = 4;
+  unsigned BrOffset = getOffsetOf(MI) + PCAdj;
+  unsigned DestOffset = BBInfo[DestBB->getNumber()].Offset;
+
+  LLVM_DEBUG(dbgs() << "Branch of destination " << printMBBReference(*DestBB)
+                    << " from " << printMBBReference(*MI->getParent())
+                    << " max delta=" << MaxDisp << " from " << getOffsetOf(MI)
+                    << " to " << DestOffset << " offset "
+                    << int(DestOffset - BrOffset) << "\t" << *MI);
+
+  if (BrOffset <= DestOffset)
+    return (DestOffset - BrOffset) <= MaxDisp;
+  return (BrOffset - DestOffset) <= MaxDisp;
+}
+
+void llvm::EZHBasicBlockUtils::adjustBBOffsetsAfter(MachineBasicBlock *BB) {
+  assert(BB->getParent() == &MF &&
+         "Basic block is not a child of the current function.\n");
+
+  unsigned BBNum = BB->getNumber();
+  LLVM_DEBUG(dbgs() << "Adjust block:\n"
+                    << " - name: " << BB->getName() << "\n"
+                    << " - number: " << BB->getNumber() << "\n"
+                    << " - function: " << MF.getName() << "\n"
+                    << "   - blocks: " << MF.getNumBlockIDs() << "\n");
+
+  for (unsigned i = BBNum + 1, e = MF.getNumBlockIDs(); i < e; ++i) {
+    const Align Align = MF.getBlockNumbered(i)->getAlignment();
+    const unsigned Offset = BBInfo[i - 1].postOffset(Align);
+
+    if (i > BBNum + 2 && BBInfo[i].Offset == Offset)
+      break;
+
+    BBInfo[i].Offset = Offset;
+  }
+}
diff --git a/llvm/lib/Target/EZH/EZHBasicBlockInfo.h b/llvm/lib/Target/EZH/EZHBasicBlockInfo.h
new file mode 100644
index 0000000000000..8974307c60b3f
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHBasicBlockInfo.h
@@ -0,0 +1,89 @@
+//===-- EZHBasicBlockInfo.h - Basic Block Information -----------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHBASICBLOCKINFO_H
+#define LLVM_LIB_TARGET_EZH_EZHBASICBLOCKINFO_H
+
+#include "EZHInstrInfo.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/Support/MathExtras.h"
+#include <algorithm>
+#include <cstdint>
+
+namespace llvm {
+
+struct EZHBasicBlockInfo;
+using EZHBBInfoVector = SmallVectorImpl<EZHBasicBlockInfo>;
+
+/// Basic Block Information for EZH target, tracking offset, size, and
+/// alignment.
+struct EZHBasicBlockInfo {
+  unsigned Offset = 0;
+  unsigned Size = 0;
+  Align PostAlign;
+
+  EZHBasicBlockInfo() = default;
+
+  unsigned postOffset(Align Alignment = Align(1)) const {
+    unsigned PO = Offset + Size;
+    const Align PA = std::max(PostAlign, Alignment);
+    return alignTo(PO, PA);
+  }
+
+  unsigned postKnownBits(Align Alignment = Align(1)) const {
+    return Log2(std::max(PostAlign, Alignment));
+  }
+};
+
+/// Utilities for computing and adjusting basic block offsets and sizes.
+class EZHBasicBlockUtils {
+private:
+  MachineFunction &MF;
+  const EZHInstrInfo *TII = nullptr;
+  SmallVector<EZHBasicBlockInfo, 8> BBInfo;
+
+public:
+  EZHBasicBlockUtils(MachineFunction &MF) : MF(MF) {
+    TII = static_cast<const EZHInstrInfo *>(MF.getSubtarget().getInstrInfo());
+  }
+
+  void computeAllBlockSizes() {
+    BBInfo.resize(MF.getNumBlockIDs());
+    for (MachineBasicBlock &MBB : MF)
+      computeBlockSize(&MBB);
+  }
+
+  void computeBlockSize(MachineBasicBlock *MBB);
+
+  unsigned getOffsetOf(MachineInstr *MI) const;
+
+  unsigned getOffsetOf(MachineBasicBlock *MBB) const {
+    return BBInfo[MBB->getNumber()].Offset;
+  }
+
+  void adjustBBOffsetsAfter(MachineBasicBlock *MBB);
+
+  void adjustBBSize(MachineBasicBlock *MBB, int Size) {
+    BBInfo[MBB->getNumber()].Size += Size;
+  }
+
+  bool isBBInRange(MachineInstr *MI, MachineBasicBlock *DestBB,
+                   unsigned MaxDisp) const;
+
+  void insert(unsigned BBNum, EZHBasicBlockInfo BBI) {
+    BBInfo.insert(BBInfo.begin() + BBNum, BBI);
+  }
+
+  void clear() { BBInfo.clear(); }
+
+  EZHBBInfoVector &getBBInfo() { return BBInfo; }
+};
+
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHBASICBLOCKINFO_H
diff --git a/llvm/lib/Target/EZH/EZHBitSliceInjection.cpp b/llvm/lib/Target/EZH/EZHBitSliceInjection.cpp
new file mode 100644
index 0000000000000..5e3a33a4e6f7d
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHBitSliceInjection.cpp
@@ -0,0 +1,131 @@
+//===-- EZHBitSliceInjection.cpp - EZH BitSlice Interrupt Workaround ----===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This pass implements a workaround for EZH core's lack of interrupts.
+// It injects a conditional 'e_gotol_bs bitslice_handler' instruction before
+// every direct branch or direct call instruction if the bitslice-interrupts
+// subtarget feature is enabled.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZH.h"
+#include "EZHInstrInfo.h"
+#include "EZHSubtarget.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+
+using namespace llvm;
+
+#define DEBUG_TYPE "ezh-bitslice-injection"
+
+namespace {
+class EZHBitSliceInjection : public MachineFunctionPass {
+public:
+  static char ID;
+  EZHBitSliceInjection() : MachineFunctionPass(ID) {}
+
+  bool runOnMachineFunction(MachineFunction &MF) override {
+    const EZHSubtarget &ST = MF.getSubtarget<EZHSubtarget>();
+    if (!ST.hasBitSliceInterrupts())
+      return false;
+
+    // Do not recursively inject into the bitslice handler itself!
+    if (MF.getName() == "bitslice_handler")
+      return false;
+
+    const TargetInstrInfo *TII = ST.getInstrInfo();
+    bool Changed = false;
+
+    for (auto &MBB : MF) {
+      for (auto I = MBB.begin(), E = MBB.end(); I != E;) {
+        MachineInstr &MI = *I;
+        ++I; // Increment iterator early as we might insert before MI
+
+        unsigned Opc = MI.getOpcode();
+        bool IsBranchOrCall = false;
+
+        switch (Opc) {
+        case EZH::GOTO:
+        case EZH::GOTO_ze:
+        case EZH::GOTO_nz:
+        case EZH::GOTO_po:
+        case EZH::GOTO_ne:
+        case EZH::GOTO_az:
+        case EZH::GOTO_zb:
+        case EZH::GOTO_ca:
+        case EZH::GOTO_nc:
+        case EZH::GOTO_cz:
+        case EZH::GOTO_spo:
+        case EZH::GOTO_sne:
+        case EZH::GOTO_nbs:
+        case EZH::GOTO_nex:
+        case EZH::GOTO_bs:
+        case EZH::GOTO_ex:
+        case EZH::GOTO_REG:
+        case EZH::GOTO_REG_ze:
+        case EZH::GOTO_REG_nz:
+        case EZH::GOTO_REG_po:
+        case EZH::GOTO_REG_ne:
+        case EZH::GOTO_REG_az:
+        case EZH::GOTO_REG_zb:
+        case EZH::GOTO_REG_ca:
+        case EZH::GOTO_REG_nc:
+        case EZH::GOTO_REG_cz:
+        case EZH::GOTO_REG_spo:
+        case EZH::GOTO_REG_sne:
+        case EZH::GOTO_REG_nbs:
+        case EZH::GOTO_REG_nex:
+        case EZH::GOTO_REG_bs:
+        case EZH::GOTO_REG_ex:
+        case EZH::GOTO_REGL:
+        case EZH::GOTO_REGL_ze:
+        case EZH::GOTO_REGL_nz:
+        case EZH::GOTO_REGL_po:
+        case EZH::GOTO_REGL_ne:
+        case EZH::GOTO_REGL_az:
+        case EZH::GOTO_REGL_zb:
+        case EZH::GOTO_REGL_ca:
+        case EZH::GOTO_REGL_nc:
+        case EZH::GOTO_REGL_cz:
+        case EZH::GOTO_REGL_spo:
+        case EZH::GOTO_REGL_sne:
+        case EZH::GOTO_REGL_nbs:
+        case EZH::GOTO_REGL_nex:
+        case EZH::GOTO_REGL_bs:
+        case EZH::GOTO_REGL_ex:
+        case EZH::CALL:
+        case EZH::CALLExt:
+        case EZH::CALL_INDIRECT:
+        case EZH::PseudoBR_JT:
+          IsBranchOrCall = true;
+          break;
+        default:
+          break;
+        }
+
+        if (IsBranchOrCall) {
+          BuildMI(MBB, MI, MI.getDebugLoc(), TII->get(EZH::GOTOL_bs))
+              .addExternalSymbol("bitslice_handler");
+          Changed = true;
+        }
+      }
+    }
+
+    return Changed;
+  }
+};
+
+char EZHBitSliceInjection::ID = 0;
+} // namespace
+
+namespace llvm {
+FunctionPass *createEZHBitSliceInjectionPass() {
+  return new EZHBitSliceInjection();
+}
+} // namespace llvm
diff --git a/llvm/lib/Target/EZH/EZHBranchFixup.cpp b/llvm/lib/Target/EZH/EZHBranchFixup.cpp
new file mode 100644
index 0000000000000..ae8a9f8104e03
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHBranchFixup.cpp
@@ -0,0 +1,55 @@
+//===-- EZHBranchFixup.cpp - EZH Branch Cleanup Pass ------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This pass eliminates redundant GOTO instructions that jump to their direct
+// layout successors. Doing this before BitSliceInjection prevents redundant
+// gotol_bs instructions from being injected.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZH.h"
+#include "EZHInstrInfo.h"
+#include "EZHSubtarget.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+
+using namespace llvm;
+
+namespace {
+class EZHBranchFixup : public MachineFunctionPass {
+public:
+  static char ID;
+  EZHBranchFixup() : MachineFunctionPass(ID) {}
+
+  bool runOnMachineFunction(MachineFunction &MF) override {
+    bool Changed = false;
+
+    for (auto &MBB : MF) {
+      MachineBasicBlock::iterator I = MBB.getLastNonDebugInstr();
+      if (I == MBB.end())
+        continue;
+
+      if (I->getOpcode() == EZH::GOTO) {
+        MachineBasicBlock *TargetMBB = I->getOperand(0).getMBB();
+        if (MBB.isLayoutSuccessor(TargetMBB)) {
+          I->eraseFromParent();
+          Changed = true;
+        }
+      }
+    }
+    return Changed;
+  }
+};
+
+char EZHBranchFixup::ID = 0;
+} // namespace
+
+namespace llvm {
+FunctionPass *createEZHBranchFixupPass() { return new EZHBranchFixup(); }
+} // namespace llvm
diff --git a/llvm/lib/Target/EZH/EZHCallingConv.td b/llvm/lib/Target/EZH/EZHCallingConv.td
new file mode 100644
index 0000000000000..55bad5a353458
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHCallingConv.td
@@ -0,0 +1,36 @@
+//===-- EZHCallingConv.td - Calling Conventions for EZH --*- tablegen -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+/// CCIfAlign - Match of the original alignment of the arg
+class CCIfAlign<string Align, CCAction A>:
+  CCIf<!strconcat("ArgFlags.getNonZeroOrigAlign() >= ", Align), A>;
+
+def CC_EZH : CallingConv<[
+  CCIfByVal<CCPassByVal<4, 4>>,
+
+  CCIfType<[i1, i8, i16], CCPromoteToType<i32>>,
+
+  // i64/f64 (or >= 8-byte aligned types) are passed in even pairs of GPRs (R0/R1 or R2/R3)
+  // We match >= 8-alignment i32 parts, shadowing R1 as a pad register!
+  CCIfType<[i32], CCIfAlign<"8", CCAssignToRegWithShadow<[R0, R2], [R0, R1]>>>,
+  CCIfType<[i32], CCIf<"ArgFlags.getNonZeroOrigAlign() < Align(8)",
+                       CCAssignToReg<[R0, R1, R2, R3]>>>,
+
+  // Stack allocations with strict 8-byte alignment support for spilled types!
+  CCIfType<[i32], CCIfAlign<"8", CCAssignToStackWithShadow<4, 8, [R0, R1, R2, R3]>>>,
+  CCIfType<[i32], CCAssignToStackWithShadow<4, 4, [R0, R1, R2, R3]>>
+]>;
+
+def RetCC_EZH : CallingConv<[
+  CCIfType<[i1, i8, i16], CCPromoteToType<i32>>,
+
+  // Return in R0, R1, R2, R3
+  CCIfType<[i32, f32], CCAssignToReg<[R0, R1, R2, R3]>>
+]>;
+
+def CSR_EZH : CalleeSavedRegs<(add RA, R4, R5, R6, R7)>;
diff --git a/llvm/lib/Target/EZH/EZHCondCode.h b/llvm/lib/Target/EZH/EZHCondCode.h
new file mode 100644
index 0000000000000..85a36ef1edfb5
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHCondCode.h
@@ -0,0 +1,45 @@
+//===-- EZHCondCode.h - EZH Condition Code Enumeration --------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// The encoding used for conditional codes used in EZH instructions
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHCONDCODE_H
+#define LLVM_LIB_TARGET_EZH_EZHCONDCODE_H
+
+#include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/StringSwitch.h"
+#include "llvm/Support/ErrorHandling.h"
+
+namespace llvm {
+namespace LPCC {
+enum CondCode {
+  ICC_EU = 0,   // Execute Unconditionally
+  ICC_ZE = 1,   // Zero (EQ)
+  ICC_NZ = 2,   // Not Zero (NE)
+  ICC_PO = 3,   // Positive (PL/GE)
+  ICC_NE = 4,   // Negative (MI)
+  ICC_AZ = 5,   // Above zero (GT)
+  ICC_ZB = 6,   // Zero or below (LE)
+  ICC_CA = 7,   // Carry set (CS)
+  ICC_NC = 8,   // Carry not set (CC)
+  ICC_CZ = 9,   // Carry set and zero
+  ICC_SPO = 10, // Shift-only-when-Positive
+  ICC_SNE = 11, // Shift-only-when-Negative
+  ICC_NBS = 12, // Not Boolean-expression set
+  ICC_NEX = 13, // External flag is not set
+  ICC_BS = 14,  // Boolean-expression set
+  ICC_EX = 15,  // External flag is set
+  UNKNOWN
+};
+
+} // namespace LPCC
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHCONDCODE_H
diff --git a/llvm/lib/Target/EZH/EZHConstantIslandPass.cpp b/llvm/lib/Target/EZH/EZHConstantIslandPass.cpp
new file mode 100644
index 0000000000000..4907eced0bbd4
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHConstantIslandPass.cpp
@@ -0,0 +1,703 @@
+//===-- EZHConstantIslandPass.cpp - EZH Constant Islands ------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZH.h"
+#include "EZHBasicBlockInfo.h"
+#include "EZHConstantPoolValue.h"
+#include "EZHInstrInfo.h"
+#include "EZHSubtarget.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/SmallString.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/CodeGen/LivePhysRegs.h"
+#include "llvm/CodeGen/MachineConstantPool.h"
+#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+#include "llvm/CodeGen/MachineJumpTableInfo.h"
+#include "llvm/IR/Constants.h"
+#include "llvm/IR/Type.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/raw_ostream.h"
+#include <vector>
+
+#define DEBUG_TYPE "ezh-constant-islands"
+
+#define DEBUG_PRINT(x) LLVM_DEBUG(dbgs() << x)
+
+using namespace llvm;
+
+namespace {
+struct CPUser {
+  MachineInstr *MI;
+  MachineInstr *CPEMI;
+  MachineBasicBlock *HighWaterMark;
+  unsigned MaxDisp;
+  bool NegOk;
+  bool IsSoImm;
+  bool KnownAlignment = false;
+
+  CPUser(MachineInstr *mi, MachineInstr *cpemi, unsigned maxdisp, bool neg,
+         bool soimm)
+      : MI(mi), CPEMI(cpemi), MaxDisp(maxdisp), NegOk(neg), IsSoImm(soimm) {
+    HighWaterMark = CPEMI->getParent();
+  }
+
+  unsigned getMaxDisp() const {
+    return (KnownAlignment ? MaxDisp : MaxDisp - 2) - 2;
+  }
+};
+
+struct CPEntry {
+  MachineInstr *CPEMI;
+  unsigned CPI;
+  unsigned RefCount;
+
+  CPEntry(MachineInstr *cpemi, unsigned cpi, unsigned rc = 0)
+      : CPEMI(cpemi), CPI(cpi), RefCount(rc) {}
+};
+
+struct ImmBranch {
+  MachineInstr *MI;
+  unsigned MaxDisp : 31;
+  unsigned isCond : 1;
+  unsigned UncondBr;
+
+  ImmBranch(MachineInstr *mi, unsigned maxdisp, bool cond, unsigned ubr)
+      : MI(mi), MaxDisp(maxdisp), isCond(cond), UncondBr(ubr) {}
+};
+
+class EZHConstantIslandPass : public MachineFunctionPass {
+  const TargetInstrInfo *TII;
+  MachineFunction *MF;
+  SmallVector<CPUser, 8> CPUsers;
+  SmallVector<SmallVector<CPEntry, 2>, 8> CPEntries;
+  DenseMap<int, int> JumpTableEntryIndices;
+  DenseMap<int, int> JumpTableUserIndices;
+  SmallVector<ImmBranch, 8> ImmBranches;
+  SmallVector<MachineBasicBlock *, 8> WaterList;
+  std::unique_ptr<EZHBasicBlockUtils> BBUtils = nullptr;
+
+  void initializeFunctionInfo();
+
+public:
+  static char ID;
+  EZHConstantIslandPass() : MachineFunctionPass(ID) {}
+
+  bool runOnMachineFunction(MachineFunction &MF) override;
+
+private:
+  MachineBasicBlock *findAvailableWater(CPUser &U, unsigned UserOffset);
+  bool handleConstantPoolUser(unsigned CPI, bool CloserWater);
+  MachineBasicBlock *createNewWater(MachineInstr &MI);
+  bool fixupConditionalBr(ImmBranch &Br);
+  bool fixupImmediateBr(ImmBranch &Br);
+  void initializeWaterList();
+  bool decrementCPEReferenceCount(unsigned CPI, MachineInstr *CPEMI);
+  void updateForInsertedWaterBlock(MachineBasicBlock *NewBB);
+};
+
+char EZHConstantIslandPass::ID = 0;
+} // namespace
+
+void EZHConstantIslandPass::initializeWaterList() {
+  WaterList.clear();
+  for (auto &MBB : *MF) {
+    if (!MBB.empty() &&
+        (MBB.back().getOpcode() == EZH::GOTO || MBB.back().isReturn())) {
+      WaterList.push_back(&MBB);
+    }
+  }
+}
+
+MachineBasicBlock *EZHConstantIslandPass::createNewWater(MachineInstr &MI) {
+  MachineBasicBlock *MBB = MI.getParent();
+
+  // Collect liveness information at MI.
+  LivePhysRegs LRs(*MF->getSubtarget().getRegisterInfo());
+  LRs.addLiveOuts(*MBB);
+  auto LivenessEnd = ++MachineBasicBlock::iterator(MI).getReverse();
+  for (MachineInstr &LiveMI : make_range(MBB->rbegin(), LivenessEnd))
+    LRs.stepBackward(LiveMI);
+
+  // Find split point
+  MachineBasicBlock::iterator I = MI.getIterator();
+
+  // Split block before I
+  MachineBasicBlock *NewBB = MF->CreateMachineBasicBlock(MBB->getBasicBlock());
+  MF->insert(std::next(MBB->getIterator()), NewBB);
+
+  // Update live-in information in the new block.
+  MachineRegisterInfo &MRI = MF->getRegInfo();
+  for (MCPhysReg L : LRs)
+    if (!MRI.isReserved(L))
+      NewBB->addLiveIn(L);
+
+  NewBB->splice(NewBB->begin(), MBB, I, MBB->end());
+
+  // If MBB became empty, insert a dummy instruction to prevent it from being
+  // removed!
+  if (MBB->empty()) {
+    const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();
+    BuildMI(MBB, DebugLoc(), TII->get(EZH::ADDri__))
+        .addReg(EZH::R0)
+        .addReg(EZH::R0)
+        .addImm(0);
+  }
+
+  // Update CFG
+  NewBB->transferSuccessors(MBB);
+  MBB->addSuccessor(NewBB);
+  BuildMI(MBB, DebugLoc(), TII->get(EZH::GOTO)).addMBB(NewBB);
+
+  MF->RenumberBlocks(NewBB);
+  EZHBasicBlockInfo NewBBI;
+  BBUtils->insert(NewBB->getNumber(), NewBBI);
+  BBUtils->computeBlockSize(MBB);
+  BBUtils->computeBlockSize(NewBB);
+  BBUtils->adjustBBOffsetsAfter(MBB);
+
+  return NewBB;
+}
+
+MachineBasicBlock *
+EZHConstantIslandPass::findAvailableWater(CPUser &U, unsigned UserOffset) {
+  if (WaterList.empty())
+    return nullptr;
+
+  for (MachineBasicBlock *WaterBB : llvm::reverse(WaterList)) {
+
+    if (WaterBB->getNumber() >= U.HighWaterMark->getNumber()) {
+      continue; // Maintain monotonic movement!
+    }
+
+    unsigned WaterOffset =
+        BBUtils->getBBInfo()[WaterBB->getNumber()].postOffset(Align(4));
+    unsigned Disp = (UserOffset > WaterOffset) ? (UserOffset - WaterOffset)
+                                               : (WaterOffset - UserOffset);
+
+    if (Disp <= U.MaxDisp)
+      return WaterBB; // Found the LATEST valid water (since we are searching
+                      // backwards!)
+  }
+
+  return nullptr;
+}
+
+void EZHConstantIslandPass::initializeFunctionInfo() {
+  WaterList.clear();
+  CPUsers.clear();
+  CPEntries.clear();
+  ImmBranches.clear();
+  JumpTableEntryIndices.clear();
+  JumpTableUserIndices.clear();
+
+  const MachineConstantPool *MCP = MF->getConstantPool();
+  const std::vector<MachineConstantPoolEntry> &Constants = MCP->getConstants();
+
+  CPEntries.resize(Constants.size());
+
+  // Initial placement at the end of the function
+  MachineBasicBlock *EndBB = MF->CreateMachineBasicBlock();
+  MF->push_back(EndBB);
+  EndBB->setMachineBlockAddressTaken();
+  EndBB->setLabelMustBeEmitted();
+
+  const DataLayout &TD = MF->getDataLayout();
+
+  // Find max alignment and bucket sort constants by descending alignment (ARM
+  // style!)
+  Align MaxAlign(1);
+  for (const auto &Constant : Constants)
+    MaxAlign = std::max(MaxAlign, Constant.getAlign());
+  unsigned MaxLogAlign = Log2(MaxAlign);
+
+  SmallVector<MachineBasicBlock::iterator, 8> InsPoint(MaxLogAlign + 1,
+                                                       EndBB->end());
+
+  for (auto [i, Constant] : llvm::enumerate(Constants)) {
+    unsigned Size = Constant.getSizeInBytes(TD);
+    Align Alignment = Constant.getAlign();
+
+    assert(isAligned(Alignment, Size) &&
+           "CP Entry not multiple of its alignment!");
+
+    unsigned LogAlign = Log2(Alignment);
+    MachineBasicBlock::iterator InsAt = InsPoint[LogAlign];
+
+    SmallString<32> SymName;
+    raw_svector_ostream(SymName)
+        << ".LCPI" << MF->getFunctionNumber() << "_" << i;
+    MCSymbol *LitSym = MF->getContext().getOrCreateSymbol(SymName);
+
+    MachineInstr *CPEMI =
+        BuildMI(*EndBB, InsAt, DebugLoc(), TII->get(EZH::CONSTPOOL_ENTRY))
+            .addSym(LitSym)
+            .addConstantPoolIndex(i)
+            .addImm(Size); // Operand 2: Size!
+
+    CPEntries[i].push_back(CPEntry(CPEMI, i));
+
+    for (unsigned a = LogAlign + 1; a <= MaxLogAlign; ++a) {
+      if (InsPoint[a] == InsAt)
+        InsPoint[a] = CPEMI;
+    }
+  }
+
+  // Do the same for Jump Tables
+  const MachineJumpTableInfo *MJTI = MF->getJumpTableInfo();
+  if (MJTI) {
+    const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
+    unsigned Offset = CPEntries.size();
+    CPEntries.resize(Offset + JT.size());
+
+    for (auto [i, JumpTableEntry] : llvm::enumerate(JT)) {
+      SmallString<32> SymName;
+      raw_svector_ostream(SymName)
+          << ".LJTI" << MF->getFunctionNumber() << "_" << i;
+      MCSymbol *LitSym = MF->getContext().getOrCreateSymbol(SymName);
+
+      unsigned JTSize = JumpTableEntry.MBBs.size() * 4;
+      MachineInstr *CPEMI = BuildMI(*EndBB, EndBB->end(), DebugLoc(),
+                                    TII->get(EZH::CONSTPOOL_ENTRY))
+                                .addSym(LitSym)
+                                .addJumpTableIndex(i)
+                                .addImm(JTSize); // Operand 2: Size!
+
+      CPEntries[Offset + i].push_back(CPEntry(CPEMI, i));
+      JumpTableEntryIndices[i] = Offset + i;
+
+      // Force label emission for all targets in this jump table!
+      const std::vector<MachineBasicBlock *> &MBBs = JumpTableEntry.MBBs;
+      for (MachineBasicBlock *MBB : MBBs)
+        MBB->setLabelMustBeEmitted();
+    }
+  }
+
+  for (MachineBasicBlock &MBB : *MF) {
+    for (MachineInstr &MI : MBB) {
+      unsigned Opc = MI.getOpcode();
+
+      // Scan for branches
+      if (MI.isBranch()) {
+        bool isCond = false;
+        unsigned MaxOffs = 8 * 1024 * 1024; // 8MB segment limit
+        unsigned UncondBr = 0;
+
+        switch (Opc) {
+        case EZH::GOTO:
+          break;
+        case EZH::GOTO_ca:
+        case EZH::GOTO_nz:
+        case EZH::GOTO_ze:
+          isCond = true;
+          UncondBr = EZH::GOTO;
+          break;
+        default:
+          continue;
+        }
+
+        ImmBranches.push_back(ImmBranch(&MI, MaxOffs, isCond, UncondBr));
+      }
+
+      // Scan for loads
+      if (Opc == EZH::LOAD_CONSTANT) {
+        MachineOperand &MO = MI.getOperand(1);
+        unsigned MaxDisp = 500; // E_LDR limit with margin for signed 8-bit word
+                                // offset (hardware limit is 508 bytes)
+
+        if (MO.isCPI()) {
+          unsigned CPI = MO.getIndex();
+          MachineInstr *CPEMI = CPEntries[CPI][0].CPEMI;
+          CPUsers.push_back(CPUser(&MI, CPEMI, MaxDisp, true, false));
+          ++CPEntries[CPI][0].RefCount;
+        } else if (MO.isJTI()) {
+          unsigned JTI = MO.getIndex();
+          unsigned CPI = JumpTableEntryIndices[JTI];
+          MachineInstr *CPEMI = CPEntries[CPI][0].CPEMI;
+          CPUsers.push_back(CPUser(&MI, CPEMI, MaxDisp, true, false));
+          ++CPEntries[CPI][0].RefCount;
+          JumpTableUserIndices[JTI] = CPUsers.size() - 1;
+        }
+      }
+    }
+  }
+}
+
+bool EZHConstantIslandPass::fixupImmediateBr(ImmBranch &Br) {
+  if (!Br.MI)
+    return false;
+  MachineInstr *MI = Br.MI;
+  MachineBasicBlock *DestBB = MI->getOperand(0).getMBB();
+
+  unsigned BrOffset = BBUtils->getOffsetOf(MI);
+  if (DestBB->getNumber() < 0 ||
+      DestBB->getNumber() >= static_cast<int>(BBUtils->getBBInfo().size())) {
+    errs() << "CRASH PREVENTED: DestBB number " << DestBB->getNumber()
+           << " is out of bounds for BBInfo of size "
+           << BBUtils->getBBInfo().size() << "\n";
+    errs() << "DestBB: " << *DestBB << "\n";
+    errs() << "Function: " << MF->getName() << "\n";
+
+    errs() << "Referencing branches:\n";
+    for (auto &MBB : *MF) {
+      for (auto &MI : MBB) {
+        if (MI.isBranch()) {
+          for (auto &MO : MI.operands()) {
+            if (MO.isMBB() && MO.getMBB() == DestBB) {
+              errs() << "  In block #" << MBB.getNumber() << " "
+                     << MBB.getName() << ": " << MI << "\n";
+            }
+          }
+        }
+      }
+    }
+
+    errs() << "Blocks in function:\n";
+    for (auto &MBB : *MF) {
+      errs() << "  Block #" << MBB.getNumber() << " " << MBB.getName() << "\n";
+    }
+    report_fatal_error("prevented crash due to out-of-bounds block number");
+  }
+  unsigned TargetOffset = BBUtils->getOffsetOf(DestBB);
+
+  // Check if top 9 bits are different (assuming 23 bits of byte range).
+  if ((BrOffset >> 23) == (TargetOffset >> 23))
+    return false; // Same segment!
+
+  // Out of range! We need to fix it up!
+
+  // Put DestBB in constant pool
+  EZHConstantPoolValue *CPV = new EZHConstantPoolValue(
+      DestBB, Type::getInt32Ty(MF->getFunction().getContext()));
+  unsigned CPI = MF->getConstantPool()->getConstantPoolIndex(CPV, Align(4));
+
+  // Load address directly into PC!
+  BuildMI(*MI->getParent(), MI, MI->getDebugLoc(), TII->get(EZH::LOAD_CONSTANT),
+          EZH::PC)
+      .addImm(CPI);
+
+  // Remove the original branch instruction
+  MI->eraseFromParent();
+  Br.MI = nullptr;
+
+  return true;
+}
+
+void EZHConstantIslandPass::updateForInsertedWaterBlock(
+    MachineBasicBlock *NewBB) {
+  NewBB->getParent()->RenumberBlocks(NewBB);
+  BBUtils->insert(NewBB->getNumber(), EZHBasicBlockInfo());
+
+  auto CompareMBBNumbers = [](const MachineBasicBlock *LHS,
+                              const MachineBasicBlock *RHS) {
+    return LHS->getNumber() < RHS->getNumber();
+  };
+  auto IP = lower_bound(WaterList, NewBB, CompareMBBNumbers);
+  WaterList.insert(IP, NewBB);
+}
+
+bool EZHConstantIslandPass::decrementCPEReferenceCount(unsigned CPI,
+                                                       MachineInstr *CPEMI) {
+  DEBUG_PRINT(
+      "        decrementCPEReferenceCount: CPI=" << CPI << " CPEMI=" << *CPEMI);
+  for (auto &Entry : CPEntries[CPI]) {
+    if (Entry.CPEMI == CPEMI) {
+      DEBUG_PRINT("          Found entry. Old RefCount=" << (Entry.RefCount + 1)
+                                                         << "\n");
+      if (--Entry.RefCount == 0) {
+        DEBUG_PRINT("          RefCount became 0. Erasing instruction...\n");
+        MachineBasicBlock *Parent = CPEMI->getParent();
+        CPEMI->eraseFromParent();
+        Entry.CPEMI = nullptr;
+        BBUtils->computeBlockSize(Parent);
+        BBUtils->adjustBBOffsetsAfter(Parent);
+        DEBUG_PRINT("          Instruction erased and sizes recalculated.\n");
+        return true;
+      }
+      return false;
+    }
+  }
+  llvm_unreachable("CPEntry not found!");
+}
+
+bool EZHConstantIslandPass::handleConstantPoolUser(unsigned CPUserIndex,
+                                                   bool CloserWater) {
+  CPUser &User = CPUsers[CPUserIndex];
+  unsigned UserOffset = BBUtils->getOffsetOf(User.MI);
+  unsigned CPEOffset = BBUtils->getOffsetOf(User.CPEMI);
+
+  unsigned Disp = (UserOffset > CPEOffset) ? (UserOffset - CPEOffset)
+                                           : (CPEOffset - UserOffset);
+
+  DEBUG_PRINT("      handleConstantPoolUser for "
+              << MF->getName() << ": User " << CPUserIndex
+              << " (Opc=" << User.MI->getOpcode() << ")\n");
+  DEBUG_PRINT("        UserOffset=" << UserOffset << " CPEOffset=" << CPEOffset
+                                    << " Disp=" << Disp
+                                    << " MaxDisp=" << User.MaxDisp << "\n");
+
+  if (Disp <= User.MaxDisp) {
+    DEBUG_PRINT("        -> In range!\n");
+    return false; // In range!
+  }
+  DEBUG_PRINT("        -> Out of range!\n");
+
+  // Search for an existing clone
+  MachineInstr *Clone = nullptr;
+  unsigned OrigCPI = User.CPEMI->getOperand(1).getIndex();
+  if (User.CPEMI->getOperand(1).isJTI()) {
+    OrigCPI = JumpTableEntryIndices[OrigCPI];
+  }
+
+  for (CPEntry &Entry : CPEntries[OrigCPI]) {
+    if (!Entry.CPEMI)
+      continue;
+    unsigned CloneOffset = BBUtils->getOffsetOf(Entry.CPEMI);
+    unsigned CloneDisp = (UserOffset > CloneOffset)
+                             ? (UserOffset - CloneOffset)
+                             : (CloneOffset - UserOffset);
+    if (CloneDisp <= User.MaxDisp) {
+      Clone = Entry.CPEMI;
+      ++Entry.RefCount;
+      break;
+    }
+  }
+
+  if (Clone) {
+    DEBUG_PRINT("      Found clone: " << *Clone << "\n");
+    DEBUG_PRINT("      Decrementing old CPE refcount...\n");
+    decrementCPEReferenceCount(OrigCPI, User.CPEMI);
+    User.CPEMI = Clone;
+    MCSymbol *CloneSym = Clone->getOperand(0).getMCSymbol();
+    User.MI->getOperand(1).ChangeToMCSymbol(CloneSym);
+    DEBUG_PRINT("      handleConstantPoolUser finished (reused clone)\n");
+    return true;
+  }
+
+  // Search for water
+  MachineBasicBlock *WaterBB = findAvailableWater(User, UserOffset);
+
+  MachineBasicBlock *NewIsland = MF->CreateMachineBasicBlock();
+  MachineBasicBlock *NewMBB = nullptr;
+
+  if (WaterBB) {
+    auto IP = std::find(WaterList.begin(), WaterList.end(), WaterBB);
+    if (IP != WaterList.end())
+      WaterList.erase(IP);
+    NewMBB = &*++WaterBB->getIterator();
+  } else {
+    DEBUG_PRINT("      No water found. Creating new water...\n");
+    NewMBB = createNewWater(*User.MI);
+    DEBUG_PRINT("      New water created. NewMBB=" << NewMBB->getNumber()
+                                                   << "\n");
+  }
+  LLVM_DEBUG(dbgs() << "  Created new island. WaterBB="
+                    << (WaterBB ? WaterBB->getNumber() : -1) << "\n");
+
+  // Always align the new block because CP entries can be smaller than 4 bytes.
+  NewIsland->setAlignment(Align(4));
+
+  // Insert NewIsland before NewMBB
+  MF->insert(NewMBB->getIterator(), NewIsland);
+  updateForInsertedWaterBlock(NewIsland);
+  unsigned Size = User.CPEMI->getOperand(2).getImm();
+  BBUtils->adjustBBSize(NewIsland, Size); // Use the actual constant size!
+  BBUtils->adjustBBOffsetsAfter(&*--NewIsland->getIterator());
+
+  unsigned CloneIdx = CPEntries[OrigCPI].size();
+  SmallString<32> SymName;
+  raw_svector_ostream(SymName) << ".LCPI" << MF->getFunctionNumber() << "_"
+                               << OrigCPI << "_" << CloneIdx;
+  MCSymbol *NewLitSym = MF->getContext().getOrCreateSymbol(SymName);
+
+  // Put CONSTPOOL_ENTRY in NewIsland
+  MachineInstr *NewCPEMI =
+      BuildMI(NewIsland, DebugLoc(), TII->get(EZH::CONSTPOOL_ENTRY))
+          .addSym(NewLitSym)
+          .add(User.CPEMI->getOperand(1))  // CPI
+          .add(User.CPEMI->getOperand(2)); // Size! (Clone size operand)
+
+  CPEntries[OrigCPI].push_back(CPEntry(NewCPEMI, OrigCPI, 1));
+
+  DEBUG_PRINT(
+      "      Relocating to new island. Decrementing old CPE refcount...\n");
+  decrementCPEReferenceCount(OrigCPI, User.CPEMI);
+  User.CPEMI = NewCPEMI;
+  User.HighWaterMark = NewIsland;
+
+  User.MI->getOperand(1).ChangeToMCSymbol(NewLitSym);
+  DEBUG_PRINT("      handleConstantPoolUser finished (created new island)\n");
+
+  return true;
+}
+
+bool EZHConstantIslandPass::runOnMachineFunction(MachineFunction &mf) {
+  MF = &mf;
+  const EZHSubtarget &STI = MF->getSubtarget<EZHSubtarget>();
+  TII = STI.getInstrInfo();
+  MF->RenumberBlocks();
+  bool Changed = false;
+
+  // 1. Expand PseudoBR_JT instructions late!
+  SmallVector<MachineInstr *, 4> Pseudos;
+  for (auto &MBB : *MF) {
+    for (auto &MI : MBB) {
+      if (MI.getOpcode() == EZH::PseudoBR_JT) {
+        Pseudos.push_back(&MI);
+      }
+    }
+  }
+
+  for (MachineInstr *MI : Pseudos) {
+    MachineBasicBlock *MBB = MI->getParent();
+    DebugLoc DL = MI->getDebugLoc();
+    Register TableReg = MI->getOperand(0).getReg();
+    Register IndexReg = MI->getOperand(1).getReg();
+
+    BuildMI(*MBB, MI, DL, TII->get(EZH::LSL_ADD__), EZH::RA)
+        .addReg(TableReg)
+        .addReg(IndexReg)
+        .addImm(2);
+
+    BuildMI(*MBB, MI, DL, TII->get(EZH::LDR), EZH::PC)
+        .addReg(EZH::RA)
+        .addImm(0);
+
+    MI->eraseFromParent();
+    Changed = true;
+  }
+
+  initializeFunctionInfo();
+
+  // Renumber blocks to ensure EndBB (just created) gets a consecutive ID!
+  MF->RenumberBlocks();
+
+  // Construct BBUtils now that EndBB and jump tables are created and
+  // renumbered!
+  BBUtils = std::make_unique<EZHBasicBlockUtils>(*MF);
+  BBUtils->computeAllBlockSizes();
+  BBUtils->adjustBBOffsetsAfter(&MF->front());
+  initializeWaterList();
+
+  for (auto &MBB : *MF) {
+    for (auto &MI : MBB) {
+      if (MI.isBranch()) {
+        for (auto &MO : MI.operands()) {
+          if (MO.isMBB()) {
+            MO.getMBB()->setLabelMustBeEmitted();
+          }
+        }
+      }
+    }
+  }
+
+  const MachineConstantPool *MCP = MF->getConstantPool();
+  const std::vector<MachineConstantPoolEntry> &Constants = MCP->getConstants();
+  for (const MachineConstantPoolEntry &CPE : Constants) {
+    if (!CPE.isMachineConstantPoolEntry()) {
+      const Constant *CV = CPE.Val.ConstVal;
+      SmallVector<const BlockAddress *, 4> BAs;
+      if (const BlockAddress *BA = dyn_cast<BlockAddress>(CV)) {
+        BAs.push_back(BA);
+      } else if (const ConstantArray *CA = dyn_cast<ConstantArray>(CV)) {
+        for (const Value *Op : CA->operand_values())
+          if (const BlockAddress *BA = dyn_cast<BlockAddress>(Op))
+            BAs.push_back(BA);
+      }
+
+      for (const BlockAddress *BA : BAs) {
+        for (auto &MBB : *MF) {
+          if (MBB.getBasicBlock() == BA->getBasicBlock()) {
+            MBB.setLabelMustBeEmitted();
+            break;
+          }
+        }
+      }
+    }
+  }
+
+  if (CPUsers.empty())
+    return false;
+
+  // 3. Nested Iterative Loop
+  bool OverallChange = true;
+  unsigned OverallIters = 0;
+  while (OverallChange) {
+    OverallChange = false;
+
+    // Run Constant Pool pass until convergence
+    bool CPChange = true;
+    unsigned NoCPIters = 0;
+    while (CPChange) {
+      CPChange = false;
+      BBUtils->computeAllBlockSizes();
+      BBUtils->adjustBBOffsetsAfter(&MF->front());
+      initializeWaterList();
+      for (auto User : llvm::enumerate(CPUsers))
+        CPChange |= handleConstantPoolUser(User.index(), NoCPIters >= 5);
+
+      if (CPChange && ++NoCPIters > 100)
+        report_fatal_error("constant island pass failed to converge (CP loop)");
+    }
+
+    // Run Branch Fixup pass
+    bool BRChange = false;
+    BBUtils->computeAllBlockSizes();
+    BBUtils->adjustBBOffsetsAfter(&MF->front());
+    for (ImmBranch &Br : ImmBranches)
+      BRChange |= fixupImmediateBr(Br);
+
+    OverallChange = BRChange;
+    Changed |= BRChange;
+
+    if (OverallChange && ++OverallIters > 10)
+      report_fatal_error(
+          "constant island pass failed to converge (overall loop)");
+  }
+
+  // Update operands of LOAD instructions to reference the unique symbol of the
+  // selected CPEMI
+  for (CPUser &User : CPUsers) {
+    MCSymbol *LitSym = User.CPEMI->getOperand(0).getMCSymbol();
+    User.MI->getOperand(1) = MachineOperand::CreateMCSymbol(LitSym);
+  }
+
+  // Clean up redundant branches created by splitting
+  for (auto &MBB : *MF) {
+    MachineBasicBlock::iterator I = MBB.getLastNonDebugInstr();
+    if (I != MBB.end() && I->getOpcode() == EZH::GOTO) {
+      MachineBasicBlock *TargetMBB = I->getOperand(0).getMBB();
+      if (MBB.isLayoutSuccessor(TargetMBB)) {
+        // Erase preceding bitslice workaround if present, skipping debug insts
+        MachineBasicBlock::iterator Prev = I;
+        while (Prev != MBB.begin()) {
+          --Prev;
+          if (!Prev->isDebugInstr()) {
+            if (Prev->getOpcode() == EZH::GOTOL_bs) {
+              Prev->eraseFromParent();
+            }
+            break;
+          }
+        }
+        I->eraseFromParent();
+        Changed = true;
+      }
+    }
+  }
+
+  return Changed;
+}
+
+namespace llvm {
+FunctionPass *createEZHConstantIslandPass() {
+  return new EZHConstantIslandPass();
+}
+} // namespace llvm
diff --git a/llvm/lib/Target/EZH/EZHConstantPoolValue.h b/llvm/lib/Target/EZH/EZHConstantPoolValue.h
new file mode 100644
index 0000000000000..3f504dc94d639
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHConstantPoolValue.h
@@ -0,0 +1,164 @@
+//===-- EZHConstantPoolValue.h - EZH Constant Pool Value ------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the declaration of the EZHConstantPoolValue class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHCONSTANTPOOLVALUE_H
+#define LLVM_LIB_TARGET_EZH_EZHCONSTANTPOOLVALUE_H
+
+#include "llvm/ADT/FoldingSet.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineConstantPool.h"
+#include "llvm/IR/BasicBlock.h"
+#include "llvm/IR/Constants.h"
+#include "llvm/Support/Casting.h"
+#include "llvm/Support/ErrorHandling.h"
+#include <vector>
+
+namespace llvm {
+
+class BlockAddress;
+class GlobalValue;
+class raw_ostream;
+
+namespace EZHCP {
+enum EZHCPKind {
+  CPJumpTable,
+  CPBlockAddress,
+  CPExtSymbol,
+  CPMachineBasicBlock,
+  CPGlobalValue,
+  CPConstantPoolIndex
+};
+}
+
+/// EZH Constant Pool Value.
+class EZHConstantPoolValue : public MachineConstantPoolValue {
+  EZHCP::EZHCPKind Kind;
+  unsigned JTI;                 // JumpTable index
+  const BlockAddress *BA;       // BlockAddress value
+  const char *Symbol;           // External symbol name
+  const MachineBasicBlock *MBB; // MachineBasicBlock value
+  const GlobalValue *GV;        // GlobalValue value
+  int64_t Offset;               // Offset for GlobalValue
+  unsigned CPI;                 // ConstantPoolIndex
+
+public:
+  // Constructors
+  EZHConstantPoolValue(unsigned jti, Type *Ty)
+      : MachineConstantPoolValue(Ty), Kind(EZHCP::CPJumpTable), JTI(jti),
+        BA(nullptr), Symbol(nullptr), MBB(nullptr), GV(nullptr), Offset(0),
+        CPI(0) {}
+
+  EZHConstantPoolValue(const BlockAddress *ba, Type *Ty)
+      : MachineConstantPoolValue(Ty), Kind(EZHCP::CPBlockAddress), JTI(0),
+        BA(ba), Symbol(nullptr), MBB(nullptr), GV(nullptr), Offset(0), CPI(0) {}
+
+  EZHConstantPoolValue(const char *sym, Type *Ty)
+      : MachineConstantPoolValue(Ty), Kind(EZHCP::CPExtSymbol), JTI(0),
+        BA(nullptr), Symbol(sym), MBB(nullptr), GV(nullptr), Offset(0), CPI(0) {
+  }
+
+  EZHConstantPoolValue(const MachineBasicBlock *mbb, Type *Ty)
+      : MachineConstantPoolValue(Ty), Kind(EZHCP::CPMachineBasicBlock), JTI(0),
+        BA(nullptr), Symbol(nullptr), MBB(mbb), GV(nullptr), Offset(0), CPI(0) {
+  }
+
+  EZHConstantPoolValue(const GlobalValue *gv, int64_t offset, Type *Ty)
+      : MachineConstantPoolValue(Ty), Kind(EZHCP::CPGlobalValue), JTI(0),
+        BA(nullptr), Symbol(nullptr), MBB(nullptr), GV(gv), Offset(offset),
+        CPI(0) {}
+
+  EZHConstantPoolValue(unsigned cpi, Type *Ty, bool isCPI)
+      : MachineConstantPoolValue(Ty), Kind(EZHCP::CPConstantPoolIndex), JTI(0),
+        BA(nullptr), Symbol(nullptr), MBB(nullptr), GV(nullptr), Offset(0),
+        CPI(cpi) {}
+
+  // Accessors
+  bool isJumpTable() const { return Kind == EZHCP::CPJumpTable; }
+  bool isBlockAddress() const { return Kind == EZHCP::CPBlockAddress; }
+  bool isExtSymbol() const { return Kind == EZHCP::CPExtSymbol; }
+  bool isMachineBasicBlock() const {
+    return Kind == EZHCP::CPMachineBasicBlock;
+  }
+  bool isGlobalValue() const { return Kind == EZHCP::CPGlobalValue; }
+  bool isConstantPoolIndex() const {
+    return Kind == EZHCP::CPConstantPoolIndex;
+  }
+
+  unsigned getJumpTableIndex() const { return JTI; }
+  const BlockAddress *getBlockAddress() const { return BA; }
+  const char *getExtSymbol() const { return Symbol; }
+  const MachineBasicBlock *getMachineBasicBlock() const { return MBB; }
+  const GlobalValue *getGlobalValue() const { return GV; }
+  int64_t getOffset() const { return Offset; }
+  unsigned getConstantPoolIndex() const { return CPI; }
+
+  // Virtual methods from MachineConstantPoolValue
+  int getExistingMachineCPValue(MachineConstantPool *MCP,
+                                Align Alignment) override {
+    const std::vector<MachineConstantPoolEntry> &Constants =
+        MCP->getConstants();
+    for (unsigned i = 0, e = Constants.size(); i != e; ++i) {
+      if (Constants[i].isMachineConstantPoolEntry()) {
+        auto *CPV =
+            static_cast<EZHConstantPoolValue *>(Constants[i].Val.MachineCPVal);
+        if (CPV->Kind == Kind && CPV->JTI == JTI && CPV->BA == BA &&
+            CPV->Symbol == Symbol && CPV->MBB == MBB && CPV->GV == GV &&
+            CPV->Offset == Offset && CPV->CPI == CPI)
+          return i;
+      }
+    }
+    return -1;
+  }
+
+  void print(raw_ostream &O) const override {
+    switch (Kind) {
+    case EZHCP::CPJumpTable:
+      O << ".LJTI" << JTI;
+      break;
+    case EZHCP::CPBlockAddress:
+      O << BA->getBasicBlock()->getName();
+      break;
+    case EZHCP::CPExtSymbol:
+      O << Symbol;
+      break;
+    case EZHCP::CPMachineBasicBlock:
+      O << MBB->getSymbol()->getName();
+      break;
+    case EZHCP::CPGlobalValue:
+      O << "Global: " << static_cast<const void *>(GV) << "+" << Offset;
+      break;
+    case EZHCP::CPConstantPoolIndex:
+      O << ".LCPI" << CPI;
+      break;
+    }
+  }
+
+  void addSelectionDAGCSEId(FoldingSetNodeID &ID) override {
+    ID.AddInteger(Kind);
+    ID.AddInteger(JTI);
+    ID.AddPointer(BA);
+    if (Symbol)
+      ID.AddString(Symbol);
+    ID.AddPointer(MBB);
+    ID.AddPointer(GV);
+    ID.AddInteger(Offset);
+    ID.AddInteger(CPI);
+  }
+
+  static bool classof(const MachineConstantPoolValue *V) {
+    return true; // Assume all are ours for now
+  }
+};
+
+} // namespace llvm
+
+#endif
diff --git a/llvm/lib/Target/EZH/EZHFrameLowering.cpp b/llvm/lib/Target/EZH/EZHFrameLowering.cpp
new file mode 100644
index 0000000000000..a23d112d80aa2
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHFrameLowering.cpp
@@ -0,0 +1,485 @@
+//===-- EZHFrameLowering.cpp - EZH Frame Information ------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHFrameLowering.h"
+#include "EZHInstrInfo.h"
+#include "EZHMachineFunctionInfo.h"
+#include "EZHSubtarget.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/bit.h"
+#include "llvm/CodeGen/CFIInstBuilder.h"
+#include "llvm/CodeGen/MachineFrameInfo.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+#include "llvm/CodeGen/RegisterScavenging.h"
+#include <algorithm>
+#include <iterator>
+
+using namespace llvm;
+
+bool EZHFrameLowering::spillCalleeSavedRegisters(
+    MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
+    ArrayRef<CalleeSavedInfo> CSI, const TargetRegisterInfo *TRI) const {
+  if (CSI.empty())
+    return false;
+
+  DebugLoc DL;
+  if (MI != MBB.end())
+    DL = MI->getDebugLoc();
+
+  MachineFunction &MF = *MBB.getParent();
+  const EZHInstrInfo &TII =
+      *static_cast<const EZHInstrInfo *>(MF.getSubtarget().getInstrInfo());
+
+  // Fallback: VarArgs functions MUST use standard stable offset-stores
+  // to allow the compiler to unify all SP allocations into a single instruction
+  // and prevent dynamic pushes from overlapping the parameter spills!
+  if (MF.getFunction().isVarArg()) {
+    for (const CalleeSavedInfo &CS : CSI) {
+      unsigned Reg = CS.getReg();
+      int FI = CS.getFrameIdx();
+      const TargetRegisterClass *RC = TRI->getMinimalPhysRegClass(Reg);
+      TII.storeRegToStackSlot(MBB, MI, Reg, true, FI, RC, Register(),
+                              MachineInstr::FrameSetup);
+    }
+    return true;
+  }
+
+  CFIInstBuilder CFI(MBB, MI, MachineInstr::FrameSetup);
+  int64_t CFAOffset = 0;
+
+  for (const CalleeSavedInfo &CS : CSI) {
+    unsigned Reg = CS.getReg();
+    // Add instruction to push register (STR_PRE with -4 offset)
+    BuildMI(MBB, MI, DL, TII.get(EZH::STR_PRE), EZH::SP)
+        .addReg(Reg, getKillRegState(true))
+        .addReg(EZH::SP)
+        .addImm(-4)
+        .setMIFlag(MachineInstr::FrameSetup);
+    CFAOffset += 4;
+    CFI.buildDefCFAOffset(CFAOffset);
+    CFI.buildOffset(Reg, -CFAOffset);
+  }
+  return true;
+}
+
+bool EZHFrameLowering::restoreCalleeSavedRegisters(
+    MachineBasicBlock &MBB, MachineBasicBlock::iterator MI,
+    MutableArrayRef<CalleeSavedInfo> CSI, const TargetRegisterInfo *TRI) const {
+  if (CSI.empty())
+    return false;
+
+  DebugLoc DL;
+  if (MI != MBB.end())
+    DL = MI->getDebugLoc();
+
+  MachineFunction &MF = *MBB.getParent();
+  const EZHInstrInfo &TII =
+      *static_cast<const EZHInstrInfo *>(MF.getSubtarget().getInstrInfo());
+
+  // Fallback: VarArgs functions MUST use standard stable offset-loads
+  // to align perfectly with our unified stack frame allocation plan!
+  if (MF.getFunction().isVarArg()) {
+    for (const CalleeSavedInfo &Info : llvm::reverse(CSI)) {
+      unsigned Reg = Info.getReg();
+      int FI = Info.getFrameIdx();
+      const TargetRegisterClass *RC = TRI->getMinimalPhysRegClass(Reg);
+      TII.loadRegFromStackSlot(MBB, MI, Reg, FI, RC, Register(), 0,
+                               MachineInstr::FrameDestroy);
+    }
+    return true;
+  }
+
+  bool HasFP = hasFP(MF);
+  CFIInstBuilder CFI(MBB, MI, MachineInstr::FrameDestroy);
+  int64_t CFAOffset = CSI.size() * 4;
+
+  const CalleeSavedInfo *FirstCSI = CSI.empty() ? nullptr : &CSI.front();
+  for (const CalleeSavedInfo &Info : llvm::reverse(CSI)) {
+    unsigned Reg = Info.getReg();
+
+    if (Reg == EZH::RA && &Info == FirstCSI && MI != MBB.end() &&
+        MI->isReturn()) {
+      // Pop directly into PC to return in a single instruction!
+      MachineInstrBuilder MIB =
+          BuildMI(MBB, MI, DL, TII.get(EZH::LDR_POST), EZH::PC)
+              .addReg(EZH::SP, RegState::Define)
+              .addReg(EZH::SP)
+              .addImm(4)
+              .setMIFlag(MachineInstr::FrameDestroy);
+
+      // Propagate all return registers (R0/R1) from RET to preserve liveness!
+      for (const MachineOperand &MO : MI->operands()) {
+        if (MO.isReg() && MO.isUse()) {
+          MIB.addReg(MO.getReg(), RegState::Implicit);
+        }
+      }
+
+      // Erase the redundant return terminator (e_goto ra)
+      MBB.erase(MI);
+      return true;
+    }
+
+    // Add instruction to pop register (LDR_POST with +4 offset)
+    BuildMI(MBB, MI, DL, TII.get(EZH::LDR_POST), Reg)
+        .addReg(EZH::SP, RegState::Define)
+        .addReg(EZH::SP)
+        .addImm(4)
+        .setMIFlag(MachineInstr::FrameDestroy);
+
+    if (!HasFP) {
+      CFAOffset -= 4;
+      CFI.buildDefCFAOffset(CFAOffset);
+    }
+    CFI.buildRestore(Reg);
+  }
+  return true;
+}
+void EZHFrameLowering::emitPrologue(MachineFunction &MF,
+                                    MachineBasicBlock &MBB) const {
+  MachineFrameInfo &MFI = MF.getFrameInfo();
+  const EZHInstrInfo &TII = *STI.getInstrInfo();
+  MachineBasicBlock::iterator MBBI = MBB.begin();
+  DebugLoc DL;
+
+  // Skip any CSR PUSH instructions already inserted
+  while (MBBI != MBB.end() && MBBI->getFlag(MachineInstr::FrameSetup) &&
+         (MBBI->getOpcode() == EZH::STR_PRE ||
+          MBBI->getOpcode() == TargetOpcode::CFI_INSTRUCTION)) {
+    ++MBBI;
+  }
+
+  const std::vector<CalleeSavedInfo> &CSI = MFI.getCalleeSavedInfo();
+  unsigned CSRSize = CSI.size() * 4;
+
+  CFIInstBuilder CFI(MBB, MBBI, MachineInstr::FrameSetup);
+  int64_t CFAOffset = CSRSize;
+
+  EZHMachineFunctionInfo *FuncInfo = MF.getInfo<EZHMachineFunctionInfo>();
+  unsigned VarArgsSaveSize = FuncInfo->getVarArgsSaveSize();
+
+  if (hasFP(MF)) {
+    int FPOffset = -4;
+    if (MF.getFunction().isVarArg()) {
+      FPOffset = -static_cast<int>(VarArgsSaveSize) - 4;
+    }
+    BuildMI(MBB, MBBI, DL, TII.get(EZH::STR_PRE), EZH::SP)
+        .addReg(EZH::R7, RegState::Kill)
+        .addReg(EZH::SP)
+        .addImm(FPOffset)
+        .setMIFlag(MachineInstr::FrameSetup);
+
+    CFAOffset -= FPOffset; // FPOffset is negative
+    CFI.buildDefCFAOffset(CFAOffset);
+    CFI.buildOffset(EZH::R7, -CFAOffset);
+
+    BuildMI(MBB, MBBI, DL, TII.get(EZH::MOVrr__), EZH::R7)
+        .addReg(EZH::SP)
+        .setMIFlag(MachineInstr::FrameSetup);
+
+    CFI.buildDefCFARegister(EZH::R7);
+
+    CSRSize -= FPOffset;
+  }
+
+  unsigned StackSize = MFI.getStackSize();
+
+  // For VarArgs, CSRSize is part of the unified stack allocation.
+  // For standard functions, CSRSize is handled dynamically by pushes.
+  unsigned LocalSize = StackSize;
+  if (MF.getFunction().isVarArg()) {
+    if (hasFP(MF)) {
+      LocalSize = StackSize - VarArgsSaveSize;
+    } else {
+      LocalSize = StackSize;
+    }
+  } else {
+    LocalSize = StackSize - CSRSize;
+  }
+
+  if (LocalSize == 0)
+    return;
+
+  // Allocate stack in chunks of 2040 bytes (word-aligned) to support large
+  // frames > 2047
+  unsigned AllocAmt = 2040;
+  while (LocalSize > 0) {
+    unsigned Chunk = std::min(LocalSize, AllocAmt);
+    BuildMI(MBB, MBBI, DL, TII.get(EZH::SUBri__), EZH::SP)
+        .addReg(EZH::SP)
+        .addImm(Chunk)
+        .setMIFlag(MachineInstr::FrameSetup);
+
+    if (!hasFP(MF)) {
+      CFAOffset += Chunk;
+      CFI.buildDefCFAOffset(CFAOffset);
+    }
+
+    LocalSize -= Chunk;
+  }
+
+  const EZHRegisterInfo *RegInfo =
+      static_cast<const EZHRegisterInfo *>(STI.getRegisterInfo());
+  if (RegInfo->hasStackRealignment(MF)) {
+    Align MaxAlign = MFI.getMaxAlign();
+    int64_t Mask = -static_cast<int64_t>(MaxAlign.value());
+    BuildMI(MBB, MBBI, DL, TII.get(EZH::ANDri__), EZH::SP)
+        .addReg(EZH::SP)
+        .addImm(Mask)
+        .setMIFlag(MachineInstr::FrameSetup);
+  }
+
+  if (RegInfo->hasBasePointer(MF)) {
+    BuildMI(MBB, MBBI, DL, TII.get(EZH::MOVrr__), EZH::R6)
+        .addReg(EZH::SP)
+        .setMIFlag(MachineInstr::FrameSetup);
+  }
+}
+
+void EZHFrameLowering::emitEpilogue(MachineFunction &MF,
+                                    MachineBasicBlock &MBB) const {
+  MachineFrameInfo &MFI = MF.getFrameInfo();
+  const EZHInstrInfo &TII = *STI.getInstrInfo();
+  MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr();
+  DebugLoc DL;
+
+  if (MBBI != MBB.end())
+    DL = MBBI->getDebugLoc();
+
+  const std::vector<CalleeSavedInfo> &CSI = MFI.getCalleeSavedInfo();
+  unsigned CSRSize = CSI.size() * 4;
+
+  if (hasFP(MF)) {
+    CSRSize += 4;
+  }
+
+  EZHMachineFunctionInfo *FuncInfo = MF.getInfo<EZHMachineFunctionInfo>();
+  unsigned VarArgsSaveSize = FuncInfo->getVarArgsSaveSize();
+
+  unsigned StackSize = MFI.getStackSize();
+  unsigned LocalSize = StackSize;
+  if (MF.getFunction().isVarArg()) {
+    if (hasFP(MF)) {
+      LocalSize = StackSize - VarArgsSaveSize;
+    } else {
+      LocalSize = StackSize;
+    }
+  } else {
+    LocalSize = StackSize - CSRSize;
+  }
+
+  // Find the place before the POP instructions
+  MachineBasicBlock::iterator InsertPt = MBB.getFirstTerminator();
+  while (InsertPt != MBB.begin()) {
+    MachineBasicBlock::iterator Prev = std::prev(InsertPt);
+    if (Prev->getOpcode() == TargetOpcode::CFI_INSTRUCTION) {
+      InsertPt = Prev;
+      continue;
+    }
+    if (Prev->getOpcode() != EZH::LDR_POST)
+      break;
+    InsertPt = Prev;
+  }
+
+  if (hasFP(MF)) {
+    BuildMI(MBB, InsertPt, DL, TII.get(EZH::MOVrr__), EZH::SP)
+        .addReg(EZH::R7)
+        .setMIFlag(MachineInstr::FrameDestroy);
+
+    int FPOffset = 4;
+    if (MF.getFunction().isVarArg()) {
+      FPOffset = VarArgsSaveSize + 4;
+    }
+    BuildMI(MBB, InsertPt, DL, TII.get(EZH::LDR_POST), EZH::R7)
+        .addReg(EZH::SP, RegState::Define)
+        .addReg(EZH::SP)
+        .addImm(FPOffset)
+        .setMIFlag(MachineInstr::FrameDestroy);
+  } else if (LocalSize > 0) {
+    CFIInstBuilder CFI(MBB, InsertPt, MachineInstr::FrameDestroy);
+    int64_t CFAOffset = StackSize;
+    unsigned DeallocAmt = 2040;
+    while (LocalSize > 0) {
+      unsigned Chunk = std::min(LocalSize, DeallocAmt);
+      BuildMI(MBB, InsertPt, DL, TII.get(EZH::ADDri__), EZH::SP)
+          .addReg(EZH::SP)
+          .addImm(Chunk)
+          .setMIFlag(MachineInstr::FrameDestroy);
+
+      CFAOffset -= Chunk;
+      CFI.buildDefCFAOffset(CFAOffset);
+
+      LocalSize -= Chunk;
+    }
+  }
+}
+bool EZHFrameLowering::hasReservedCallFrame(const MachineFunction &MF) const {
+  return false;
+}
+
+static void emitLoad32BitImm(MachineBasicBlock &MBB,
+                             MachineBasicBlock::iterator I, const DebugLoc &dl,
+                             const TargetInstrInfo &TII, Register Reg,
+                             int64_t Val) {
+  uint16_t Chunks[4];
+  Chunks[0] = (Val >> 30) & 0x3;
+  Chunks[1] = (Val >> 20) & 0x3FF;
+  Chunks[2] = (Val >> 10) & 0x3FF;
+  Chunks[3] = Val & 0x3FF;
+
+  unsigned PendingShift = 0;
+
+  for (unsigned ChunkIdx = 0; ChunkIdx < 4; ++ChunkIdx) {
+    uint16_t Chunk = Chunks[ChunkIdx];
+    bool ZeroImm = (Chunk == 0);
+    unsigned Op = PendingShift ? EZH::ADDri__ : EZH::MOVri__;
+
+    if (PendingShift && (!ZeroImm || ChunkIdx == 3)) {
+      BuildMI(MBB, I, dl, TII.get(EZH::LSLi__), Reg)
+          .addReg(Reg)
+          .addImm(PendingShift);
+      PendingShift = 0;
+    }
+
+    if (!ZeroImm) {
+      if (Op == EZH::MOVri__) {
+        BuildMI(MBB, I, dl, TII.get(Op), Reg).addImm(Chunk);
+      } else {
+        BuildMI(MBB, I, dl, TII.get(Op), Reg).addReg(Reg).addImm(Chunk);
+      }
+    }
+
+    if (PendingShift || !ZeroImm)
+      PendingShift += 10;
+  }
+}
+
+MachineBasicBlock::iterator EZHFrameLowering::eliminateCallFramePseudoInstr(
+    MachineFunction &MF, MachineBasicBlock &MBB,
+    MachineBasicBlock::iterator I) const {
+  const EZHInstrInfo &TII =
+      *static_cast<const EZHInstrInfo *>(STI.getInstrInfo());
+  if (!hasReservedCallFrame(MF)) {
+    MachineInstr &Old = *I;
+    DebugLoc dl = Old.getDebugLoc();
+    unsigned Amount = Old.getOperand(0).getImm();
+    if (Amount != 0) {
+      Amount = alignTo(Amount, getStackAlign());
+      unsigned Opc = Old.getOpcode();
+
+      if (Amount <= 2047) {
+        if (Opc == EZH::ADJCALLSTACKDOWN) {
+          BuildMI(MBB, I, dl, TII.get(EZH::SUBri__), EZH::SP)
+              .addReg(EZH::SP)
+              .addImm(Amount);
+        } else {
+          assert(Opc == EZH::ADJCALLSTACKUP && "Unexpected opcode!");
+          BuildMI(MBB, I, dl, TII.get(EZH::ADDri__), EZH::SP)
+              .addReg(EZH::SP)
+              .addImm(Amount);
+        }
+      } else {
+        if (Opc == EZH::ADJCALLSTACKDOWN) {
+          emitLoad32BitImm(MBB, I, dl, TII, EZH::RA, Amount);
+          BuildMI(MBB, I, dl, TII.get(EZH::SUBrr__), EZH::SP)
+              .addReg(EZH::SP)
+              .addReg(EZH::RA);
+        } else {
+          assert(Opc == EZH::ADJCALLSTACKUP && "Unexpected opcode!");
+          emitLoad32BitImm(MBB, I, dl, TII, EZH::RA, Amount);
+          BuildMI(MBB, I, dl, TII.get(EZH::ADDrr__), EZH::SP)
+              .addReg(EZH::SP)
+              .addReg(EZH::RA);
+        }
+      }
+    }
+  }
+  return MBB.erase(I);
+}
+
+bool EZHFrameLowering::hasFPImpl(const MachineFunction &MF) const {
+  const MachineFrameInfo &MFI = MF.getFrameInfo();
+  const EZHRegisterInfo *RegInfo =
+      static_cast<const EZHRegisterInfo *>(STI.getRegisterInfo());
+  return MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken() ||
+         RegInfo->hasStackRealignment(MF);
+}
+
+bool EZHFrameLowering::assignCalleeSavedSpillSlots(
+    MachineFunction &MF, const TargetRegisterInfo *TRI,
+    std::vector<CalleeSavedInfo> &CSI) const {
+  if (CSI.empty())
+    return true;
+
+  MachineFrameInfo &MFI = MF.getFrameInfo();
+  EZHMachineFunctionInfo *FuncInfo = MF.getInfo<EZHMachineFunctionInfo>();
+  const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
+
+  unsigned VarArgsSaveSize = FuncInfo->getVarArgsSaveSize();
+  unsigned CSRSize = CSI.size() * 4;
+
+  MFI.setStackSize(MFI.getStackSize() + CSRSize + VarArgsSaveSize);
+
+  int64_t Offset = -static_cast<int64_t>(VarArgsSaveSize);
+  if (hasFP(MF))
+    Offset -= 4;
+
+  for (auto &CS : CSI) {
+    MCRegister Reg = CS.getReg();
+    const TargetRegisterClass *RC = RegInfo->getMinimalPhysRegClass(Reg);
+    unsigned Size = RegInfo->getSpillSize(*RC);
+
+    Offset -= Size;
+
+    int FrameIdx = MFI.CreateFixedSpillStackObject(Size, Offset);
+    assert(FrameIdx < 0 && "Fixed stack object must have negative index!");
+    CS.setFrameIdx(FrameIdx);
+  }
+
+  return true;
+}
+
+void EZHFrameLowering::determineCalleeSaves(MachineFunction &MF,
+                                            BitVector &SavedRegs,
+                                            RegScavenger *RS) const {
+  TargetFrameLowering::determineCalleeSaves(MF, SavedRegs, RS);
+
+  if (STI.hasBitSliceInterrupts() || MF.getFrameInfo().hasCalls()) {
+    SavedRegs.set(EZH::RA);
+  }
+
+  const EZHRegisterInfo *RegInfo =
+      static_cast<const EZHRegisterInfo *>(STI.getRegisterInfo());
+  if (RegInfo->hasBasePointer(MF)) {
+    SavedRegs.set(RegInfo->getBaseRegister());
+  }
+
+  MachineFrameInfo &MFI = MF.getFrameInfo();
+  if (RS) {
+    const TargetRegisterClass &RC = EZH::GPRRegClass;
+    unsigned Size = STI.getRegisterInfo()->getSpillSize(RC);
+    Align Alignment = STI.getRegisterInfo()->getSpillAlign(RC);
+
+    int FI = MFI.CreateSpillStackObject(Size, Alignment);
+    RS->addScavengingFrameIndex(FI);
+  }
+}
+
+void EZHFrameLowering::processFunctionBeforeFrameFinalized(
+    MachineFunction &MF, RegScavenger *RS) const {
+  MachineFrameInfo &MFI = MF.getFrameInfo();
+  for (int i = 0, e = MFI.getObjectIndexEnd(); i != e; ++i) {
+    if (MFI.isDeadObjectIndex(i))
+      continue;
+    Align Alignment = MFI.getObjectAlign(i);
+    if (Alignment < Align(4)) {
+      MFI.setObjectAlignment(i, Align(4));
+    }
+  }
+}
diff --git a/llvm/lib/Target/EZH/EZHFrameLowering.h b/llvm/lib/Target/EZH/EZHFrameLowering.h
new file mode 100644
index 0000000000000..f35c650f9fa70
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHFrameLowering.h
@@ -0,0 +1,70 @@
+//===-- EZHFrameLowering.h - Define frame lowering for EZH --*- C++-*--===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHFRAMELOWERING_H
+#define LLVM_LIB_TARGET_EZH_EZHFRAMELOWERING_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/CodeGen/TargetFrameLowering.h"
+#include <vector>
+
+namespace llvm {
+
+class BitVector;
+class EZHSubtarget;
+
+/// EZH Frame Lowering Information.
+class EZHFrameLowering : public TargetFrameLowering {
+protected:
+  const EZHSubtarget &STI;
+
+public:
+  explicit EZHFrameLowering(const EZHSubtarget &Subtarget)
+      : TargetFrameLowering(TargetFrameLowering::StackGrowsDown,
+                            /*StackAlignment=*/Align(4),
+                            /*LocalAreaOffset=*/0),
+        STI(Subtarget) {}
+
+  bool hasReservedCallFrame(const MachineFunction &MF) const override;
+
+  void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
+  void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
+
+  bool spillCalleeSavedRegisters(MachineBasicBlock &MBB,
+                                 MachineBasicBlock::iterator MI,
+                                 ArrayRef<CalleeSavedInfo> CSI,
+                                 const TargetRegisterInfo *TRI) const override;
+
+  bool
+  restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
+                              MachineBasicBlock::iterator MI,
+                              MutableArrayRef<CalleeSavedInfo> CSI,
+                              const TargetRegisterInfo *TRI) const override;
+
+  MachineBasicBlock::iterator
+  eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
+                                MachineBasicBlock::iterator I) const override;
+
+  bool
+  assignCalleeSavedSpillSlots(MachineFunction &MF,
+                              const TargetRegisterInfo *TRI,
+                              std::vector<CalleeSavedInfo> &CSI) const override;
+
+  void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,
+                            RegScavenger *RS = nullptr) const override;
+
+  void processFunctionBeforeFrameFinalized(
+      MachineFunction &MF, RegScavenger *RS = nullptr) const override;
+
+protected:
+  bool hasFPImpl(const MachineFunction &MF) const override;
+};
+
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHFRAMELOWERING_H
diff --git a/llvm/lib/Target/EZH/EZHISelDAGToDAG.cpp b/llvm/lib/Target/EZH/EZHISelDAGToDAG.cpp
new file mode 100644
index 0000000000000..748b1a42bf91a
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHISelDAGToDAG.cpp
@@ -0,0 +1,277 @@
+//===-- EZHISelDAGToDAG.cpp - A dag to dag inst selector for EZH ------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHTargetMachine.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/CodeGen/MachineConstantPool.h"
+#include "llvm/CodeGen/MachineFrameInfo.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/SelectionDAGISel.h"
+#include "llvm/IR/Constants.h"
+#include "llvm/IR/Type.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+#define DEBUG_TYPE "ezh-isel"
+#define PASS_NAME "EZH DAG->DAG Pattern Instruction Selection"
+
+namespace {
+
+class EZHDAGToDAGISel : public SelectionDAGISel {
+public:
+  EZHDAGToDAGISel() = delete;
+
+  explicit EZHDAGToDAGISel(EZHTargetMachine &TargetMachine)
+      : SelectionDAGISel(TargetMachine) {}
+
+private:
+#include "EZHGenDAGISel.inc"
+
+  void Select(SDNode *N) override;
+  bool SelectInlineAsmMemoryOperand(const SDValue &Op,
+                                    InlineAsm::ConstraintCode ConstraintID,
+                                    std::vector<SDValue> &OutOps) override;
+  void selectFrameIndex(SDNode *N);
+  bool tryIndexedLoadStore(SDNode *Node);
+};
+
+class EZHDAGToDAGISelLegacy : public SelectionDAGISelLegacy {
+public:
+  static char ID;
+  explicit EZHDAGToDAGISelLegacy(EZHTargetMachine &TM)
+      : SelectionDAGISelLegacy(ID, std::make_unique<EZHDAGToDAGISel>(TM)) {}
+};
+
+} // namespace
+
+char EZHDAGToDAGISelLegacy::ID = 0;
+
+INITIALIZE_PASS(EZHDAGToDAGISelLegacy, DEBUG_TYPE, PASS_NAME, false, false)
+
+bool EZHDAGToDAGISel::tryIndexedLoadStore(SDNode *Node) {
+  unsigned Opcode = Node->getOpcode();
+  bool IsLoad = (Opcode == ISD::LOAD);
+  ISD::MemIndexedMode AM;
+  SDValue Base, Offset;
+
+  if (IsLoad) {
+    LoadSDNode *LD = cast<LoadSDNode>(Node);
+    AM = LD->getAddressingMode();
+    Base = LD->getBasePtr();
+    Offset = LD->getOffset();
+  } else {
+    StoreSDNode *ST = cast<StoreSDNode>(Node);
+    AM = ST->getAddressingMode();
+    Base = ST->getBasePtr();
+    Offset = ST->getOffset();
+  }
+
+  if (AM != ISD::POST_INC && AM != ISD::PRE_INC && AM != ISD::POST_DEC &&
+      AM != ISD::PRE_DEC)
+    return false;
+
+  MemSDNode *MemNode = cast<MemSDNode>(Node);
+  SDLoc DL(Node);
+  EVT MemVT = MemNode->getMemoryVT();
+
+  auto *C = dyn_cast<ConstantSDNode>(Offset);
+  if (!C)
+    return false;
+  int64_t OffImm = C->getSExtValue();
+  if (AM == ISD::POST_DEC || AM == ISD::PRE_DEC) {
+    OffImm = -OffImm;
+  }
+
+  unsigned TargetOpcode = 0;
+
+  if (MemVT == MVT::i32) {
+    if ((OffImm & 3) != 0 || OffImm < -512 || OffImm > 508)
+      return false;
+    if (IsLoad) {
+      TargetOpcode = (AM == ISD::POST_INC || AM == ISD::POST_DEC)
+                         ? EZH::LDR_POST
+                         : EZH::LDR_PRE;
+    } else {
+      TargetOpcode = (AM == ISD::POST_INC || AM == ISD::POST_DEC)
+                         ? EZH::STR_POST
+                         : EZH::STR_PRE;
+    }
+  } else if (MemVT == MVT::i8) {
+    if (OffImm < -128 || OffImm > 255)
+      return false;
+    if (IsLoad) {
+      if (cast<LoadSDNode>(Node)->getExtensionType() == ISD::SEXTLOAD) {
+        TargetOpcode = (AM == ISD::POST_INC || AM == ISD::POST_DEC)
+                           ? EZH::LDRBS_POST
+                           : EZH::LDRBS_PRE;
+      } else {
+        TargetOpcode = (AM == ISD::POST_INC || AM == ISD::POST_DEC)
+                           ? EZH::LDRB_POST
+                           : EZH::LDRB_PRE;
+      }
+    } else {
+      TargetOpcode = (AM == ISD::POST_INC || AM == ISD::POST_DEC)
+                         ? EZH::STRB_POST
+                         : EZH::STRB_PRE;
+    }
+  } else {
+    return false; // i16 is not supported
+  }
+
+  SDValue TargetImm =
+      CurDAG->getTargetConstant(static_cast<uint32_t>(OffImm), DL, MVT::i32);
+
+  if (IsLoad) {
+    SDValue Ops[] = {Base, TargetImm, MemNode->getChain()};
+    SDNode *ResNode = CurDAG->getMachineNode(
+        TargetOpcode, DL, CurDAG->getVTList(MVT::i32, MVT::i32, MVT::Other),
+        Ops);
+    ReplaceUses(SDValue(Node, 0), SDValue(ResNode, 0)); // Value
+    ReplaceUses(SDValue(Node, 1), SDValue(ResNode, 1)); // New Ptr
+    ReplaceUses(SDValue(Node, 2), SDValue(ResNode, 2)); // Chain
+    CurDAG->RemoveDeadNode(Node);
+  } else {
+    SDValue Val = cast<StoreSDNode>(Node)->getValue();
+    SDValue Ops[] = {Val, Base, TargetImm, MemNode->getChain()};
+    SDNode *ResNode = CurDAG->getMachineNode(
+        TargetOpcode, DL, CurDAG->getVTList(MVT::i32, MVT::Other), Ops);
+    ReplaceUses(SDValue(Node, 0), SDValue(ResNode, 0)); // New Ptr
+    ReplaceUses(SDValue(Node, 1), SDValue(ResNode, 1)); // Chain
+    CurDAG->RemoveDeadNode(Node);
+  }
+
+  return true;
+}
+
+void EZHDAGToDAGISel::Select(SDNode *Node) {
+  if (Node->isMachineOpcode()) {
+    Node->setNodeId(-1);
+    return;
+  }
+
+  if (Node->getOpcode() == ISD::CTLZ ||
+      Node->getOpcode() == ISD::CTLZ_ZERO_POISON) {
+    SDLoc dl(Node);
+    SDValue Src = Node->getOperand(0);
+
+    const TargetLowering &TLI = CurDAG->getTargetLoweringInfo();
+
+    // Select appropriate CLZ library helper based on operand size
+    EVT VT = Src.getValueType();
+    const char *LibcallName = (VT == MVT::i64) ? "__clzdi2" : "__clzsi2";
+    SDValue Callee = CurDAG->getExternalSymbol(
+        LibcallName, TLI.getPointerTy(CurDAG->getDataLayout()));
+
+    SDValue Chain = CurDAG->getEntryNode();
+    SDValue InGlue;
+
+    if (VT == MVT::i64) {
+      // Explicitly generate EXTRACT_SUBREG nodes to let register allocator
+      // handle virtual registers correctly!
+      SDValue SrcLo =
+          CurDAG->getNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::i32, Src,
+                          CurDAG->getTargetConstant(sub_even, dl, MVT::i32));
+      SDValue SrcHi =
+          CurDAG->getNode(TargetOpcode::EXTRACT_SUBREG, dl, MVT::i32, Src,
+                          CurDAG->getTargetConstant(sub_odd, dl, MVT::i32));
+
+      Chain = CurDAG->getCopyToReg(Chain, dl, EZH::R0, SrcLo, InGlue);
+      InGlue = Chain.getValue(1);
+      Chain = CurDAG->getCopyToReg(Chain, dl, EZH::R1, SrcHi, InGlue);
+      InGlue = Chain.getValue(1);
+    } else {
+      Chain = CurDAG->getCopyToReg(Chain, dl, EZH::R0, Src, InGlue);
+      InGlue = Chain.getValue(1);
+    }
+
+    SmallVector<SDValue, 8> Ops;
+    Ops.push_back(Callee);
+    Ops.push_back(CurDAG->getRegister(EZH::R0, MVT::i32));
+    if (VT == MVT::i64) {
+      Ops.push_back(CurDAG->getRegister(EZH::R1, MVT::i32));
+    }
+    Ops.push_back(Chain);
+    Ops.push_back(InGlue);
+
+    SDVTList NodeTys = CurDAG->getVTList(MVT::Other, MVT::Glue);
+    SDNode *CallNode = CurDAG->getMachineNode(EZH::CALLExt, dl, NodeTys, Ops);
+
+    Chain = SDValue(CallNode, 0);
+    InGlue = SDValue(CallNode, 1);
+
+    SDValue Result =
+        CurDAG->getCopyFromReg(Chain, dl, EZH::R0, MVT::i32, InGlue);
+
+    ReplaceNode(Node, Result.getNode());
+    return;
+  }
+
+  unsigned Opcode = Node->getOpcode();
+
+  switch (Opcode) {
+  case ISD::Constant: {
+    auto *C = cast<ConstantSDNode>(Node);
+    int64_t Val = C->getSExtValue();
+    if (!isInt<11>(Val)) {
+      SDLoc DL(Node);
+      SDValue CPIdx = CurDAG->getTargetConstantPool(
+          ConstantInt::get(Type::getInt32Ty(*CurDAG->getContext()), Val),
+          TLI->getPointerTy(CurDAG->getDataLayout()));
+
+      SDValue Ops[] = {CPIdx, CurDAG->getEntryNode()};
+      SDNode *ResNode = CurDAG->getMachineNode(EZH::LOAD_CONSTANT, DL, MVT::i32,
+                                               MVT::Other, Ops);
+
+      ReplaceUses(SDValue(Node, 0), SDValue(ResNode, 0));
+      CurDAG->RemoveDeadNode(Node);
+      return;
+    }
+    break;
+  }
+  case ISD::FrameIndex:
+    selectFrameIndex(Node);
+    return;
+  case ISD::LOAD:
+  case ISD::STORE:
+    if (tryIndexedLoadStore(Node))
+      return;
+    break;
+  default:
+    break;
+  }
+
+  SelectCode(Node);
+}
+
+void EZHDAGToDAGISel::selectFrameIndex(SDNode *Node) {
+  SDLoc DL(Node);
+  SDValue Imm = CurDAG->getTargetConstant(0, DL, MVT::i32);
+  int FI = cast<FrameIndexSDNode>(Node)->getIndex();
+  EVT VT = Node->getValueType(0);
+  SDValue TFI = CurDAG->getTargetFrameIndex(FI, VT);
+  unsigned Opc = EZH::ADDri__;
+  if (Node->hasOneUse()) {
+    CurDAG->SelectNodeTo(Node, Opc, VT, TFI, Imm);
+    return;
+  }
+  ReplaceNode(Node, CurDAG->getMachineNode(Opc, DL, VT, TFI, Imm));
+}
+
+FunctionPass *llvm::createEZHISelDag(EZHTargetMachine &TM) {
+  return new EZHDAGToDAGISelLegacy(TM);
+}
+
+bool EZHDAGToDAGISel::SelectInlineAsmMemoryOperand(
+    const SDValue &Op, InlineAsm::ConstraintCode ConstraintID,
+    std::vector<SDValue> &OutOps) {
+  OutOps.push_back(Op);
+  return false;
+}
diff --git a/llvm/lib/Target/EZH/EZHISelLowering.cpp b/llvm/lib/Target/EZH/EZHISelLowering.cpp
new file mode 100644
index 0000000000000..d5eec61b8af49
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHISelLowering.cpp
@@ -0,0 +1,1862 @@
+//===-- EZHISelLowering.cpp - EZH DAG Lowering Implementation ---------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHISelLowering.h"
+#include "EZHCondCode.h"
+#include "EZHConstantPoolValue.h"
+#include "EZHMachineFunctionInfo.h"
+#include "EZHSubtarget.h"
+#include "EZHTargetObjectFile.h"
+#include "MCTargetDesc/EZHBaseInfo.h"
+#include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/CodeGen/CallingConvLower.h"
+#include "llvm/CodeGen/MachineFrameInfo.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineJumpTableInfo.h"
+#include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/CodeGen/SelectionDAG.h"
+#include "llvm/CodeGen/TargetCallingConv.h"
+#include "llvm/IR/Constants.h"
+#include "llvm/IR/Module.h"
+#include "llvm/IR/Type.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/Support/ErrorHandling.h"
+
+#define GET_SDNODE_DESC
+#include "EZHGenSDNodeInfo.inc"
+#undef GET_SDNODE_DESC
+
+using namespace llvm;
+
+#define DEBUG_TYPE "ezh-lower"
+
+EZHTargetLowering::EZHTargetLowering(const TargetMachine &TM,
+                                     const EZHSubtarget &STI)
+    : TargetLowering(TM, STI) {
+  addRegisterClass(MVT::i32, &EZH::GPRRegClass);
+  computeRegisterProperties(STI.getRegisterInfo());
+
+  setOperationAction(ISD::LOAD, MVT::i64, Expand);
+  setOperationAction(ISD::STORE, MVT::i64, Expand);
+
+  setOperationAction(ISD::CTLZ, MVT::i32, Custom);
+  setOperationAction(ISD::CTLZ, MVT::i16, Custom);
+  setOperationAction(ISD::CTLZ, MVT::i8, Custom);
+  setOperationAction(ISD::CTLZ_ZERO_POISON, MVT::i32, Custom);
+  setOperationAction(ISD::CTLZ_ZERO_POISON, MVT::i16, Custom);
+  setOperationAction(ISD::CTLZ_ZERO_POISON, MVT::i8, Custom);
+
+  setStackPointerRegisterToSaveRestore(EZH::SP);
+
+  setOperationAction(ISD::Constant, MVT::i32, Custom);
+  setOperationAction(ISD::GlobalAddress, MVT::i32, Custom);
+  setOperationAction(ISD::GlobalTLSAddress, MVT::i32, Custom);
+  setOperationAction(ISD::ExternalSymbol, MVT::i32, Custom);
+  setOperationAction(ISD::BlockAddress, MVT::i32, Custom);
+  setOperationAction(ISD::ConstantPool, MVT::i32, Custom);
+  setOperationAction(ISD::BR_CC, MVT::i32, Custom);
+
+  setOperationAction(ISD::STACKSAVE, MVT::Other, Expand);
+  setOperationAction(ISD::STACKRESTORE, MVT::Other, Expand);
+  setOperationAction(ISD::FRAMEADDR, MVT::i32, Custom);
+  setOperationAction(ISD::EH_SJLJ_SETJMP, MVT::i32, Custom);
+  setOperationAction(ISD::EH_SJLJ_LONGJMP, MVT::Other, Custom);
+  setOperationAction(ISD::EH_SJLJ_SETUP_DISPATCH, MVT::Other, Custom);
+  setOperationAction(ISD::JumpTable, MVT::i32, Custom);
+  setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::Other, Custom);
+
+  setOperationAction(ISD::BR_JT, MVT::Other, Custom);
+  setOperationAction(ISD::BlockAddress, MVT::i32, Custom);
+
+  setOperationAction(ISD::BR_CC, MVT::Other, Custom);
+  setOperationAction(ISD::SELECT_CC, MVT::i32, Custom);
+
+  setOperationAction(ISD::SELECT, MVT::i32, Expand);
+  setOperationAction(ISD::BSWAP, MVT::i32, Legal);
+  setOperationAction(ISD::BITREVERSE, MVT::i32, Legal);
+
+  // Atomics
+  setOperationAction(ISD::ATOMIC_LOAD, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_STORE, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_STORE, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_STORE, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_CMP_SWAP, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_CMP_SWAP, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_CMP_SWAP, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_SWAP, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_SWAP, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_SWAP, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_ADD, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_ADD, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_ADD, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_SUB, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_SUB, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_SUB, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_AND, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_AND, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_AND, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_OR, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_OR, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_OR, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_XOR, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_XOR, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_XOR, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_NAND, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_NAND, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_NAND, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_MIN, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_MIN, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_MIN, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_MAX, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_MAX, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_MAX, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_UMIN, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_UMIN, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_UMIN, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_UMAX, MVT::i8, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_UMAX, MVT::i16, Expand);
+  setOperationAction(ISD::ATOMIC_LOAD_UMAX, MVT::i32, Expand);
+  setOperationAction(ISD::ATOMIC_FENCE, MVT::Other, Expand);
+
+  setOperationAction(ISD::SETCC, MVT::i32, Expand);
+  setOperationAction(ISD::BRCOND, MVT::Other, Expand);
+
+  setOperationAction(ISD::MUL, MVT::i32, LibCall);
+  setOperationAction(ISD::SMUL_LOHI, MVT::i32, Expand);
+  setOperationAction(ISD::UMUL_LOHI, MVT::i32, Expand);
+  setOperationAction(ISD::MULHS, MVT::i32, Expand);
+  setOperationAction(ISD::MULHU, MVT::i32, Expand);
+  setOperationAction(ISD::SDIV, MVT::i32, LibCall);
+  setOperationAction(ISD::UDIV, MVT::i32, LibCall);
+  setOperationAction(ISD::SREM, MVT::i32, LibCall);
+  setOperationAction(ISD::UREM, MVT::i32, LibCall);
+  setOperationAction(ISD::SDIVREM, MVT::i32, Expand);
+  setOperationAction(ISD::UDIVREM, MVT::i32, Expand);
+
+  setOperationAction(ISD::SHL, MVT::i32, Custom);
+  setOperationAction(ISD::SRL, MVT::i32, Custom);
+  setOperationAction(ISD::SRA, MVT::i32, Custom);
+  setOperationAction(ISD::ROTL, MVT::i32, Expand);
+  setOperationAction(ISD::ROTR, MVT::i32, Legal);
+
+  setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i1, Expand);
+  setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i8, Expand);
+  setOperationAction(ISD::SIGN_EXTEND_INREG, MVT::i16, Expand);
+
+  setOperationAction(ISD::CTLZ, MVT::i64, Expand);
+  setOperationAction(ISD::CTLZ_ZERO_POISON, MVT::i64, Expand);
+  setOperationAction(ISD::CTTZ, MVT::i32, Expand);
+  setOperationAction(ISD::CTTZ_ZERO_POISON, MVT::i32, Expand);
+  setOperationAction(ISD::CTPOP, MVT::i32, LibCall);
+
+  // Mirror ARM soft-float architecture exactly!
+  // We recursively register all basic float and double mathematical and casting
+  // operations as strictly 'Expand' for both MVT::f32 and MVT::f64 to ensure
+  // 100% EABI soft-float parity.
+  for (auto VT : {MVT::f32, MVT::f64}) {
+    setOperationAction(ISD::SINT_TO_FP, VT, Expand);
+    setOperationAction(ISD::UINT_TO_FP, VT, Expand);
+    setOperationAction(ISD::FP_TO_SINT, VT, Expand);
+    setOperationAction(ISD::FP_TO_UINT, VT, Expand);
+
+    setOperationAction(ISD::FADD, VT, Expand);
+    setOperationAction(ISD::FSUB, VT, Expand);
+    setOperationAction(ISD::FMUL, VT, Expand);
+    setOperationAction(ISD::FDIV, VT, Expand);
+    setOperationAction(ISD::FREM, VT, Expand);
+    setOperationAction(ISD::FCOPYSIGN, VT, Expand);
+    setOperationAction(ISD::FNEG, VT, Expand);
+    setOperationAction(ISD::FMA, VT, Expand);
+    setOperationAction(ISD::FSQRT, VT, Expand);
+    setOperationAction(ISD::FPOW, VT, Expand);
+    setOperationAction(ISD::FPOWI, VT, Expand);
+    setOperationAction(ISD::FSIN, VT, Expand);
+    setOperationAction(ISD::FCOS, VT, Expand);
+    setOperationAction(ISD::FLOG, VT, Expand);
+    setOperationAction(ISD::FLOG2, VT, Expand);
+    setOperationAction(ISD::FLOG10, VT, Expand);
+    setOperationAction(ISD::FEXP, VT, Expand);
+    setOperationAction(ISD::FEXP2, VT, Expand);
+  }
+
+  setLibcallImpl(RTLIB::SDIV_I32, RTLIB::impl___divsi3);
+  setLibcallImpl(RTLIB::UDIV_I32, RTLIB::impl___udivsi3);
+  setLibcallImpl(RTLIB::SREM_I32, RTLIB::impl___modsi3);
+  setLibcallImpl(RTLIB::UREM_I32, RTLIB::impl___umodsi3);
+  setLibcallImpl(RTLIB::SDIVREM_I32, RTLIB::impl___divmodsi4);
+  setLibcallImpl(RTLIB::UDIVREM_I32, RTLIB::impl___udivmodsi4);
+  setLibcallImpl(RTLIB::MUL_I32, RTLIB::impl___mulsi3);
+  setLibcallImpl(RTLIB::SHL_I32, RTLIB::impl___ashlsi3);
+  setLibcallImpl(RTLIB::SRL_I32, RTLIB::impl___lshrsi3);
+  setLibcallImpl(RTLIB::SRA_I32, RTLIB::impl___ashrsi3);
+
+  setLibcallImpl(RTLIB::SDIV_I64, RTLIB::impl___divdi3);
+  setLibcallImpl(RTLIB::UDIV_I64, RTLIB::impl___udivdi3);
+  setLibcallImpl(RTLIB::SREM_I64, RTLIB::impl___moddi3);
+  setLibcallImpl(RTLIB::UREM_I64, RTLIB::impl___umoddi3);
+  setLibcallImpl(RTLIB::MUL_I64, RTLIB::impl___muldi3);
+  setLibcallImpl(RTLIB::SHL_I64, RTLIB::impl___ashldi3);
+  setLibcallImpl(RTLIB::SRL_I64, RTLIB::impl___lshrdi3);
+  setLibcallImpl(RTLIB::SRA_I64, RTLIB::impl___ashrdi3);
+
+  for (auto VT : {MVT::i8, MVT::i16}) {
+    setOperationAction(ISD::MUL, VT, Promote);
+    setOperationAction(ISD::SDIV, VT, Promote);
+    setOperationAction(ISD::UDIV, VT, Promote);
+    setOperationAction(ISD::SREM, VT, Promote);
+    setOperationAction(ISD::UREM, VT, Promote);
+    setOperationAction(ISD::SHL, VT, Promote);
+    setOperationAction(ISD::SRL, VT, Promote);
+    setOperationAction(ISD::SRA, VT, Promote);
+    setOperationAction(ISD::ROTL, VT, Promote);
+    setOperationAction(ISD::ROTR, VT, Promote);
+    setOperationAction(ISD::SETCC, VT, Promote);
+    setOperationAction(ISD::SELECT_CC, VT, Promote);
+    setOperationAction(ISD::ADD, VT, Promote);
+    setOperationAction(ISD::SUB, VT, Promote);
+    setOperationAction(ISD::AND, VT, Promote);
+    setOperationAction(ISD::OR, VT, Promote);
+    setOperationAction(ISD::XOR, VT, Promote);
+  }
+
+  setOperationAction(ISD::MUL, MVT::i32, LibCall);
+  setOperationAction(ISD::SDIV, MVT::i32, LibCall);
+  setOperationAction(ISD::UDIV, MVT::i32, LibCall);
+  setOperationAction(ISD::SREM, MVT::i32, LibCall);
+  setOperationAction(ISD::UREM, MVT::i32, LibCall);
+
+  setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i32, Custom);
+
+  setOperationAction(ISD::VASTART, MVT::Other, Custom);
+  setOperationAction(ISD::VAARG, MVT::Other, Custom);
+  setOperationAction(ISD::VACOPY, MVT::Other, Expand);
+  setOperationAction(ISD::VAEND, MVT::Other, Expand);
+
+  setLoadExtAction(ISD::EXTLOAD, MVT::i32, MVT::i16, Custom);
+  setLoadExtAction(ISD::ZEXTLOAD, MVT::i32, MVT::i16, Custom);
+  setLoadExtAction(ISD::SEXTLOAD, MVT::i32, MVT::i16, Custom);
+  setLoadExtAction(ISD::EXTLOAD, MVT::i32, MVT::i8, Legal);
+  setLoadExtAction(ISD::ZEXTLOAD, MVT::i32, MVT::i8, Legal);
+  setLoadExtAction(ISD::SEXTLOAD, MVT::i32, MVT::i8, Legal);
+  setTruncStoreAction(MVT::i32, MVT::i16, Custom);
+  setTruncStoreAction(MVT::i32, MVT::i8, Legal);
+
+  setOperationAction(ISD::LOAD, MVT::i16, Custom);
+  setOperationAction(ISD::STORE, MVT::i16, Custom);
+
+  setOperationAction(ISD::BUILD_PAIR, MVT::i64, Expand);
+  setOperationAction(ISD::EXTRACT_ELEMENT, MVT::i32, Expand);
+
+  for (MVT VT : {MVT::i32, MVT::i8}) {
+    setOperationAction(ISD::LOAD, VT, Legal);
+    setOperationAction(ISD::STORE, VT, Legal);
+    setIndexedLoadAction(ISD::POST_INC, VT, Legal);
+    setIndexedLoadAction(ISD::PRE_INC, VT, Legal);
+    setIndexedLoadAction(ISD::POST_DEC, VT, Legal);
+    setIndexedLoadAction(ISD::PRE_DEC, VT, Legal);
+    setIndexedStoreAction(ISD::POST_INC, VT, Legal);
+    setIndexedStoreAction(ISD::PRE_INC, VT, Legal);
+    setIndexedStoreAction(ISD::POST_DEC, VT, Legal);
+    setIndexedStoreAction(ISD::PRE_DEC, VT, Legal);
+  }
+
+  setOperationAction(ISD::SHL_PARTS, MVT::i32, Expand);
+  setOperationAction(ISD::SRA_PARTS, MVT::i32, Expand);
+  setOperationAction(ISD::SRL_PARTS, MVT::i32, Expand);
+}
+
+bool EZHTargetLowering::getPostIndexedAddressParts(SDNode *N, SDNode *Op,
+                                                   SDValue &Base,
+                                                   SDValue &Offset,
+                                                   ISD::MemIndexedMode &AM,
+                                                   SelectionDAG &DAG) const {
+  if (Op->getOpcode() != ISD::ADD && Op->getOpcode() != ISD::SUB)
+    return false;
+
+  if (auto *C = dyn_cast<ConstantSDNode>(Op->getOperand(1))) {
+    int64_t Val = C->getSExtValue();
+    if (Op->getOpcode() == ISD::SUB)
+      Val = -Val;
+
+    EVT VT = cast<MemSDNode>(N)->getMemoryVT();
+
+    // For 32-bit loads/stores, hardware uses scaled offset (Value * 4)
+    if (VT == MVT::i32) {
+      if (Val >= -512 && Val <= 508 && (Val & 3) == 0) {
+        Base = Op->getOperand(0);
+        Offset = DAG.getConstant(std::abs(Val), SDLoc(Op), MVT::i32);
+        AM = (Val < 0) ? ISD::POST_DEC : ISD::POST_INC;
+        return true;
+      }
+    } else if (VT == MVT::i8) {
+      if (Val >= -128 && Val <= 127) {
+        Base = Op->getOperand(0);
+        Offset = DAG.getConstant(std::abs(Val), SDLoc(Op), MVT::i32);
+        AM = (Val < 0) ? ISD::POST_DEC : ISD::POST_INC;
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool EZHTargetLowering::getPreIndexedAddressParts(SDNode *N, SDValue &Base,
+                                                  SDValue &Offset,
+                                                  ISD::MemIndexedMode &AM,
+                                                  SelectionDAG &DAG) const {
+  SDValue Ptr = cast<MemSDNode>(N)->getBasePtr();
+  if (Ptr.getOpcode() != ISD::ADD && Ptr.getOpcode() != ISD::SUB)
+    return false;
+
+  if (auto *C = dyn_cast<ConstantSDNode>(Ptr.getOperand(1))) {
+    int64_t Val = C->getSExtValue();
+    if (Ptr.getOpcode() == ISD::SUB)
+      Val = -Val;
+
+    EVT VT = cast<MemSDNode>(N)->getMemoryVT();
+
+    if (VT == MVT::i32) {
+      if (Val >= -512 && Val <= 508 && (Val & 3) == 0) {
+        Base = Ptr.getOperand(0);
+        Offset = DAG.getConstant(std::abs(Val), SDLoc(Ptr), MVT::i32);
+        AM = (Val < 0) ? ISD::PRE_DEC : ISD::PRE_INC;
+        return true;
+      }
+    }
+
+    else if (VT == MVT::i8) {
+      if (Val >= -128 && Val <= 127) {
+        Base = Ptr.getOperand(0);
+        Offset = DAG.getConstant(std::abs(Val), SDLoc(Ptr), MVT::i32);
+        AM = (Val < 0) ? ISD::PRE_DEC : ISD::PRE_INC;
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+bool EZHTargetLowering::shouldReduceLoadWidth(
+    SDNode *Load, ISD::LoadExtType ExtTy, EVT NewVT,
+    std::optional<unsigned> ByteOffset) const {
+  // EZH has no 16-bit load in hardware (it is emulated using two 8-bit loads).
+  // Reducing load width to 16-bit is therefore never profitable.
+  if (NewVT == MVT::i16)
+    return false;
+  return TargetLowering::shouldReduceLoadWidth(Load, ExtTy, NewVT, ByteOffset);
+}
+
+SDValue EZHTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
+  switch (Op.getOpcode()) {
+  case ISD::CTLZ:
+  case ISD::CTLZ_ZERO_POISON: {
+    SDLoc dl(Op);
+    SDValue Src = Op.getOperand(0);
+    EVT VT = Src.getValueType();
+
+    if (VT == MVT::i64)
+      return SDValue();
+
+    TargetLowering::ArgListTy Args;
+    Type *ArgTy = Type::getInt32Ty(*DAG.getContext());
+    Args.push_back(TargetLowering::ArgListEntry(Src, ArgTy));
+
+    const char *LibcallName = "__clzsi2";
+
+    TargetLowering::CallLoweringInfo CLI(DAG);
+    CLI.setDebugLoc(dl)
+        .setChain(DAG.getEntryNode())
+        .setCallee(CallingConv::C, Type::getInt32Ty(*DAG.getContext()),
+                   DAG.getExternalSymbol(LibcallName,
+                                         getPointerTy(DAG.getDataLayout())),
+                   std::move(Args));
+
+    std::pair<SDValue, SDValue> CallResult = LowerCallTo(CLI);
+    return CallResult.first;
+  }
+  case ISD::STORE: {
+    StoreSDNode *ST = cast<StoreSDNode>(Op);
+    EVT MemVT = ST->getMemoryVT();
+    if (MemVT == MVT::i16) {
+      SDLoc DL(Op);
+      SDValue Chain = ST->getChain();
+      SDValue Ptr = ST->getBasePtr();
+      SDValue Val = ST->getValue();
+
+      // Store Low Byte
+      SDValue Lo = DAG.getTruncStore(
+          Chain, DL, Val, Ptr, ST->getPointerInfo(), MVT::i8, ST->getAlign(),
+          ST->getMemOperand()->getFlags(), ST->getAAInfo());
+
+      // Store High Byte (at Ptr + 1)
+      SDValue PtrHi = DAG.getNode(ISD::ADD, DL, Ptr.getValueType(), Ptr,
+                                  DAG.getConstant(1, DL, Ptr.getValueType()));
+
+      // Ensure Val is 32-bit for shift
+      SDValue Val32 = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i32, Val);
+      SDValue HiVal = DAG.getNode(ISD::SRL, DL, MVT::i32, Val32,
+                                  DAG.getConstant(8, DL, MVT::i32));
+
+      SDValue Hi = DAG.getTruncStore(
+          Chain, DL, HiVal, PtrHi, ST->getPointerInfo().getWithOffset(1),
+          MVT::i8, ST->getAlign(), ST->getMemOperand()->getFlags(),
+          ST->getAAInfo());
+
+      return DAG.getNode(ISD::TokenFactor, DL, MVT::Other, Lo, Hi);
+    }
+    return SDValue();
+  }
+  case ISD::LOAD: {
+    LoadSDNode *LD = cast<LoadSDNode>(Op);
+    EVT MemVT = LD->getMemoryVT();
+    if (MemVT == MVT::i16) {
+      SDLoc DL(Op);
+      SDValue Chain = LD->getChain();
+      SDValue Ptr = LD->getBasePtr();
+
+      // Load Low Byte (ZExt to 32-bit)
+      SDValue Lo =
+          DAG.getExtLoad(ISD::ZEXTLOAD, DL, MVT::i32, Chain, Ptr,
+                         LD->getPointerInfo(), MVT::i8, LD->getAlign(),
+                         LD->getMemOperand()->getFlags(), LD->getAAInfo());
+
+      // Load High Byte (ZExt to 32-bit, at Ptr + 1)
+      SDValue PtrHi = DAG.getNode(ISD::ADD, DL, Ptr.getValueType(), Ptr,
+                                  DAG.getConstant(1, DL, Ptr.getValueType()));
+      SDValue Hi = DAG.getExtLoad(
+          ISD::ZEXTLOAD, DL, MVT::i32, Chain, PtrHi,
+          LD->getPointerInfo().getWithOffset(1), MVT::i8, LD->getAlign(),
+          LD->getMemOperand()->getFlags(), LD->getAAInfo());
+
+      // Combine: (Hi << 8) | Lo
+      SDValue HiShifted = DAG.getNode(ISD::SHL, DL, MVT::i32, Hi,
+                                      DAG.getConstant(8, DL, MVT::i32));
+      SDValue Res = DAG.getNode(ISD::OR, DL, MVT::i32, HiShifted, Lo);
+
+      if (LD->getExtensionType() == ISD::SEXTLOAD) {
+        SDValue ResShifted = DAG.getNode(ISD::SHL, DL, MVT::i32, Res,
+                                         DAG.getConstant(16, DL, MVT::i32));
+        Res = DAG.getNode(ISD::SRA, DL, MVT::i32, ResShifted,
+                          DAG.getConstant(16, DL, MVT::i32));
+      }
+
+      // Return merged value AND merged chain
+      SDValue NewChain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other,
+                                     Lo.getValue(1), Hi.getValue(1));
+      return DAG.getMergeValues({Res, NewChain}, DL);
+    }
+    return SDValue();
+  }
+  case ISD::JumpTable:
+    return LowerJumpTable(Op, DAG);
+  case ISD::BR_JT:
+    return LowerBR_JT(Op, DAG);
+  case ISD::BlockAddress:
+    return LowerBlockAddress(Op, DAG);
+  case ISD::ConstantPool:
+    return LowerConstantPool(Op, DAG);
+  case ISD::Constant:
+    return LowerConstant(Op, DAG);
+  case ISD::GlobalAddress:
+  case ISD::GlobalTLSAddress:
+  case ISD::ExternalSymbol:
+    return LowerGlobalAddress(Op, DAG);
+  case ISD::SELECT_CC:
+    return LowerSELECT_CC(Op, DAG);
+  case ISD::VASTART:
+    return LowerVASTART(Op, DAG);
+  case ISD::VAARG:
+    return LowerVAARG(Op, DAG);
+  case ISD::BR_CC:
+    return LowerBR_CC(Op, DAG);
+  case ISD::SHL:
+  case ISD::SRL:
+  case ISD::SRA:
+    return Op;
+  case ISD::EH_SJLJ_SETJMP: {
+    SDLoc dl(Op);
+    return DAG.getNode(EZHISD::EH_SJLJ_SETJMP, dl,
+                       DAG.getVTList(MVT::i32, MVT::Other), Op.getOperand(0),
+                       Op.getOperand(1));
+  }
+  case ISD::EH_SJLJ_LONGJMP: {
+    SDLoc dl(Op);
+    return DAG.getNode(EZHISD::EH_SJLJ_LONGJMP, dl, MVT::Other,
+                       Op.getOperand(0), Op.getOperand(1));
+  }
+  case ISD::EH_SJLJ_SETUP_DISPATCH: {
+    SDLoc dl(Op);
+    return DAG.getNode(EZHISD::EH_SJLJ_SETUP_DISPATCH, dl, MVT::Other,
+                       Op.getOperand(0));
+  }
+  case ISD::FRAMEADDR:
+    return LowerFRAMEADDR(Op, DAG);
+  case ISD::DYNAMIC_STACKALLOC:
+    return LowerDYNAMIC_STACKALLOC(Op, DAG);
+  case ISD::INTRINSIC_WO_CHAIN:
+    return LowerINTRINSIC_WO_CHAIN(Op, DAG);
+  default:
+    return SDValue();
+  }
+}
+
+void EZHTargetLowering::ReplaceNodeResults(SDNode *N,
+                                           SmallVectorImpl<SDValue> &Results,
+                                           SelectionDAG &DAG) const {}
+static unsigned IntCCToEZHCC(ISD::CondCode CC);
+
+SDValue EZHTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
+  SDValue LHS = Op.getOperand(0);
+  SDValue RHS = Op.getOperand(1);
+  SDValue TrueV = Op.getOperand(2);
+  SDValue FalseV = Op.getOperand(3);
+  ISD::CondCode CC = cast<CondCodeSDNode>(Op.getOperand(4))->get();
+  SDLoc DL(Op);
+
+  if (LHS.getValueType() != MVT::i32)
+    return SDValue();
+
+  if (CC == ISD::SETGT || CC == ISD::SETGE || CC == ISD::SETLT ||
+      CC == ISD::SETLE) {
+    bool LHSExt = (LHS.getOpcode() == ISD::SIGN_EXTEND_INREG ||
+                   LHS.getOpcode() == ISD::SIGN_EXTEND ||
+                   LHS.getOpcode() == ISD::ZERO_EXTEND ||
+                   LHS.getOpcode() == ISD::ANY_EXTEND);
+    bool RHSExt = (RHS.getOpcode() == ISD::SIGN_EXTEND_INREG ||
+                   RHS.getOpcode() == ISD::SIGN_EXTEND ||
+                   RHS.getOpcode() == ISD::ZERO_EXTEND ||
+                   RHS.getOpcode() == ISD::ANY_EXTEND);
+    bool LHSConst = false;
+    if (auto *C = dyn_cast<ConstantSDNode>(LHS)) {
+      int64_t Val = C->getSExtValue();
+      if (Val >= -32768 && Val <= 32767)
+        LHSConst = true;
+    }
+    bool RHSConst = false;
+    if (auto *C = dyn_cast<ConstantSDNode>(RHS)) {
+      int64_t Val = C->getSExtValue();
+      if (Val >= -32768 && Val <= 32767)
+        RHSConst = true;
+    }
+    bool IsI8OrI16 = (LHSExt && RHSExt) || (LHSExt && RHSConst) ||
+                     (RHSExt && LHSConst) || (LHSConst && RHSConst);
+
+    if (!IsI8OrI16) {
+      LHS = DAG.getNode(EZHISD::BTOG, DL, MVT::i32, LHS,
+                        DAG.getConstant(31, DL, MVT::i32));
+      RHS = DAG.getNode(EZHISD::BTOG, DL, MVT::i32, RHS,
+                        DAG.getConstant(31, DL, MVT::i32));
+
+      switch (CC) {
+      case ISD::SETGT:
+        CC = ISD::SETUGT;
+        break;
+      case ISD::SETGE:
+        CC = ISD::SETUGE;
+        break;
+      case ISD::SETLT:
+        CC = ISD::SETULT;
+        break;
+      case ISD::SETLE:
+        CC = ISD::SETULE;
+        break;
+      default:
+        llvm_unreachable("Invalid signed condition code");
+      }
+    }
+  }
+
+  if (CC == ISD::SETUGT) {
+    CC = ISD::SETULT;
+    std::swap(LHS, RHS);
+  } else if (CC == ISD::SETULE) {
+    CC = ISD::SETUGE;
+    std::swap(LHS, RHS);
+  }
+
+  SDValue TargetCC = DAG.getTargetConstant(CC, DL, MVT::i32);
+  SDValue Cmp = DAG.getNode(EZHISD::CMP, DL, MVT::Glue, LHS, RHS);
+  SDValue Ops[] = {TrueV, FalseV, TargetCC, Cmp};
+  return DAG.getNode(EZHISD::SELECT_CC, DL, Op.getValueType(), Ops);
+}
+
+SDValue EZHTargetLowering::LowerVASTART(SDValue Op, SelectionDAG &DAG) const {
+  MachineFunction &MF = DAG.getMachineFunction();
+  EZHMachineFunctionInfo *FuncInfo = MF.getInfo<EZHMachineFunctionInfo>();
+
+  SDValue Ptr = Op.getOperand(1);
+  EVT PtrVT = Ptr.getValueType();
+
+  SDLoc dl(Op);
+  SDValue FrameIndex =
+      DAG.getFrameIndex(FuncInfo->getVarArgsFrameIndex(), PtrVT);
+
+  const Value *SV = cast<SrcValueSDNode>(Op.getOperand(2))->getValue();
+
+  return DAG.getStore(Op.getOperand(0), dl, FrameIndex, Ptr,
+                      MachinePointerInfo(SV));
+}
+
+SDValue EZHTargetLowering::LowerVAARG(SDValue Op, SelectionDAG &DAG) const {
+  SDNode *Node = Op.getNode();
+  EVT VT = Node->getValueType(0);
+  SDValue InChain = Node->getOperand(0);
+  SDValue VAListPtr = Node->getOperand(1);
+  EVT PtrVT = VAListPtr.getValueType();
+  const Value *SV = cast<SrcValueSDNode>(Node->getOperand(2))->getValue();
+  SDLoc dl(Node);
+
+  // Load the current VAList pointer (which points to the next arg on the stack)
+  SDValue VAList =
+      DAG.getLoad(PtrVT, dl, InChain, VAListPtr, MachinePointerInfo(SV));
+  SDValue VAListInChain = VAList.getValue(1);
+
+  // Align VAList pointer if the argument type alignment requires it (> 4-byte
+  // alignment).
+  Type *Ty = VT.getTypeForEVT(*DAG.getContext());
+  auto &TD = DAG.getDataLayout();
+  Align ArgAlignment = TD.getABITypeAlign(Ty);
+  unsigned ArgAlignInBytes = ArgAlignment.value();
+
+  SDValue ArgPtr = VAList;
+  if (ArgAlignInBytes > 4) {
+    unsigned AlignMask = ArgAlignInBytes - 1;
+    SDValue AddOffset = DAG.getNode(ISD::ADD, dl, PtrVT, VAList,
+                                    DAG.getConstant(AlignMask, dl, PtrVT));
+    ArgPtr = DAG.getNode(ISD::AND, dl, PtrVT, AddOffset,
+                         DAG.getConstant(~AlignMask, dl, PtrVT));
+  }
+
+  // Increment the VAList pointer past the current argument.
+  // Round up the argument size to the nearest multiple of 4 bytes (32 bits)
+  // as all varargs arguments on EZH stack are aligned to at least 4 bytes.
+  unsigned ArgSize = (VT.getSizeInBits() + 31) / 32 * 4;
+  SDValue NextVAList = DAG.getNode(ISD::ADD, dl, PtrVT, ArgPtr,
+                                   DAG.getConstant(ArgSize, dl, PtrVT));
+
+  // Store the incremented VAList pointer back.
+  SDValue StoreChain = DAG.getStore(VAListInChain, dl, NextVAList, VAListPtr,
+                                    MachinePointerInfo(SV));
+
+  // Load the actual argument from ArgPtr.
+  SDValue ArgVal =
+      DAG.getLoad(VT, dl, StoreChain, ArgPtr, MachinePointerInfo());
+
+  // Return the loaded value and the new chain.
+  return DAG.getMergeValues({ArgVal, ArgVal.getValue(1)}, dl);
+}
+
+SDValue EZHTargetLowering::LowerJumpTable(SDValue Op, SelectionDAG &DAG) const {
+  SDLoc DL(Op);
+  auto *JT = cast<JumpTableSDNode>(Op);
+
+  // Mark target blocks as address-taken to prevent deletion!
+  MachineFunction &MF = DAG.getMachineFunction();
+  if (MachineJumpTableInfo *MJTI = MF.getJumpTableInfo()) {
+    const std::vector<MachineJumpTableEntry> &JTEntries = MJTI->getJumpTables();
+    int Index = JT->getIndex();
+    if (Index >= 0 && static_cast<size_t>(Index) < JTEntries.size())
+      for (MachineBasicBlock *MBB : JTEntries[Index].MBBs)
+        MBB->setMachineBlockAddressTaken();
+  }
+
+  EZHConstantPoolValue *CPV = new EZHConstantPoolValue(
+      JT->getIndex(), Type::getInt32Ty(*DAG.getContext()));
+  SDValue CPIdx =
+      DAG.getTargetConstantPool(CPV, getPointerTy(DAG.getDataLayout()));
+  SDValue Ops[] = {CPIdx, DAG.getEntryNode()};
+  return SDValue(
+      DAG.getMachineNode(EZH::LOAD_CONSTANT, DL, MVT::i32, MVT::Other, Ops), 0);
+}
+
+SDValue EZHTargetLowering::LowerBR_JT(SDValue Op, SelectionDAG &DAG) const {
+  SDLoc dl(Op);
+  SDValue Chain = Op.getOperand(0);
+  SDValue Table = Op.getOperand(1);
+  SDValue Index = Op.getOperand(2);
+
+  int JTI = -1;
+  if (auto *JT = dyn_cast<JumpTableSDNode>(Table)) {
+    JTI = JT->getIndex();
+  }
+
+  assert(JTI != -1 && "Failed to extract JTI for BR_JT!");
+
+  SDValue JTIVal =
+      DAG.getTargetJumpTable(JTI, getPointerTy(DAG.getDataLayout()));
+  return DAG.getNode(EZHISD::BR_JT, dl, MVT::Other, Chain, Table, Index,
+                     JTIVal);
+}
+
+SDValue EZHTargetLowering::LowerBlockAddress(SDValue Op,
+                                             SelectionDAG &DAG) const {
+  SDLoc DL(Op);
+  auto *BA = cast<BlockAddressSDNode>(Op);
+
+  EZHConstantPoolValue *CPV = new EZHConstantPoolValue(
+      BA->getBlockAddress(), Type::getInt32Ty(*DAG.getContext()));
+  SDValue CPIdx =
+      DAG.getTargetConstantPool(CPV, getPointerTy(DAG.getDataLayout()));
+  SDValue Ops[] = {CPIdx, DAG.getEntryNode()};
+  return SDValue(
+      DAG.getMachineNode(EZH::LOAD_CONSTANT, DL, MVT::i32, MVT::Other, Ops), 0);
+}
+
+Register EZHTargetLowering::getRegisterByName(const char *RegName, LLT Ty,
+                                              const MachineFunction &MF) const {
+  StringRef Name(RegName);
+  if (Name == "r0")
+    return EZH::R0;
+  if (Name == "r1")
+    return EZH::R1;
+  if (Name == "r2")
+    return EZH::R2;
+  if (Name == "r3")
+    return EZH::R3;
+  if (Name == "r4")
+    return EZH::R4;
+  if (Name == "r5")
+    return EZH::R5;
+  if (Name == "r6")
+    return EZH::R6;
+  if (Name == "r7")
+    return EZH::R7;
+  if (Name == "sp")
+    return EZH::SP;
+  if (Name == "pc")
+    return EZH::PC;
+  if (Name == "gpo")
+    return EZH::GPO;
+  if (Name == "gpd")
+    return EZH::GPD;
+  if (Name == "cfs")
+    return EZH::CFS;
+  if (Name == "cfm")
+    return EZH::CFM;
+  if (Name == "gpi")
+    return EZH::GPI;
+  if (Name == "ra")
+    return EZH::RA;
+  report_fatal_error("invalid register name");
+}
+
+TargetLowering::ConstraintType
+EZHTargetLowering::getConstraintType(StringRef Constraint) const {
+  if (Constraint.size() == 1) {
+    switch (Constraint[0]) {
+    case 'r':
+      return C_RegisterClass;
+    default:
+      break;
+    }
+  }
+  return TargetLowering::getConstraintType(Constraint);
+}
+
+std::pair<unsigned, const TargetRegisterClass *>
+EZHTargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
+                                                StringRef Constraint,
+                                                MVT VT) const {
+  if (Constraint.size() == 1) {
+    switch (Constraint[0]) {
+    case 'r':
+      return std::make_pair(0U, &EZH::GPRRegClass);
+    }
+  }
+  return TargetLowering::getRegForInlineAsmConstraint(TRI, Constraint, VT);
+}
+
+void EZHTargetLowering::LowerAsmOperandForConstraint(SDValue Op,
+                                                     StringRef Constraint,
+                                                     std::vector<SDValue> &Ops,
+                                                     SelectionDAG &DAG) const {
+  TargetLowering::LowerAsmOperandForConstraint(Op, Constraint, Ops, DAG);
+}
+
+SDValue EZHTargetLowering::LowerConstantPool(SDValue Op,
+                                             SelectionDAG &DAG) const {
+  SDLoc DL(Op);
+  auto *CP = cast<ConstantPoolSDNode>(Op);
+
+  // 1. Retrieve the index of the original constant in the constant pool
+  MachineConstantPool *MCP = DAG.getMachineFunction().getConstantPool();
+  int OrigIndex = -1;
+  if (CP->isMachineConstantPoolEntry())
+    OrigIndex =
+        MCP->getConstantPoolIndex(CP->getMachineCPVal(), CP->getAlign());
+  else
+    OrigIndex = MCP->getConstantPoolIndex(CP->getConstVal(), CP->getAlign());
+
+  // 2. Wrap the CPI in EZHConstantPoolValue to force loading its absolute
+  // address!
+  EZHConstantPoolValue *CPV =
+      new EZHConstantPoolValue(OrigIndex, CP->getType(), true);
+  SDValue TargetCP = DAG.getTargetConstantPool(
+      CPV, getPointerTy(DAG.getDataLayout()), CP->getAlign(), CP->getOffset(),
+      CP->getTargetFlags());
+
+  SDValue Ops[] = {TargetCP, DAG.getEntryNode()};
+  return SDValue(
+      DAG.getMachineNode(EZH::LOAD_CONSTANT, DL, MVT::i32, MVT::Other, Ops), 0);
+}
+
+SDValue EZHTargetLowering::LowerConstant(SDValue Op, SelectionDAG &DAG) const {
+  SDLoc DL(Op);
+  auto *CN = cast<ConstantSDNode>(Op);
+  int64_t Val = CN->getSExtValue();
+
+  if (isInt<11>(Val)) {
+    return Op; // Natively matched
+  }
+
+  uint32_t UVal = static_cast<uint32_t>(CN->getZExtValue());
+
+  uint32_t HiVal = (UVal >> 20);
+  if ((UVal & 0x000FFFFF) == 0 && isInt<11>(HiVal)) {
+    SDValue Hi = DAG.getTargetConstant(HiVal, DL, MVT::i32);
+    SDValue Lo = DAG.getTargetConstant(UVal & 0xFFF, DL, MVT::i32);
+    SDValue Shift = DAG.getTargetConstant(20, DL, MVT::i32);
+
+    SDValue HiNode =
+        SDValue(DAG.getMachineNode(EZH::MOVSri__, DL, MVT::i32, Hi, Shift), 0);
+    SDValue LoNode =
+        SDValue(DAG.getMachineNode(EZH::ORri__, DL, MVT::i32, HiNode, Lo), 0);
+    return LoNode;
+  }
+
+  // For large constants, use an inline literal pool (LOAD_CONSTANT)
+  SDValue CPIdx = DAG.getTargetConstantPool(
+      ConstantInt::get(Type::getInt32Ty(*DAG.getContext()), UVal),
+      getPointerTy(DAG.getDataLayout()));
+
+  SDValue Ops[] = {CPIdx, DAG.getEntryNode()};
+  return SDValue(
+      DAG.getMachineNode(EZH::LOAD_CONSTANT, DL, MVT::i32, MVT::Other, Ops), 0);
+}
+
+SDValue EZHTargetLowering::LowerGlobalAddress(SDValue Op,
+                                              SelectionDAG &DAG) const {
+  SDLoc DL(Op);
+
+  if (auto *GV = dyn_cast<GlobalAddressSDNode>(Op)) {
+    SDValue CPIdx;
+    if (GV->getOffset() != 0) {
+      EZHConstantPoolValue *CPV =
+          new EZHConstantPoolValue(GV->getGlobal(), GV->getOffset(),
+                                   Type::getInt32Ty(*DAG.getContext()));
+      CPIdx = DAG.getTargetConstantPool(CPV, getPointerTy(DAG.getDataLayout()));
+    } else {
+      CPIdx = DAG.getTargetConstantPool(GV->getGlobal(),
+                                        getPointerTy(DAG.getDataLayout()));
+    }
+    SDValue Ops[] = {CPIdx, DAG.getEntryNode()};
+    return SDValue(
+        DAG.getMachineNode(EZH::LOAD_CONSTANT, DL, MVT::i32, MVT::Other, Ops),
+        0);
+  }
+
+  if (auto *S = dyn_cast<ExternalSymbolSDNode>(Op)) {
+    EZHConstantPoolValue *CPV = new EZHConstantPoolValue(
+        S->getSymbol(), Type::getInt32Ty(*DAG.getContext()));
+    SDValue CPIdx =
+        DAG.getTargetConstantPool(CPV, getPointerTy(DAG.getDataLayout()));
+    SDValue Ops[] = {CPIdx, DAG.getEntryNode()};
+    return SDValue(
+        DAG.getMachineNode(EZH::LOAD_CONSTANT, DL, MVT::i32, MVT::Other, Ops),
+        0);
+  }
+
+  llvm_unreachable("Unhandled global address type");
+}
+
+#include "EZHGenCallingConv.inc"
+
+SDValue EZHTargetLowering::LowerFormalArguments(
+    SDValue Chain, CallingConv::ID CallConv, bool IsVarArg,
+    const SmallVectorImpl<ISD::InputArg> &Ins, const SDLoc &DL,
+    SelectionDAG &DAG, SmallVectorImpl<SDValue> &InVals) const {
+  MachineFunction &MF = DAG.getMachineFunction();
+  MachineRegisterInfo &RegInfo = MF.getRegInfo();
+
+  SmallVector<CCValAssign, 16> ArgLocs;
+  CCState CCInfo(CallConv, IsVarArg, MF, ArgLocs, *DAG.getContext());
+  CCInfo.AnalyzeFormalArguments(Ins, CC_EZH);
+
+  DenseMap<unsigned, int> SplitArgFIs;
+
+  assert(ArgLocs.size() == Ins.size() && "ArgLocs and Ins size mismatch!");
+  for (unsigned i = 0, e = ArgLocs.size(); i != e; ++i) {
+    CCValAssign &VA = ArgLocs[i];
+    ISD::ArgFlagsTy Flags = Ins[i].Flags;
+    if (Flags.isByVal()) {
+      unsigned Size = Flags.getByValSize();
+      if (Size == 0) {
+        InVals.push_back(DAG.getUNDEF(getPointerTy(DAG.getDataLayout())));
+        continue;
+      }
+      int FI =
+          MF.getFrameInfo().CreateFixedObject(Size, VA.getLocMemOffset(), true);
+      SDValue FIN = DAG.getFrameIndex(FI, getPointerTy(DAG.getDataLayout()));
+      InVals.push_back(FIN);
+    } else if (VA.isRegLoc()) {
+      Register VReg = RegInfo.createVirtualRegister(&EZH::GPRRegClass);
+      RegInfo.addLiveIn(VA.getLocReg(), VReg);
+      InVals.push_back(DAG.getCopyFromReg(Chain, DL, VReg, VA.getLocVT()));
+    } else {
+      int FI;
+      bool IsSplit = false;
+      unsigned OrigArgIdx = 0;
+
+      if (Ins[i].isOrigArg() && (Ins[i].ArgVT.getSizeInBits() / 8 >
+                                 VA.getLocVT().getSizeInBits() / 8)) {
+        IsSplit = true;
+        OrigArgIdx = Ins[i].getOrigArgIndex();
+        unsigned ValVTSize = Ins[i].ArgVT.getSizeInBits() / 8;
+        auto It = SplitArgFIs.find(OrigArgIdx);
+        if (It == SplitArgFIs.end()) {
+          FI = MF.getFrameInfo().CreateFixedObject(ValVTSize,
+                                                   VA.getLocMemOffset(), true);
+          SplitArgFIs[OrigArgIdx] = FI;
+        } else {
+          FI = It->second;
+        }
+      }
+
+      if (!IsSplit)
+        FI = MF.getFrameInfo().CreateFixedObject(
+            VA.getLocVT().getSizeInBits() / 8, VA.getLocMemOffset(), true);
+
+      int FIOffset = MF.getFrameInfo().getObjectOffset(FI);
+      unsigned Offset = VA.getLocMemOffset() - FIOffset;
+
+      SDValue FIN = DAG.getFrameIndex(FI, getPointerTy(DAG.getDataLayout()));
+      if (Offset != 0)
+        FIN = DAG.getObjectPtrOffset(DL, FIN, TypeSize::getFixed(Offset));
+
+      InVals.push_back(
+          DAG.getLoad(VA.getValVT(), DL, Chain, FIN,
+                      MachinePointerInfo::getFixedStack(MF, FI, Offset)));
+    }
+  }
+
+  if (IsVarArg) {
+    EZHMachineFunctionInfo *FuncInfo = MF.getInfo<EZHMachineFunctionInfo>();
+    static const MCPhysReg ArgRegs[] = {EZH::R0, EZH::R1, EZH::R2, EZH::R3};
+    unsigned NumArgRegs = std::size(ArgRegs);
+    unsigned Idx = CCInfo.getFirstUnallocated(ArgRegs);
+
+    unsigned NumSpillBytes = (NumArgRegs - Idx) * 4;
+    unsigned NumStackBytes = CCInfo.getStackSize();
+    FuncInfo->setVarArgsRegIdx(Idx);
+
+    int VarArgsFI;
+    SmallVector<SDValue, 4> MemOps;
+
+    if (NumSpillBytes > 0) {
+      FuncInfo->setVarArgsSaveSize(NumSpillBytes);
+      int VaArgOffset = -static_cast<int>(NumSpillBytes);
+      VarArgsFI =
+          MF.getFrameInfo().CreateFixedObject(NumSpillBytes, VaArgOffset, true);
+      FuncInfo->setVarArgsFrameIndex(VarArgsFI);
+
+      SDValue FIN =
+          DAG.getFrameIndex(VarArgsFI, getPointerTy(DAG.getDataLayout()));
+
+      for (unsigned i = Idx; i < NumArgRegs; ++i) {
+        Register VReg = RegInfo.createVirtualRegister(&EZH::GPRRegClass);
+        RegInfo.addLiveIn(ArgRegs[i], VReg);
+        SDValue Arg = DAG.getCopyFromReg(Chain, DL, VReg, MVT::i32);
+
+        unsigned StoreOffset = (i - Idx) * 4;
+        SDValue Addr = DAG.getNode(ISD::ADD, DL, MVT::i32, FIN,
+                                   DAG.getConstant(StoreOffset, DL, MVT::i32));
+        MemOps.push_back(DAG.getStore(
+            Chain, DL, Arg, Addr,
+            MachinePointerInfo::getFixedStack(MF, VarArgsFI, StoreOffset)));
+      }
+    } else {
+      VarArgsFI = MF.getFrameInfo().CreateFixedObject(4, NumStackBytes, true);
+      FuncInfo->setVarArgsFrameIndex(VarArgsFI);
+    }
+
+    if (!MemOps.empty())
+      Chain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, MemOps);
+  }
+
+  return Chain;
+}
+
+SDValue EZHTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
+                                     SmallVectorImpl<SDValue> &InVals) const {
+  SelectionDAG &DAG = CLI.DAG;
+  SDLoc &DL = CLI.DL;
+  SmallVectorImpl<ISD::OutputArg> &Outs = CLI.Outs;
+  SmallVectorImpl<SDValue> &OutVals = CLI.OutVals;
+  SmallVectorImpl<ISD::InputArg> &Ins = CLI.Ins;
+  SDValue Chain = CLI.Chain;
+  SDValue Callee = CLI.Callee;
+  CallingConv::ID CallConv = CLI.CallConv;
+  bool IsVarArg = CLI.IsVarArg;
+
+  CLI.IsTailCall = false;
+
+  if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(Callee))
+    Callee = DAG.getTargetGlobalAddress(G->getGlobal(), DL,
+                                        getPointerTy(DAG.getDataLayout()));
+  else if (ExternalSymbolSDNode *E = dyn_cast<ExternalSymbolSDNode>(Callee))
+    Callee = DAG.getTargetExternalSymbol(E->getSymbol(),
+                                         getPointerTy(DAG.getDataLayout()));
+
+  SmallVector<CCValAssign, 16> ArgLocs;
+  CCState CCInfo(CallConv, IsVarArg, DAG.getMachineFunction(), ArgLocs,
+                 *DAG.getContext());
+  CCInfo.AnalyzeCallOperands(Outs, CC_EZH);
+
+  unsigned NumBytes = CCInfo.getStackSize();
+  Chain = DAG.getCALLSEQ_START(Chain, NumBytes, 0, DL);
+
+  SmallVector<std::pair<unsigned, SDValue>, 4> RegsToPass;
+  SmallVector<SDValue, 8> MemOpChains;
+
+  SDValue StackPtr =
+      DAG.getCopyFromReg(Chain, DL, EZH::SP, getPointerTy(DAG.getDataLayout()));
+
+  assert(ArgLocs.size() == Outs.size() && "ArgLocs and Outs size mismatch!");
+  for (unsigned i = 0, e = ArgLocs.size(); i != e; ++i) {
+    CCValAssign &VA = ArgLocs[i];
+    SDValue Arg = OutVals[i];
+    ISD::ArgFlagsTy Flags = Outs[i].Flags;
+
+    if (Flags.isByVal()) {
+      unsigned Size = Flags.getByValSize();
+      if (Size == 0)
+        continue;
+      Align Alignment = Flags.getNonZeroByValAlign();
+      SDValue DstAddr =
+          DAG.getNode(ISD::ADD, DL, getPointerTy(DAG.getDataLayout()), StackPtr,
+                      DAG.getIntPtrConstant(VA.getLocMemOffset(), DL));
+      SDValue MemCpy = DAG.getMemcpy(
+          Chain, DL, DstAddr, Arg,
+          DAG.getConstant(Size, DL, getPointerTy(DAG.getDataLayout())),
+          Alignment, /*isVol=*/false, /*AlwaysInline=*/false,
+          /*CI=*/nullptr, /*OverrideTailCall=*/std::nullopt,
+          MachinePointerInfo(), MachinePointerInfo());
+      MemOpChains.push_back(MemCpy);
+      continue;
+    }
+
+    if (VA.isRegLoc()) {
+      RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
+    } else {
+      // Store to stack
+      int32_t Offset = VA.getLocMemOffset();
+      SDValue PtrOff = DAG.getConstant(static_cast<uint32_t>(Offset), DL,
+                                       getPointerTy(DAG.getDataLayout()));
+      SDValue DstAddr = DAG.getNode(
+          ISD::ADD, DL, getPointerTy(DAG.getDataLayout()), StackPtr, PtrOff);
+      MemOpChains.push_back(
+          DAG.getStore(Chain, DL, Arg, DstAddr, MachinePointerInfo()));
+    }
+  }
+
+  if (!MemOpChains.empty())
+    Chain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, MemOpChains);
+
+  SDValue InGlue;
+  for (auto &Reg : RegsToPass) {
+    Chain = DAG.getCopyToReg(Chain, DL, Reg.first, Reg.second, InGlue);
+    InGlue = Chain.getValue(1);
+  }
+
+  SDValue CalleeVal = Callee;
+
+  SmallVector<SDValue, 8> Ops;
+  Ops.push_back(Chain);
+  Ops.push_back(CalleeVal);
+
+  for (auto &Reg : RegsToPass)
+    Ops.push_back(DAG.getRegister(Reg.first, Reg.second.getValueType()));
+
+  if (InGlue.getNode())
+    Ops.push_back(InGlue);
+
+  Chain =
+      DAG.getNode(EZHISD::CALL, DL, DAG.getVTList(MVT::Other, MVT::Glue), Ops);
+  InGlue = Chain.getValue(1);
+
+  Chain = DAG.getCALLSEQ_END(Chain, NumBytes, 0, InGlue, DL);
+  InGlue = Chain.getValue(1);
+
+  return LowerCallResult(Chain, InGlue, CallConv, IsVarArg, Ins, DL, DAG,
+                         InVals);
+}
+
+SDValue EZHTargetLowering::LowerCallResult(
+    SDValue Chain, SDValue InGlue, CallingConv::ID CallConv, bool IsVarArg,
+    const SmallVectorImpl<ISD::InputArg> &Ins, const SDLoc &DL,
+    SelectionDAG &DAG, SmallVectorImpl<SDValue> &InVals) const {
+  SmallVector<CCValAssign, 16> RVLocs;
+  CCState CCInfo(CallConv, IsVarArg, DAG.getMachineFunction(), RVLocs,
+                 *DAG.getContext());
+  CCInfo.AnalyzeCallResult(Ins, RetCC_EZH);
+
+  unsigned VaIdx = 0;
+  for (auto &VA : RVLocs) {
+    if (!VA.isRegLoc()) {
+      llvm::errs() << "=== EZH LowerCallResult VA #" << VaIdx << " ===\n";
+      llvm::errs() << "  isReg: " << VA.isRegLoc() << "\n";
+      llvm::errs() << "  isMem: " << VA.isMemLoc() << "\n";
+      llvm::errs() << "  LocVT: " << EVT(VA.getLocVT()).getEVTString() << "\n";
+      llvm::errs() << "  MemOffset: " << VA.getLocMemOffset() << "\n";
+    }
+    ++VaIdx;
+    assert(VA.isRegLoc() && "Only register returns supported!");
+    Chain = DAG.getCopyFromReg(Chain, DL, VA.getLocReg(), VA.getValVT(), InGlue)
+                .getValue(1);
+    InGlue = Chain.getValue(2);
+    InVals.push_back(Chain.getValue(0));
+  }
+  return Chain;
+}
+
+SDValue
+EZHTargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv,
+                               bool IsVarArg,
+                               const SmallVectorImpl<ISD::OutputArg> &Outs,
+                               const SmallVectorImpl<SDValue> &OutVals,
+                               const SDLoc &DL, SelectionDAG &DAG) const {
+  SmallVector<CCValAssign, 16> RVLocs;
+  CCState CCInfo(CallConv, IsVarArg, DAG.getMachineFunction(), RVLocs,
+                 *DAG.getContext());
+  CCInfo.AnalyzeReturn(Outs, RetCC_EZH);
+
+  SDValue Glue;
+  SmallVector<SDValue, 4> RetOps(1, Chain);
+
+  for (unsigned i = 0, e = RVLocs.size(); i != e; ++i) {
+    CCValAssign &VA = RVLocs[i];
+    assert(VA.isRegLoc() && "Only register returns supported!");
+    Chain = DAG.getCopyToReg(Chain, DL, VA.getLocReg(), OutVals[i], Glue);
+    Glue = Chain.getValue(1);
+    RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));
+  }
+
+  RetOps[0] = Chain;
+  if (Glue.getNode())
+    RetOps.push_back(Glue);
+
+  return DAG.getNode(EZHISD::RET_GLUE_INTERNAL, DL, MVT::Other, RetOps);
+}
+
+EVT EZHTargetLowering::getSetCCResultType(const DataLayout &DL,
+                                          LLVMContext &Context, EVT VT) const {
+  if (!VT.isVector())
+    return getPointerTy(DL);
+  return VT.changeVectorElementTypeToInteger();
+}
+
+bool EZHTargetLowering::CanLowerReturn(
+    CallingConv::ID CallConv, MachineFunction &MF, bool IsVarArg,
+    const SmallVectorImpl<ISD::OutputArg> &Outs, LLVMContext &Context,
+    const Type *RetTy) const {
+  SmallVector<CCValAssign, 16> RVLocs;
+  CCState CCInfo(CallConv, IsVarArg, MF, RVLocs, Context);
+  return CCInfo.CheckReturn(Outs, RetCC_EZH);
+}
+
+const char *EZHTargetLowering::getTargetNodeName(unsigned Opcode) const {
+  switch (static_cast<EZHISD::NodeType>(Opcode)) {
+  case EZHISD::FIRST_NUMBER:
+    break;
+  case EZHISD::RET_GLUE_INTERNAL:
+    return "EZHISD::RET_GLUE_INTERNAL";
+  case EZHISD::CALL:
+    return "EZHISD::CALL";
+  case EZHISD::CMP:
+    return "EZHISD::CMP";
+  case EZHISD::BR_CC:
+    return "EZHISD::BR_CC";
+  case EZHISD::SELECT_CC:
+    return "EZHISD::SELECT_CC";
+  case EZHISD::BTOG:
+    return "EZHISD::BTOG";
+  case EZHISD::BR_JT:
+    return "EZHISD::BR_JT";
+  case EZHISD::EH_SJLJ_SETJMP:
+    return "EZHISD::EH_SJLJ_SETJMP";
+  case EZHISD::EH_SJLJ_LONGJMP:
+    return "EZHISD::EH_SJLJ_LONGJMP";
+  case EZHISD::EH_SJLJ_SETUP_DISPATCH:
+    return "EZHISD::EH_SJLJ_SETUP_DISPATCH";
+  }
+  return nullptr;
+}
+
+static unsigned IntCCToEZHCC(ISD::CondCode CC) {
+  switch (CC) {
+  default:
+    llvm_unreachable("Unknown condition code!");
+  case ISD::SETEQ:
+    return 1; // ZE: Zero
+  case ISD::SETNE:
+    return 2; // NZ: Not Zero
+  case ISD::SETGE:
+    return 3; // PO: Positive (GE / Signed Greater or Equal)
+  case ISD::SETLT:
+    return 4; // NE: Negative (LT / Signed Less Than)
+  case ISD::SETGT:
+    return 5; // AZ: Above Zero (GT)
+  case ISD::SETLE:
+    return 6; // ZB: Zero or Below (LE)
+  case ISD::SETULT:
+    return 7; // CA: Carry Set (HS/LO: Unsigned Less Than / Borrow)
+  case ISD::SETUGE:
+    return 8; // NC: Carry Not Set (LO/HS: Unsigned Greater or Same / No Borrow)
+  }
+}
+
+SDValue EZHTargetLowering::LowerBR_CC(SDValue Op, SelectionDAG &DAG) const {
+  SDValue Chain = Op.getOperand(0);
+  ISD::CondCode CC = cast<CondCodeSDNode>(Op.getOperand(1))->get();
+  SDValue LHS = Op.getOperand(2);
+  SDValue RHS = Op.getOperand(3);
+  SDValue Dest = Op.getOperand(4);
+  SDLoc dl(Op);
+
+  if (CC == ISD::SETGT || CC == ISD::SETGE || CC == ISD::SETLT ||
+      CC == ISD::SETLE) {
+    bool LHSExt = (LHS.getOpcode() == ISD::SIGN_EXTEND_INREG ||
+                   LHS.getOpcode() == ISD::SIGN_EXTEND ||
+                   LHS.getOpcode() == ISD::ZERO_EXTEND ||
+                   LHS.getOpcode() == ISD::ANY_EXTEND);
+    bool RHSExt = (RHS.getOpcode() == ISD::SIGN_EXTEND_INREG ||
+                   RHS.getOpcode() == ISD::SIGN_EXTEND ||
+                   RHS.getOpcode() == ISD::ZERO_EXTEND ||
+                   RHS.getOpcode() == ISD::ANY_EXTEND);
+    bool LHSConst = false;
+    if (auto *C = dyn_cast<ConstantSDNode>(LHS)) {
+      int64_t Val = C->getSExtValue();
+      if (Val >= -32768 && Val <= 32767)
+        LHSConst = true;
+    }
+    bool RHSConst = false;
+    if (auto *C = dyn_cast<ConstantSDNode>(RHS)) {
+      int64_t Val = C->getSExtValue();
+      if (Val >= -32768 && Val <= 32767)
+        RHSConst = true;
+    }
+    bool IsI8OrI16 = (LHSExt && RHSExt) || (LHSExt && RHSConst) ||
+                     (RHSExt && LHSConst) || (LHSConst && RHSConst);
+
+    if (!IsI8OrI16) {
+      LHS = DAG.getNode(EZHISD::BTOG, dl, MVT::i32, LHS,
+                        DAG.getConstant(31, dl, MVT::i32));
+      RHS = DAG.getNode(EZHISD::BTOG, dl, MVT::i32, RHS,
+                        DAG.getConstant(31, dl, MVT::i32));
+
+      switch (CC) {
+      case ISD::SETGT:
+        CC = ISD::SETUGT;
+        break;
+      case ISD::SETGE:
+        CC = ISD::SETUGE;
+        break;
+      case ISD::SETLT:
+        CC = ISD::SETULT;
+        break;
+      case ISD::SETLE:
+        CC = ISD::SETULE;
+        break;
+      default:
+        llvm_unreachable("Invalid signed condition code");
+      }
+    }
+  }
+
+  if (CC == ISD::SETUGT) {
+    CC = ISD::SETULT;
+    std::swap(LHS, RHS);
+  } else if (CC == ISD::SETULE) {
+    CC = ISD::SETUGE;
+    std::swap(LHS, RHS);
+  }
+
+  unsigned EzhCC = IntCCToEZHCC(CC);
+  SDValue TargetCC = DAG.getTargetConstant(EzhCC, dl, MVT::i32);
+  SDValue Cmp = DAG.getNode(EZHISD::CMP, dl, MVT::Glue, LHS, RHS);
+  return DAG.getNode(EZHISD::BR_CC, dl, MVT::Other, Chain, Dest, TargetCC, Cmp);
+}
+
+#include "EZHInstrInfo.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+
+MachineBasicBlock *
+EZHTargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
+                                               MachineBasicBlock *BB) const {
+  const EZHSubtarget &STI =
+      MI.getParent()->getParent()->getSubtarget<EZHSubtarget>();
+  const TargetInstrInfo *TII = STI.getInstrInfo();
+  DebugLoc DL = MI.getDebugLoc();
+  MachineFunction *MF = BB->getParent();
+  MachineRegisterInfo &MRI = MF->getRegInfo();
+
+  switch (MI.getOpcode()) {
+  case EZH::PseudoCMP: {
+    Register DestReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+    BuildMI(*BB, MI, DL, TII->get(EZH::SUBrr_s_), DestReg)
+        .addReg(MI.getOperand(0).getReg())
+        .addReg(MI.getOperand(1).getReg());
+    MI.eraseFromParent();
+    return BB;
+  }
+  case EZH::PseudoCMPi: {
+    Register DestReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+    BuildMI(*BB, MI, DL, TII->get(EZH::SUBri_s_), DestReg)
+        .addReg(MI.getOperand(0).getReg())
+        .addImm(MI.getOperand(1).getImm());
+    MI.eraseFromParent();
+    return BB;
+  }
+  case EZH::PseudoBR_CC: {
+    unsigned CC = MI.getOperand(1).getImm();
+    MachineBasicBlock *TrueBB = MI.getOperand(0).getMBB();
+    MachineBasicBlock *FalseBB = nullptr;
+    for (auto *Succ : BB->successors()) {
+      if (Succ != TrueBB) {
+        FalseBB = Succ;
+        break;
+      }
+    }
+
+    unsigned Opc = EZH::GOTO; // fallback
+    switch (CC) {
+    case 1:
+      Opc = EZH::GOTO_ze;
+      break;
+    case 2:
+      Opc = EZH::GOTO_nz;
+      break;
+    case 3:
+      Opc = EZH::GOTO_po;
+      break;
+    case 4:
+      Opc = EZH::GOTO_ne;
+      break;
+    case 5:
+      Opc = EZH::GOTO_az;
+      break;
+    case 6:
+      Opc = EZH::GOTO_zb;
+      break;
+    case 7:
+      Opc = EZH::GOTO_ca;
+      break;
+    case 8:
+      Opc = EZH::GOTO_nc;
+      break;
+    case 9:
+      Opc = EZH::GOTO_cz;
+      break;
+    }
+    BuildMI(*BB, MI, DL, TII->get(Opc)).addMBB(TrueBB);
+    auto NextIT = next_nodbg(MachineBasicBlock::iterator(MI), BB->end());
+    if (FalseBB && (NextIT == BB->end() || !NextIT->isBranch()))
+      BuildMI(*BB, MI, DL, TII->get(EZH::GOTO)).addMBB(FalseBB);
+    MI.eraseFromParent();
+    return BB;
+  }
+  case EZH::PseudoSELECT_CC: {
+    unsigned DestReg = MI.getOperand(0).getReg();
+    unsigned TrueReg = MI.getOperand(1).getReg();
+    unsigned FalseReg = MI.getOperand(2).getReg();
+    ISD::CondCode CC = static_cast<ISD::CondCode>(MI.getOperand(3).getImm());
+
+    const BasicBlock *LLVM_BB = BB->getBasicBlock();
+    MachineFunction::iterator It = ++BB->getIterator();
+    MachineFunction *F = BB->getParent();
+
+    MachineBasicBlock *TrueBB = F->CreateMachineBasicBlock(LLVM_BB);
+    MachineBasicBlock *DoneBB = F->CreateMachineBasicBlock(LLVM_BB);
+    F->insert(It, TrueBB);
+    F->insert(It, DoneBB);
+
+    DoneBB->splice(DoneBB->end(), BB,
+                   std::next(MachineBasicBlock::iterator(MI)), BB->end());
+    DoneBB->transferSuccessorsAndUpdatePHIs(BB);
+
+    BB->addSuccessor(TrueBB);
+    BB->addSuccessor(DoneBB);
+    TrueBB->addSuccessor(DoneBB);
+
+    unsigned Opc = EZH::GOTO_ze;
+    switch (CC) {
+    case ISD::SETEQ:
+      Opc = EZH::GOTO_ze;
+      break;
+    case ISD::SETNE:
+      Opc = EZH::GOTO_nz;
+      break;
+    case ISD::SETLT:
+      Opc = EZH::GOTO_ne;
+      break;
+    case ISD::SETLE:
+      Opc = EZH::GOTO_zb;
+      break;
+    case ISD::SETGT:
+      Opc = EZH::GOTO_az;
+      break;
+    case ISD::SETGE:
+      Opc = EZH::GOTO_po;
+      break;
+    case ISD::SETULT:
+      Opc = EZH::GOTO_ca;
+      break;
+    case ISD::SETUGE:
+      Opc = EZH::GOTO_nc;
+      break;
+    case ISD::SETUGT:
+      std::swap(TrueReg, FalseReg);
+      Opc = EZH::GOTO_ca;
+      break;
+    case ISD::SETULE:
+      std::swap(TrueReg, FalseReg);
+      Opc = EZH::GOTO_nc;
+      break;
+    default:
+      Opc = EZH::GOTO_ze;
+      break;
+    }
+
+    BuildMI(*BB, MI, DL, TII->get(Opc)).addMBB(TrueBB);
+    BuildMI(*BB, MI, DL, TII->get(EZH::GOTO)).addMBB(DoneBB);
+
+    BuildMI(*DoneBB, DoneBB->begin(), DL, TII->get(EZH::PHI), DestReg)
+        .addReg(TrueReg)
+        .addMBB(TrueBB)
+        .addReg(FalseReg)
+        .addMBB(BB);
+
+    MI.eraseFromParent();
+    return DoneBB;
+  }
+  case EZH::EH_SjLj_SetJmp:
+    return emitEHSjLjSetJmp(MI, BB);
+  case EZH::EH_SjLj_LongJmp:
+    return emitEHSjLjLongJmp(MI, BB);
+  case EZH::EH_SjLj_Setup_Dispatch:
+    return emitSjLjDispatchBlock(MI, BB);
+  }
+
+  llvm_unreachable("Unexpected instr type to insert");
+}
+
+Register EZHTargetLowering::getExceptionPointerRegister(
+    const Constant *PersonalityFn) const {
+  return Register();
+}
+
+Register EZHTargetLowering::getExceptionSelectorRegister(
+    const Constant *PersonalityFn) const {
+  return Register();
+}
+
+MachineBasicBlock *
+EZHTargetLowering::emitEHSjLjSetJmp(MachineInstr &MI,
+                                    MachineBasicBlock *MBB) const {
+  DebugLoc DL = MI.getDebugLoc();
+  MachineFunction *MF = MBB->getParent();
+  const EZHSubtarget &STI = MF->getSubtarget<EZHSubtarget>();
+  const TargetInstrInfo *TII = STI.getInstrInfo();
+  MachineRegisterInfo &MRI = MF->getRegInfo();
+
+  Register DstReg = MI.getOperand(0).getReg();
+  Register BufReg = MI.getOperand(1).getReg();
+
+  // 1. EZH SjLj Block Splitting Flow:
+  // Split the basic block to materialize SjLj return targets:
+  //         [ThisMBB (BB)]
+  //               |
+  //       -------- --------
+  //      |                 |
+  //  [MainMBB]        [RestoreMBB] (Target PC label address taken)
+  //    v = 0             v = 1
+  //      |                 |
+  //       -------- --------
+  //               |
+  //           [SinkMBB]
+  //       v = phi(v_main, v_restore)
+
+  const BasicBlock *LLVM_BB = MBB->getBasicBlock();
+  MachineFunction::iterator It = ++MBB->getIterator();
+
+  MachineBasicBlock *ThisMBB = MBB;
+  MachineBasicBlock *MainMBB = MF->CreateMachineBasicBlock(LLVM_BB);
+  MachineBasicBlock *RestoreMBB = MF->CreateMachineBasicBlock(LLVM_BB);
+  MachineBasicBlock *SinkMBB = MF->CreateMachineBasicBlock(LLVM_BB);
+
+  MF->insert(It, MainMBB);
+  MF->insert(It, RestoreMBB);
+  MF->insert(It, SinkMBB);
+
+  RestoreMBB->setMachineBlockAddressTaken();
+
+  // Split the block at MI
+  SinkMBB->splice(SinkMBB->begin(), MBB,
+                  std::next(MachineBasicBlock::iterator(MI)), MBB->end());
+  SinkMBB->transferSuccessorsAndUpdatePHIs(MBB);
+
+  // Succ edges
+  ThisMBB->addSuccessor(MainMBB);
+  ThisMBB->addSuccessor(RestoreMBB);
+
+  // 2. Save the PC target address (taking address of RestoreMBB) at Offset 4 in
+  // BufReg
+  Register TargetPCReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+  // Programmatically allocate RestoreMBB as a custom EZHConstantPoolValue
+  Type *PtrTy = Type::getInt32Ty(MF->getFunction().getContext());
+  auto *CPV = new EZHConstantPoolValue(RestoreMBB, PtrTy);
+  unsigned CPI = MF->getConstantPool()->getConstantPoolIndex(CPV, Align(4));
+
+  BuildMI(*ThisMBB, MI, DL, TII->get(EZH::LOAD_CONSTANT), TargetPCReg)
+      .addConstantPoolIndex(CPI);
+
+  BuildMI(*ThisMBB, MI, DL, TII->get(EZH::STR))
+      .addReg(TargetPCReg)
+      .addReg(BufReg)
+      .addImm(4);
+
+  // 3. Save Frame Pointer R7 at Offset 0 in BufReg
+  BuildMI(*ThisMBB, MI, DL, TII->get(EZH::STR))
+      .addReg(EZH::R7)
+      .addReg(BufReg)
+      .addImm(0);
+
+  // 4. Save Stack Pointer SP at Offset 8 in BufReg
+  BuildMI(*ThisMBB, MI, DL, TII->get(EZH::STR))
+      .addReg(EZH::SP)
+      .addReg(BufReg)
+      .addImm(8);
+
+  // 5. Save Callee-Saved Register R6 (Base Pointer) at Offset 12 in BufReg
+  BuildMI(*ThisMBB, MI, DL, TII->get(EZH::STR))
+      .addReg(EZH::R6)
+      .addReg(BufReg)
+      .addImm(12);
+
+  // Safety Goto from ThisMBB directly into MainMBB
+  BuildMI(*ThisMBB, MI, DL, TII->get(EZH::GOTO)).addMBB(MainMBB);
+
+  // 5. MainMBB returns 0 on initialization
+  Register MainValReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+  BuildMI(MainMBB, DL, TII->get(EZH::MOVri__), MainValReg).addImm(0);
+  BuildMI(MainMBB, DL, TII->get(EZH::GOTO)).addMBB(SinkMBB);
+  MainMBB->addSuccessor(SinkMBB);
+
+  // 6. RestoreMBB returns 1 on builtin longjmp return
+  Register RestoreValReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+  BuildMI(RestoreMBB, DL, TII->get(EZH::MOVri__), RestoreValReg).addImm(1);
+  BuildMI(RestoreMBB, DL, TII->get(EZH::GOTO)).addMBB(SinkMBB);
+  RestoreMBB->addSuccessor(SinkMBB);
+
+  // 7. SinkMBB merges return statuses via PHI node
+  BuildMI(*SinkMBB, SinkMBB->begin(), DL, TII->get(EZH::PHI), DstReg)
+      .addReg(MainValReg)
+      .addMBB(MainMBB)
+      .addReg(RestoreValReg)
+      .addMBB(RestoreMBB);
+
+  MI.eraseFromParent();
+  return SinkMBB;
+}
+
+MachineBasicBlock *
+EZHTargetLowering::emitEHSjLjLongJmp(MachineInstr &MI,
+                                     MachineBasicBlock *MBB) const {
+  DebugLoc DL = MI.getDebugLoc();
+  MachineFunction *MF = MBB->getParent();
+  const EZHSubtarget &STI = MF->getSubtarget<EZHSubtarget>();
+  const TargetInstrInfo *TII = STI.getInstrInfo();
+  MachineRegisterInfo &MRI = MF->getRegInfo();
+
+  Register BufReg = MI.getOperand(0).getReg();
+
+  Register TargetPCReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+
+  // EZH SjLj Restore:
+  // 1. Load Target PC from Offset 4 (jbuf[1])
+  BuildMI(*MBB, MI, DL, TII->get(EZH::LDR), TargetPCReg)
+      .addReg(BufReg)
+      .addImm(4);
+
+  // 2. Load Frame Pointer R7 from Offset 0 (jbuf[0])
+  BuildMI(*MBB, MI, DL, TII->get(EZH::LDR), EZH::R7).addReg(BufReg).addImm(0);
+
+  // 3. Load Stack Pointer SP from Offset 8
+  BuildMI(*MBB, MI, DL, TII->get(EZH::LDR), EZH::SP).addReg(BufReg).addImm(8);
+
+  // 4. Load Callee-Saved Register R6 (Base Pointer) from Offset 12
+  BuildMI(*MBB, MI, DL, TII->get(EZH::LDR), EZH::R6).addReg(BufReg).addImm(12);
+
+  // 5. Jump to restored PC target natively!
+  BuildMI(*MBB, MI, DL, TII->get(EZH::GOTO_REG)).addReg(TargetPCReg);
+
+  MI.eraseFromParent();
+  return MBB;
+}
+
+SDValue EZHTargetLowering::LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const {
+  const EZHSubtarget &ASTI =
+      DAG.getMachineFunction().getSubtarget<EZHSubtarget>();
+  const EZHRegisterInfo &RI = *ASTI.getRegisterInfo();
+  MachineFunction &MF = DAG.getMachineFunction();
+  MachineFrameInfo &MFI = MF.getFrameInfo();
+  MFI.setFrameAddressIsTaken(true);
+
+  EVT VT = Op.getValueType();
+  SDLoc dl(Op);
+  unsigned Depth = Op.getConstantOperandVal(0);
+  Register FrameReg = RI.getFrameRegister(MF);
+  SDValue FrameAddr = DAG.getCopyFromReg(DAG.getEntryNode(), dl, FrameReg, VT);
+  while (Depth--)
+    FrameAddr = DAG.getLoad(VT, dl, DAG.getEntryNode(), FrameAddr,
+                            MachinePointerInfo());
+  return FrameAddr;
+}
+
+SDValue EZHTargetLowering::LowerDYNAMIC_STACKALLOC(SDValue Op,
+                                                   SelectionDAG &DAG) const {
+  SDLoc dl(Op);
+
+  // Inputs: Chain (0), Size (1), Alignment (2)
+  SDValue Chain = Op.getOperand(0);
+  SDValue Size = Op.getOperand(1);
+  Align Alignment = cast<ConstantSDNode>(Op.getOperand(2))->getAlignValue();
+
+  // 1. Get current stack pointer SP
+  SDValue SP = DAG.getCopyFromReg(Chain, dl, EZH::SP, MVT::i32);
+  Chain = SP.getValue(1);
+
+  // 2. Subtract size from SP to allocate space down the stack
+  SDValue NewSP = DAG.getNode(ISD::SUB, dl, MVT::i32, SP, Size);
+
+  // 3. Enforce strict EZH stack alignment boundary
+  // Align dynamic stack allocations to at least 16 bytes to satisfy max
+  // structural alignments
+  uint64_t AlignVal = std::max<uint64_t>(16, Alignment.value());
+  NewSP = DAG.getNode(ISD::AND, dl, MVT::i32, NewSP,
+                      DAG.getSignedConstant(-AlignVal, dl, MVT::i32));
+
+  // 4. Copy new aligned pointer back to EZH SP
+  Chain = DAG.getCopyToReg(Chain, dl, EZH::SP, NewSP);
+
+  // Return the new SP and updated Chain
+  SDValue Ops[2] = {NewSP, Chain};
+  return DAG.getMergeValues(Ops, dl);
+}
+
+SDValue EZHTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
+                                                   SelectionDAG &DAG) const {
+  SDLoc dl(Op);
+  unsigned IntNo = Op.getConstantOperandVal(0);
+  switch (IntNo) {
+  default:
+    return SDValue(); // Don't custom lower most intrinsics.
+  case Intrinsic::eh_sjlj_lsda: {
+    MachineFunction &MF = DAG.getMachineFunction();
+    MVT VT = Op.getSimpleValueType();
+
+    // 1. Generate symbol name "GCC_except_tableXX" and persist it in the
+    // MCContext string pool
+    MCSymbol *LSDASym = MF.getContext().getOrCreateSymbol(
+        Twine("GCC_except_table") + Twine(MF.getFunctionNumber()));
+    const char *Name = LSDASym->getName().data();
+
+    // 2. Wrap the symbol name in EZHConstantPoolValue to force loading its
+    // absolute address!
+    auto *CPV =
+        new EZHConstantPoolValue(Name, Type::getInt32Ty(*DAG.getContext()));
+    SDValue CPAddr = DAG.getTargetConstantPool(CPV, VT, Align(4));
+
+    // 3. Load the address of the exception table from the constant pool
+    SDValue Ops[] = {CPAddr, DAG.getEntryNode()};
+    return SDValue(
+        DAG.getMachineNode(EZH::LOAD_CONSTANT, dl, MVT::i32, MVT::Other, Ops),
+        0);
+  }
+  }
+}
+
+MachineBasicBlock *
+EZHTargetLowering::emitSjLjDispatchBlock(MachineInstr &MI,
+                                         MachineBasicBlock *BB) const {
+  DebugLoc DL = MI.getDebugLoc();
+  MachineFunction *MF = BB->getParent();
+  MachineFrameInfo &MFI = MF->getFrameInfo();
+  MachineRegisterInfo &MRI = MF->getRegInfo();
+  const EZHSubtarget &STI = MF->getSubtarget<EZHSubtarget>();
+  const TargetInstrInfo *TII = STI.getInstrInfo();
+  int FI = MFI.getFunctionContextIndex();
+
+  // 1. Find all landing pads and their associated call site numbers.
+  DenseMap<unsigned, SmallVector<MachineBasicBlock *, 2>> CallSiteNumToLPad;
+  unsigned MaxCSNum = 0;
+  for (auto &MBB : *MF) {
+    if (!MBB.isEHPad())
+      continue;
+
+    auto FirstI = MBB.getFirstNonDebugInstr();
+    if (FirstI == MBB.end())
+      continue;
+    assert(FirstI->isEHLabel() && "expected EH_LABEL");
+    MCSymbol *Sym = FirstI->getOperand(0).getMCSymbol();
+
+    if (!MF->hasCallSiteLandingPad(Sym))
+      continue;
+
+    for (unsigned CSI : MF->getCallSiteLandingPad(Sym)) {
+      CallSiteNumToLPad[CSI].push_back(&MBB);
+      MaxCSNum = std::max(MaxCSNum, CSI);
+    }
+  }
+
+  assert(MaxCSNum > 0 &&
+         "No landing pad destinations for the dispatch jump table!");
+
+  // 2. Create the dispatch, continuation, and trap basic blocks.
+  MachineBasicBlock *DispatchBB = MF->CreateMachineBasicBlock();
+  DispatchBB->setIsEHPad(true);
+  DispatchBB->setMachineBlockAddressTaken();
+
+  MachineBasicBlock *DispContBB = MF->CreateMachineBasicBlock();
+
+  MachineBasicBlock *TrapBB = MF->CreateMachineBasicBlock();
+
+  // Insert them at the end of the function in layout order.
+  MF->insert(MF->end(), TrapBB);
+  MF->insert(MF->end(), DispatchBB);
+  MF->insert(MF->end(), DispContBB);
+
+  // 2.5 Update CFG: Replace landing pad successors in invoke blocks with
+  // DispatchBB
+  SmallPtrSet<MachineBasicBlock *, 16> InvokeBBs;
+  for (unsigned CSI = 1; CSI <= MaxCSNum; ++CSI) {
+    for (auto *LPad : CallSiteNumToLPad[CSI]) {
+      for (auto *Pred : LPad->predecessors()) {
+        InvokeBBs.insert(Pred);
+      }
+    }
+  }
+
+  for (MachineBasicBlock *InvokeBB : InvokeBBs) {
+    SmallVector<MachineBasicBlock *, 4> Successors(InvokeBB->successors());
+    while (!Successors.empty()) {
+      MachineBasicBlock *SMBB = Successors.pop_back_val();
+      if (SMBB->isEHPad()) {
+        InvokeBB->removeSuccessor(SMBB);
+      }
+    }
+    InvokeBB->addSuccessor(DispatchBB, BranchProbability::getZero());
+    InvokeBB->normalizeSuccProbs();
+  }
+
+  // TrapBB just loops forever.
+  BuildMI(TrapBB, DL, TII->get(EZH::GOTO)).addMBB(TrapBB);
+  TrapBB->addSuccessor(TrapBB);
+
+  // 3. Load the address of DispatchBB and store it to jbuf[0] (offset 32 of
+  // context) in the entry block.
+  Register DispatchPCReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+  Type *PtrTy = Type::getInt32Ty(MF->getFunction().getContext());
+  auto *CPV = new EZHConstantPoolValue(DispatchBB, PtrTy);
+  unsigned CPI = MF->getConstantPool()->getConstantPoolIndex(CPV, Align(4));
+
+  BuildMI(*BB, MI, DL, TII->get(EZH::LOAD_CONSTANT), DispatchPCReg)
+      .addConstantPoolIndex(CPI);
+
+  BuildMI(*BB, MI, DL, TII->get(EZH::STR))
+      .addReg(DispatchPCReg)
+      .addFrameIndex(FI)
+      .addImm(36); // Offset 36 is jbuf[1]
+
+  // Save Callee-Saved Register R6 (Base Pointer) at Offset 44 in function
+  // context (jbuf[3])
+  BuildMI(*BB, MI, DL, TII->get(EZH::STR))
+      .addReg(EZH::R6)
+      .addFrameIndex(FI)
+      .addImm(44); // Offset 44 is jbuf[3]
+
+  // 4. In DispatchBB, load the call_site value.
+  Register CSReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+  BuildMI(DispatchBB, DL, TII->get(EZH::LDR), CSReg)
+      .addFrameIndex(FI)
+      .addImm(4); // offset of call_site in context
+
+  // 5. Build LPadList with placeholders for holes
+  std::vector<MachineBasicBlock *> LPadList;
+  LPadList.reserve(MaxCSNum);
+  for (unsigned I = 1; I <= MaxCSNum; ++I) {
+    SmallVectorImpl<MachineBasicBlock *> &MBBList = CallSiteNumToLPad[I];
+    if (!MBBList.empty())
+      LPadList.push_back(MBBList[0]); // Take first one
+    else
+      LPadList.push_back(TrapBB); // Placeholder for inactive CSI
+  }
+
+  // 6. Create Jump Table
+  MachineJumpTableInfo *MJTI =
+      MF->getOrCreateJumpTableInfo(MachineJumpTableInfo::EK_BlockAddress);
+  unsigned JTI = MJTI->createJumpTableIndex(LPadList);
+
+  // 7. Bounds check in DispatchBB:
+  // IndexReg = CSReg
+  // If IndexReg >= MaxCSNum (unsigned) -> TrapBB (using GOTO_nc)
+  // Else -> DispContBB (fallthrough)
+  Register IndexReg = CSReg;
+
+  Register TempReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+  BuildMI(DispatchBB, DL, TII->get(EZH::SUBri_s_), TempReg)
+      .addReg(IndexReg)
+      .addImm(MaxCSNum);
+
+  BuildMI(DispatchBB, DL, TII->get(EZH::GOTO_nc)).addMBB(TrapBB);
+  DispatchBB->addSuccessor(TrapBB);
+  DispatchBB->addSuccessor(DispContBB);
+
+  // 8. In DispContBB: Load JT address and do indirect branch
+  auto *JT_CPV = new EZHConstantPoolValue(
+      JTI, Type::getInt32Ty(MF->getFunction().getContext()));
+  unsigned JT_CPI =
+      MF->getConstantPool()->getConstantPoolIndex(JT_CPV, Align(4));
+  Register JTReg = MRI.createVirtualRegister(&EZH::GPRRegClass);
+  BuildMI(DispContBB, DL, TII->get(EZH::LOAD_CONSTANT), JTReg)
+      .addConstantPoolIndex(JT_CPI);
+
+  BuildMI(DispContBB, DL, TII->get(EZH::PseudoBR_JT))
+      .addReg(JTReg)
+      .addReg(IndexReg)
+      .addJumpTableIndex(JTI);
+
+  // Update successors for DispContBB (unique only)
+  SmallPtrSet<MachineBasicBlock *, 8> UniqueSuccs;
+  for (auto *LPad : LPadList) {
+    if (UniqueSuccs.insert(LPad).second) {
+      DispContBB->addSuccessor(LPad);
+    }
+  }
+
+  // Mark all former landing pads as non-landing pads. The dispatch is the only
+  // landing pad now.
+  for (unsigned CSI = 1; CSI <= MaxCSNum; ++CSI)
+    for (auto *LPad : CallSiteNumToLPad[CSI])
+      LPad->setIsEHPad(false);
+
+  MI.eraseFromParent();
+  return BB;
+}
diff --git a/llvm/lib/Target/EZH/EZHISelLowering.h b/llvm/lib/Target/EZH/EZHISelLowering.h
new file mode 100644
index 0000000000000..93b40cbf2eed0
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHISelLowering.h
@@ -0,0 +1,135 @@
+//===-- EZHISelLowering.h - EZH DAG Lowering Interface -....-*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHISELLOWERING_H
+#define LLVM_LIB_TARGET_EZH_EZHISELLOWERING_H
+
+#include "EZH.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/CodeGen/SelectionDAG.h"
+#include "llvm/CodeGen/TargetLowering.h"
+#include <optional>
+#include <utility>
+#include <vector>
+
+namespace llvm {
+
+namespace EZHISD {
+enum NodeType : unsigned {
+  FIRST_NUMBER = ISD::BUILTIN_OP_END,
+  RET_GLUE_INTERNAL,
+  CALL,
+  CMP,
+  BR_CC,
+  SELECT_CC,
+  BTOG,
+  BR_JT,
+  EH_SJLJ_SETJMP,
+  EH_SJLJ_LONGJMP,
+  EH_SJLJ_SETUP_DISPATCH,
+};
+} // namespace EZHISD
+
+class EZHSubtarget;
+struct EZHRegisterInfo;
+
+/// EZH DAG Lowering Interface.
+class EZHTargetLowering : public TargetLowering {
+public:
+  EZHTargetLowering(const TargetMachine &TM, const EZHSubtarget &STI);
+
+  SDValue LowerOperation(SDValue Op, SelectionDAG &DAG) const override;
+
+  void ReplaceNodeResults(SDNode *N, SmallVectorImpl<SDValue> &Results,
+                          SelectionDAG &DAG) const override;
+
+  SDValue LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerConstantPool(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerBlockAddress(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerJumpTable(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerBR_JT(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerBR_CC(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerVASTART(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerVAARG(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerConstant(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const;
+  SDValue LowerDYNAMIC_STACKALLOC(SDValue Op, SelectionDAG &DAG) const;
+
+  EVT getSetCCResultType(const DataLayout &DL, LLVMContext &Context,
+                         EVT VT) const override;
+
+  Register getRegisterByName(const char *RegName, LLT Ty,
+                             const MachineFunction &MF) const override;
+
+  Register
+  getExceptionPointerRegister(const Constant *PersonalityFn) const override;
+  Register
+  getExceptionSelectorRegister(const Constant *PersonalityFn) const override;
+
+  ConstraintType getConstraintType(StringRef Constraint) const override;
+  std::pair<unsigned, const TargetRegisterClass *>
+  getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
+                               StringRef Constraint, MVT VT) const override;
+  void LowerAsmOperandForConstraint(SDValue Op, StringRef Constraint,
+                                    std::vector<SDValue> &Ops,
+                                    SelectionDAG &DAG) const override;
+
+  const char *getTargetNodeName(unsigned Opcode) const override;
+  MachineBasicBlock *
+  EmitInstrWithCustomInserter(MachineInstr &MI,
+                              MachineBasicBlock *BB) const override;
+  MachineBasicBlock *emitEHSjLjSetJmp(MachineInstr &MI,
+                                      MachineBasicBlock *MBB) const;
+  MachineBasicBlock *emitEHSjLjLongJmp(MachineInstr &MI,
+                                       MachineBasicBlock *MBB) const;
+  MachineBasicBlock *emitSjLjDispatchBlock(MachineInstr &MI,
+                                           MachineBasicBlock *MBB) const;
+
+  bool CanLowerReturn(CallingConv::ID CallConv, MachineFunction &MF,
+                      bool IsVarArg,
+                      const SmallVectorImpl<ISD::OutputArg> &Outs,
+                      LLVMContext &Context, const Type *RetTy) const override;
+
+  SDValue LowerCall(TargetLowering::CallLoweringInfo &CLI,
+                    SmallVectorImpl<SDValue> &InVals) const override;
+
+  SDValue LowerINTRINSIC_WO_CHAIN(SDValue Op, SelectionDAG &DAG) const;
+
+  bool getPostIndexedAddressParts(SDNode *N, SDNode *Op, SDValue &Base,
+                                  SDValue &Offset, ISD::MemIndexedMode &AM,
+                                  SelectionDAG &DAG) const override;
+
+  bool getPreIndexedAddressParts(SDNode *N, SDValue &Base, SDValue &Offset,
+                                 ISD::MemIndexedMode &AM,
+                                 SelectionDAG &DAG) const override;
+
+  bool shouldReduceLoadWidth(
+      SDNode *Load, ISD::LoadExtType ExtTy, EVT NewVT,
+      std::optional<unsigned> ByteOffset = std::nullopt) const override;
+
+  SDValue LowerFormalArguments(SDValue Chain, CallingConv::ID CallConv,
+                               bool IsVarArg,
+                               const SmallVectorImpl<ISD::InputArg> &Ins,
+                               const SDLoc &DL, SelectionDAG &DAG,
+                               SmallVectorImpl<SDValue> &InVals) const override;
+
+  SDValue LowerReturn(SDValue Chain, CallingConv::ID CallConv, bool IsVarArg,
+                      const SmallVectorImpl<ISD::OutputArg> &Outs,
+                      const SmallVectorImpl<SDValue> &OutVals, const SDLoc &DL,
+                      SelectionDAG &DAG) const override;
+
+  SDValue LowerCallResult(SDValue Chain, SDValue InGlue,
+                          CallingConv::ID CallConv, bool IsVarArg,
+                          const SmallVectorImpl<ISD::InputArg> &Ins,
+                          const SDLoc &DL, SelectionDAG &DAG,
+                          SmallVectorImpl<SDValue> &InVals) const;
+};
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHISELLOWERING_H
diff --git a/llvm/lib/Target/EZH/EZHInstrFormats.td b/llvm/lib/Target/EZH/EZHInstrFormats.td
new file mode 100644
index 0000000000000..f63d94f2825b2
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHInstrFormats.td
@@ -0,0 +1,409 @@
+//===-- EZHInstrFormats.td - EZH Instruction Formats ---*- tablegen -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+class EZHInst<dag outs, dag ins, string asmstr, list<dag> pattern>
+    : Instruction {
+  field bits<32> Inst;
+
+  let Namespace = "EZH";
+  dag OutOperandList = outs;
+  dag InOperandList = ins;
+  let AsmString = asmstr;
+  let Pattern = pattern;
+
+  let Size = 4;
+
+  // Basic fields
+  bits<5> Opcode;
+  bits<4> Cond = 0;
+  bits<1> S = 0; // Set flags
+
+  let Inst{4-0} = Opcode;
+  let Inst{8-5} = Cond;
+  let Inst{9}   = S;
+
+  let Predicates = [];
+}
+
+// Format for ALU instructions (Register-Register)
+class EZHInstALU<bits<5> op, bits<1> invert, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rd;
+  bits<4> Rs1;
+  bits<4> Rs2;
+  let hasSideEffects = 1;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs1;
+  let Inst{18}    = 0; // Register mode
+  let Inst{19}    = invert;
+  let Inst{23-20} = Rs2;
+}
+
+// Format for ALU instructions (Register-Immediate)
+
+// Format for ALU instructions with shifted register
+class EZHInstALUShifted<bits<5> op, bits<3> sh_type, bits<1> invert, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rd;
+  bits<4> Rs1;
+  bits<4> Rs2;
+  bits<5> ShAmt;
+  let hasSideEffects = 1;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs1;
+  let Inst{23-20} = Rs2;
+  let Inst{28-24} = ShAmt;
+  let Inst{31-29} = sh_type;
+  let Inst{19}    = invert;
+  let Inst{18}    = 0;
+}
+class EZHInstALUI<bits<5> op, bits<1> invert, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rd;
+  bits<4> Rs1;
+  bits<11> Imm;
+  let hasSideEffects = 1;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs1;
+  let Inst{18}    = 1; // Immediate mode
+  let Inst{19}    = 0; // Fix disassembly collision with EZHInstALUIShifted
+  let Inst{31}    = invert;
+  let Inst{30-20} = Imm;
+}
+
+// Format for Flip ALU instructions
+class EZHInstFlipALU<bits<3> alu_op, bits<1> is_asr, bits<1> is_fbit, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x11;
+  bits<4> Rd;
+  bits<4> Rs1;
+  bits<4> Rs2;
+  bits<5> ShAmt;
+  let hasSideEffects = 1;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs1;
+  let Inst{23-20} = Rs2;
+  let Inst{28-24} = ShAmt;
+  let Inst{31-29} = alu_op;
+  let Inst{19}    = is_asr;
+  let Inst{18}    = is_fbit;
+}
+
+class EZHInstALUI12<bits<5> op, bits<1> invert, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rd;
+  bits<4> Rs1;
+  bits<12> Imm;
+  let hasSideEffects = 1;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs1;
+  let Inst{18}    = 1; // Immediate mode
+  let Inst{19}    = invert;
+  let Inst{31-20} = Imm;
+}
+
+class EZHInstALUIShifted<bits<5> op, bits<1> invert, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rd;
+  bits<5> ShAmt;
+  bits<11> Imm;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = ShAmt{3-0};
+  let Inst{18}    = 1; // Immediate mode
+  let Inst{19}    = ShAmt{4};
+  let Inst{30-20} = Imm;
+  let Inst{31}    = invert;
+}
+
+// Load/Store format
+class EZHInstMem<bits<5> op, bits<1> isStore, bits<1> wordSize, bits<1> signedAccess, bits<1> prePost, bits<1> update, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rd;
+  bits<4> Rn;
+  bits<8> Offset;
+  bits<1> PrePost = prePost;
+  bits<1> Update = update;
+
+  let Inst{13-10} = !if(isStore, {0, 0, 0, Update}, Rd);
+  let Inst{17-14} = Rn;
+  let Inst{18}    = wordSize;
+  let Inst{19}    = PrePost;
+  let Inst{23-20} = !if(isStore, Rd, {0, 0, signedAccess, Update});
+  let Inst{31-24} = Offset;
+}
+
+// Format for ANDOR
+class EZHInstAndOr<dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x16;
+  bits<4> Rd;
+  bits<4> Rs1;
+  bits<4> Rs2;
+  bits<4> Rs3;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs1;
+  let Inst{23-20} = Rs2;
+  let Inst{27-24} = Rs3;
+}
+
+// Format for Bit Manipulation
+class EZHInstBit<bits<2> op_type, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x18;
+  bits<4> Rd;
+  bits<4> Rs;
+  bits<5> Bit5;
+  bits<1> S_bit;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs;
+  let Inst{18}    = 0;
+  let Inst{23-19} = 0;
+  let Inst{28-24} = Bit5;
+  let Inst{30-29} = op_type;
+  let Inst{31}    = S_bit; // 1 for BTST, BSET, BTOG. 0 for BCLR.
+}
+
+class EZHInstBitReg<bits<2> op_type, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x18;
+  bits<4> Rd;
+  bits<4> Rs;
+  bits<4> Rbit;
+  bits<1> S_bit;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs;
+  let Inst{23-20} = Rbit;
+  let Inst{18}    = 1;
+  let Inst{19}    = 0;
+  let Inst{28-24} = 0;
+  let Inst{30-29} = op_type;
+  let Inst{31}    = S_bit; // 1 for BTST, BSET, BTOG. 0 for BCLR.
+}
+
+// Format for Flip Endian / Flip Bitwise
+class EZHInstFEND<bits<2> type_bits, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x11;
+  bits<4> Rd;
+  bits<4> Rs;
+  bits<5> ShAmt;
+
+  let Inst{13-10} = Rd;
+  let Inst{23-20} = Rs;
+  let Inst{19-18} = type_bits;
+  let Inst{28-24} = ShAmt;
+}
+
+// Format for Register Shift (RLSL, RLSR, RASR, RROR)
+class EZHInstRegShift<bits<2> sh_type, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x19;
+  bits<4> Rd;
+  bits<4> Rs;
+  bits<5> Rshift; // Only using 4 bits for register, but macro takes 5
+
+  let Inst{13-10} = Rd;
+  let Inst{23-20} = Rs;
+  let Inst{19-18} = sh_type;
+  let Inst{28-24} = Rshift;
+}
+
+// Format for Tight Loop
+class EZHInstTightLoop<dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x1A;
+  bits<4> Rend;
+  bits<4> Rcount;
+
+  let Inst{17-14} = Rend;
+  let Inst{23-20} = Rcount;
+}
+
+// Format for Modify GPO Byte
+class EZHInstModifyGPOByte<dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x1E;
+  bits<8> AndMask;
+  bits<8> OrMask;
+  bits<8> XorMask;
+
+  let Inst{15-8}  = AndMask;
+  let Inst{23-16} = OrMask;
+  let Inst{31-24} = XorMask;
+}
+class EZHInstSingle<bits<5> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+}
+
+// Reg Offset Load/Store
+class EZHInstMemReg<bits<5> op, bits<1> isStore, bits<1> wordSize, bits<1> signedAccess, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rd;
+  bits<4> Rn;
+  bits<4> Rm;
+
+  let Inst{13-10} = !if(isStore, 0, Rd);
+  let Inst{17-14} = Rn; // source/raddr
+  let Inst{23-20} = !if(isStore, Rd, {0, 0, signedAccess, 0}); // rdata for store
+  let Inst{27-24} = Rm; // roffset
+  let Inst{18}    = wordSize;
+  let Inst{30}    = isStore;
+}
+
+// Format for CALL
+class EZHInstCall<bits<5> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<30> addr;
+  let Inst{31-2} = addr;
+  let Inst{1-0} = 3;
+}
+
+// Goto format
+class EZHInstGoto<bits<1> isL, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x15;
+  bits<21> addr;
+  let Inst{8-5} = Cond;
+  let Inst{9} = 1;
+  let Inst{10} = isL;
+  let Inst{31-11} = addr;
+}
+
+class EZHInstGotoReg<bits<1> isL, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x15;
+  bits<4> raddr;
+  let Inst{8-5} = Cond;
+  let Inst{9} = 0;
+  let Inst{10} = isL;
+  let Inst{17-14} = raddr;
+  let Inst{31-18} = 0;
+  let Inst{13-11} = 0;
+}
+
+// Shift format
+class EZHInstShift<bits<2> sh_type, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x10;
+  bits<4> Rd;
+  bits<4> Rs;
+  bits<5> ShAmt;
+
+  let Inst{13-10} = Rd;
+  let Inst{23-20} = Rs;
+  let Inst{19-18} = sh_type;
+  let Inst{28-24} = ShAmt;
+  let Inst{31-29} = 0;
+  let Inst{17-14} = 0;
+}
+
+// Per Read format
+class EZHInstPerRead<bits<5> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rd;
+  bits<20> addr;
+  let Inst{13-10} = Rd;
+  let Inst{31-14} = addr{19-2};
+}
+
+// Per Write format
+class EZHInstPerWrite<bits<5> op, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = op;
+  bits<4> Rs;
+  bits<20> addr;
+  let Inst{23-20} = Rs;
+  let Inst{31-24} = addr{19-12};
+  let Inst{19-10} = addr{11-2};
+}
+
+
+class EZHInstShiftALU<bits<3> alu_op, bits<2> sh_type, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x10;
+  bits<4> Rd;
+  bits<4> Rs1;
+  bits<4> Rs2;
+  bits<5> ShAmt;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs1;
+  let Inst{23-20} = Rs2;
+  let Inst{28-24} = ShAmt;
+  let Inst{19}    = sh_type{0}; // LSR/ROR is 1, LSL/ASR is 0
+  let Inst{18}    = sh_type{1}; // ASR/ROR is 1, LSL/LSR is 0
+  let Inst{31-29} = alu_op;
+}
+
+class EZHInstRegShiftALU<bits<3> alu_op, bits<2> sh_type, bits<1> is_post, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x19;
+  bits<4> Rd;
+  bits<4> Rs1;
+  bits<4> Rs2;
+  bits<5> Rshift;
+
+  let Inst{13-10} = Rd;
+  let Inst{17-14} = Rs1;
+  let Inst{23-20} = Rs2;
+  let Inst{26-24} = Rshift{2-0};
+  let Inst{27}    = Rshift{3};
+  let Inst{28}    = is_post;
+  let Inst{19}    = sh_type{0}; // LSR/ROR is 1, LSL/ASR is 0
+  let Inst{18}    = sh_type{1}; // ASR/ROR is 1, LSL/LSR is 0
+  let Inst{31-29} = alu_op;
+}
+
+class EZHInstVectoredHold<bits<1> is_nra, bits<1> is_lv, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x1C;
+  bits<4> table;
+  let Inst{13-10} = table;
+  let Inst{23-20} = table;
+  let Inst{15} = 0;
+  let Inst{18} = is_nra;
+  let Inst{19} = is_lv;
+  let Inst{17-16} = 0;
+  let Inst{14} = 0;
+  let Inst{31-24} = 0;
+}
+
+class EZHInstAccVectoredHold<bits<1> is_nra, bits<1> is_lv, dag outs, dag ins, string asmstr, list<dag> pattern>
+    : EZHInst<outs, ins, asmstr, pattern> {
+  let Opcode = 0x1C;
+  bits<4> table;
+  bits<8> vectors;
+  let Inst{13-10} = table;
+  let Inst{23-20} = table;
+  let Inst{31-24} = vectors;
+  let Inst{15} = 0;
+  let Inst{18} = is_nra;
+  let Inst{19} = is_lv;
+  let Inst{17-16} = 0;
+  let Inst{14} = 0;
+  let Inst{9} = 1;
+}
diff --git a/llvm/lib/Target/EZH/EZHInstrInfo.cpp b/llvm/lib/Target/EZH/EZHInstrInfo.cpp
new file mode 100644
index 0000000000000..50824604cc501
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHInstrInfo.cpp
@@ -0,0 +1,495 @@
+//===-- EZHInstrInfo.cpp - EZH Instruction Information ------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the EZH implementation of the TargetInstrInfo class.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHInstrInfo.h"
+#include "EZHCondCode.h"
+#include "EZHSubtarget.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/CodeGen/MachineConstantPool.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+#include "llvm/CodeGen/MachineJumpTableInfo.h"
+#include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/MC/MCAsmInfo.h"
+#include "llvm/Support/Alignment.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Target/TargetMachine.h"
+
+using namespace llvm;
+
+#define GET_INSTRINFO_CTOR_DTOR
+#include "EZHGenInstrInfo.inc"
+
+#define DEBUG_TYPE "ezh-instr-info"
+
+#define MAP_CC(OP)                                                             \
+  case EZH::OP##__:                                                            \
+    switch (CC) {                                                              \
+    case LPCC::ICC_EU:                                                         \
+      return Opc;                                                              \
+    case LPCC::ICC_ZE:                                                         \
+      return EZH::OP##___ze;                                                   \
+    case LPCC::ICC_NZ:                                                         \
+      return EZH::OP##___nz;                                                   \
+    case LPCC::ICC_PO:                                                         \
+      return EZH::OP##___po;                                                   \
+    case LPCC::ICC_NE:                                                         \
+      return EZH::OP##___ne;                                                   \
+    case LPCC::ICC_AZ:                                                         \
+      return EZH::OP##___az;                                                   \
+    case LPCC::ICC_ZB:                                                         \
+      return EZH::OP##___zb;                                                   \
+    case LPCC::ICC_CA:                                                         \
+      return EZH::OP##___ca;                                                   \
+    case LPCC::ICC_NC:                                                         \
+      return EZH::OP##___nc;                                                   \
+    case LPCC::ICC_CZ:                                                         \
+      return EZH::OP##___cz;                                                   \
+    case LPCC::ICC_SPO:                                                        \
+      return EZH::OP##___spo;                                                  \
+    case LPCC::ICC_SNE:                                                        \
+      return EZH::OP##___sne;                                                  \
+    case LPCC::ICC_NBS:                                                        \
+      return EZH::OP##___nbs;                                                  \
+    case LPCC::ICC_NEX:                                                        \
+      return EZH::OP##___nex;                                                  \
+    case LPCC::ICC_BS:                                                         \
+      return EZH::OP##___bs;                                                   \
+    case LPCC::ICC_EX:                                                         \
+      return EZH::OP##___ex;                                                   \
+    case LPCC::UNKNOWN:                                                        \
+      return Opc;                                                              \
+    }                                                                          \
+    break;
+
+static unsigned getConditionalOpcode(unsigned Opc, LPCC::CondCode CC) {
+  if (CC == LPCC::ICC_EU)
+    return Opc;
+
+  switch (Opc) {
+    MAP_CC(ADDrr)
+    MAP_CC(ADDri)
+    MAP_CC(SUBrr)
+    MAP_CC(SUBri)
+    MAP_CC(ANDrr)
+    MAP_CC(ANDri)
+    MAP_CC(ORrr)
+    MAP_CC(ORri)
+    MAP_CC(XORrr)
+    MAP_CC(XORri)
+    MAP_CC(LSLi)
+    MAP_CC(LSRi)
+    MAP_CC(ASRi)
+    MAP_CC(RORi)
+    MAP_CC(MOVrr)
+    MAP_CC(MOVri)
+  default:
+    return Opc;
+  }
+  return Opc;
+}
+#undef MAP_CC
+
+EZHInstrInfo::EZHInstrInfo(const EZHSubtarget &STI)
+    : EZHGenInstrInfo(STI, RegisterInfo, EZH::ADJCALLSTACKDOWN,
+                      EZH::ADJCALLSTACKUP),
+      RegisterInfo() {}
+
+void EZHInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
+                               MachineBasicBlock::iterator Position,
+                               const DebugLoc &DL, Register DestinationRegister,
+                               Register SourceRegister, bool KillSource,
+                               bool RenamableDest, bool RenamableSrc) const {
+  if (!EZH::GPRAllRegClass.contains(DestinationRegister, SourceRegister)) {
+    llvm_unreachable("Impossible reg-to-reg copy");
+  }
+
+  BuildMI(MBB, Position, DL, get(EZH::MOVrr__), DestinationRegister)
+      .addReg(SourceRegister, getKillRegState(KillSource));
+}
+
+void EZHInstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
+                                       MachineBasicBlock::iterator Position,
+                                       Register SourceRegister, bool IsKill,
+                                       int FrameIndex,
+                                       const TargetRegisterClass *RegisterClass,
+                                       Register /*VReg*/,
+                                       MachineInstr::MIFlag Flags) const {
+  DebugLoc DL;
+  if (Position != MBB.end()) {
+    DL = Position->getDebugLoc();
+  }
+
+  if (!EZH::GPRAllRegClass.hasSubClassEq(RegisterClass)) {
+    llvm_unreachable("Can't store this register to stack slot");
+  }
+  BuildMI(MBB, Position, DL, get(EZH::STR))
+      .addReg(SourceRegister, getKillRegState(IsKill))
+      .addFrameIndex(FrameIndex)
+      .addImm(0)
+      .setMIFlags(Flags);
+}
+
+void EZHInstrInfo::loadRegFromStackSlot(
+    MachineBasicBlock &MBB, MachineBasicBlock::iterator Position,
+    Register DestinationRegister, int FrameIndex,
+    const TargetRegisterClass *RegisterClass, Register /*VReg*/,
+    unsigned /*SubReg*/, MachineInstr::MIFlag Flags) const {
+  DebugLoc DL;
+  if (Position != MBB.end()) {
+    DL = Position->getDebugLoc();
+  }
+
+  if (!EZH::GPRAllRegClass.hasSubClassEq(RegisterClass)) {
+    llvm_unreachable("Can't load this register from stack slot");
+  }
+  BuildMI(MBB, Position, DL, get(EZH::LDR), DestinationRegister)
+      .addFrameIndex(FrameIndex)
+      .addImm(0)
+      .setMIFlags(Flags);
+}
+
+bool EZHInstrInfo::expandPostRAPseudo(MachineInstr &MI) const { return false; }
+
+bool EZHInstrInfo::analyzeBranch(MachineBasicBlock &MBB,
+                                 MachineBasicBlock *&TrueBlock,
+                                 MachineBasicBlock *&FalseBlock,
+                                 SmallVectorImpl<MachineOperand> &Condition,
+                                 bool AllowModify) const {
+  TrueBlock = nullptr;
+  FalseBlock = nullptr;
+  unsigned NumTerminatorsSeen = 0;
+
+  MachineBasicBlock::iterator I = MBB.end();
+  if (I == MBB.begin())
+    return false;
+  --I;
+
+  while (I->isTerminator() || I->isDebugInstr()) {
+    // Skip debug instructions.
+    while (I->isDebugInstr()) {
+      if (I == MBB.begin())
+        return false;
+      --I;
+    }
+    if (!I->isTerminator())
+      break;
+
+    ++NumTerminatorsSeen;
+
+    if (I->getOpcode() == EZH::GOTO) {
+      if (!I->getOperand(0).isMBB())
+        return true;
+      TrueBlock = I->getOperand(0).getMBB();
+    } else if (I->isConditionalBranch()) {
+      // Bail out if we encounter multiple conditional branches.
+      if (!Condition.empty())
+        return true;
+
+      if (!I->getOperand(0).isMBB())
+        return true;
+
+      FalseBlock = TrueBlock;
+      TrueBlock = I->getOperand(0).getMBB();
+      Condition.push_back(MachineOperand::CreateImm(I->getOpcode()));
+    } else {
+      // Unrecognized terminator.
+      return true;
+    }
+
+    // Cleanup code - to be run for unconditional branches and returns.
+    if (I->getOpcode() == EZH::GOTO || I->isReturn()) {
+      if (NumTerminatorsSeen > 1) {
+        if (AllowModify) {
+          MachineBasicBlock::iterator DI = std::next(I);
+          while (DI != MBB.end()) {
+            MachineInstr &InstToDelete = *DI;
+            ++DI;
+            InstToDelete.eraseFromParent();
+          }
+          NumTerminatorsSeen = 1;
+        } else {
+          return true;
+        }
+      }
+      Condition.clear();
+      FalseBlock = nullptr;
+    }
+
+    if (I == MBB.begin())
+      return false;
+    --I;
+  }
+
+  return false;
+}
+
+unsigned EZHInstrInfo::insertBranch(MachineBasicBlock &MBB,
+                                    MachineBasicBlock *TrueBlock,
+                                    MachineBasicBlock *FalseBlock,
+                                    ArrayRef<MachineOperand> Condition,
+                                    const DebugLoc &DL, int *BytesAdded) const {
+  if (BytesAdded)
+    *BytesAdded = 0;
+
+  if (Condition.empty()) {
+    BuildMI(&MBB, DL, get(EZH::GOTO)).addMBB(TrueBlock);
+    if (BytesAdded)
+      *BytesAdded += 4;
+    return 1;
+  }
+
+  unsigned Opc = Condition[0].getImm();
+  BuildMI(&MBB, DL, get(Opc)).addMBB(TrueBlock);
+  if (BytesAdded)
+    *BytesAdded += 4;
+
+  if (FalseBlock) {
+    BuildMI(&MBB, DL, get(EZH::GOTO)).addMBB(FalseBlock);
+    if (BytesAdded)
+      *BytesAdded += 4;
+    return 2;
+  }
+
+  return 1;
+}
+
+unsigned EZHInstrInfo::removeBranch(MachineBasicBlock &MBB,
+                                    int *BytesRemoved) const {
+  if (BytesRemoved)
+    *BytesRemoved = 0;
+
+  MachineBasicBlock::iterator I = MBB.getLastNonDebugInstr();
+  if (I == MBB.end())
+    return 0;
+
+  if (!I->isBranch())
+    return 0;
+
+  // Remove the last branch (unconditional or conditional).
+  I->eraseFromParent();
+  if (BytesRemoved)
+    *BytesRemoved += 4;
+  unsigned Count = 1;
+
+  I = MBB.getLastNonDebugInstr();
+  if (I == MBB.end()) {
+    return Count;
+  }
+  if (!I->isBranch()) {
+    return Count;
+  }
+
+  // Remove the joint conditional branch.
+  I->eraseFromParent();
+  if (BytesRemoved)
+    *BytesRemoved += 4;
+  return Count + 1;
+}
+
+bool EZHInstrInfo::reverseBranchCondition(
+    SmallVectorImpl<MachineOperand> &Cond) const {
+  assert(Cond.size() == 1 && "Invalid branch condition!");
+  unsigned Opc = Cond[0].getImm();
+
+  switch (Opc) {
+  case EZH::GOTO_ze:
+    Cond[0].setImm(EZH::GOTO_nz);
+    return false;
+  case EZH::GOTO_nz:
+    Cond[0].setImm(EZH::GOTO_ze);
+    return false;
+  case EZH::GOTO_po:
+    Cond[0].setImm(EZH::GOTO_ne);
+    return false;
+  case EZH::GOTO_ne:
+    Cond[0].setImm(EZH::GOTO_po);
+    return false;
+  case EZH::GOTO_az:
+    Cond[0].setImm(EZH::GOTO_zb);
+    return false;
+  case EZH::GOTO_zb:
+    Cond[0].setImm(EZH::GOTO_az);
+    return false;
+  case EZH::GOTO_ca:
+    Cond[0].setImm(EZH::GOTO_nc);
+    return false;
+  case EZH::GOTO_nc:
+    Cond[0].setImm(EZH::GOTO_ca);
+    return false;
+  default:
+    return true;
+  }
+}
+
+#define CHECK_CC(OP)                                                           \
+  case EZH::OP##___ze:                                                         \
+  case EZH::OP##___nz:                                                         \
+  case EZH::OP##___po:                                                         \
+  case EZH::OP##___ne:                                                         \
+  case EZH::OP##___az:                                                         \
+  case EZH::OP##___zb:                                                         \
+  case EZH::OP##___ca:                                                         \
+  case EZH::OP##___nc:                                                         \
+  case EZH::OP##___cz:                                                         \
+  case EZH::OP##___spo:                                                        \
+  case EZH::OP##___sne:                                                        \
+  case EZH::OP##___nbs:                                                        \
+  case EZH::OP##___nex:                                                        \
+  case EZH::OP##___bs:                                                         \
+  case EZH::OP##___ex:
+
+bool EZHInstrInfo::isPredicated(const MachineInstr &MI) const {
+  unsigned Opc = MI.getOpcode();
+  switch (Opc) {
+    CHECK_CC(ADDrr)
+    CHECK_CC(ADDri)
+    CHECK_CC(SUBrr)
+    CHECK_CC(SUBri)
+    CHECK_CC(ANDrr)
+    CHECK_CC(ANDri)
+    CHECK_CC(ORrr)
+    CHECK_CC(ORri)
+    CHECK_CC(XORrr)
+    CHECK_CC(XORri)
+    CHECK_CC(LSLi)
+    CHECK_CC(LSRi)
+    CHECK_CC(ASRi)
+    CHECK_CC(RORi)
+    return true;
+  default:
+    return false;
+  }
+}
+#undef CHECK_CC
+
+bool EZHInstrInfo::isPredicable(const MachineInstr &MI) const {
+  unsigned Opc = MI.getOpcode();
+  switch (Opc) {
+  case EZH::ADDrr__:
+  case EZH::ADDri__:
+  case EZH::SUBrr__:
+  case EZH::SUBri__:
+  case EZH::ANDrr__:
+  case EZH::ANDri__:
+  case EZH::ORrr__:
+  case EZH::ORri__:
+  case EZH::XORrr__:
+  case EZH::XORri__:
+  case EZH::LSLi__:
+  case EZH::LSRi__:
+  case EZH::ASRi__:
+  case EZH::RORi__:
+  case EZH::MOVrr__:
+  case EZH::MOVri__:
+    return true;
+  default:
+    return false;
+  }
+}
+
+bool EZHInstrInfo::canPredicatePredicatedInstr(const MachineInstr &MI) const {
+  return false;
+}
+
+static LPCC::CondCode getCondCodeFromBranchOpc(unsigned Opc) {
+  switch (Opc) {
+  case EZH::GOTO_ze:
+    return LPCC::ICC_ZE;
+  case EZH::GOTO_nz:
+    return LPCC::ICC_NZ;
+  case EZH::GOTO_po:
+    return LPCC::ICC_PO;
+  case EZH::GOTO_ne:
+    return LPCC::ICC_NE;
+  case EZH::GOTO_az:
+    return LPCC::ICC_AZ;
+  case EZH::GOTO_zb:
+    return LPCC::ICC_ZB;
+  case EZH::GOTO_ca:
+    return LPCC::ICC_CA;
+  case EZH::GOTO_nc:
+    return LPCC::ICC_NC;
+  default:
+    return LPCC::UNKNOWN;
+  }
+}
+
+bool EZHInstrInfo::PredicateInstruction(MachineInstr &MI,
+                                        ArrayRef<MachineOperand> Pred) const {
+  assert(!Pred.empty() && "Empty predicate!");
+  unsigned BranchOpc = Pred[0].getImm();
+  LPCC::CondCode CC = getCondCodeFromBranchOpc(BranchOpc);
+  if (CC == LPCC::UNKNOWN)
+    return false;
+
+  unsigned Opc = MI.getOpcode();
+  unsigned NewOpc = getConditionalOpcode(Opc, CC);
+  if (NewOpc == Opc)
+    return false;
+
+  MI.setDesc(get(NewOpc));
+
+  if (MI.getNumOperands() > 0 && MI.getOperand(0).isReg() &&
+      MI.getOperand(0).isDef()) {
+    Register RdReg = MI.getOperand(0).getReg();
+    MI.addOperand(
+        MachineOperand::CreateReg(RdReg, /*isDef=*/false, /*isImp=*/true));
+  }
+  return true;
+}
+
+bool EZHInstrInfo::isProfitableToIfCvt(MachineBasicBlock &MBB,
+                                       unsigned NumCycles,
+                                       unsigned ExtraPredCycles,
+                                       BranchProbability Probability) const {
+  return true;
+}
+
+bool EZHInstrInfo::isProfitableToIfCvt(
+    MachineBasicBlock &TMBB, unsigned NumTCycles, unsigned ExtraTCycles,
+    MachineBasicBlock &FMBB, unsigned NumFCycles, unsigned ExtraFCycles,
+    BranchProbability Probability) const {
+  return true;
+}
+
+unsigned EZHInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
+  if (MI.isInlineAsm()) {
+    const MachineFunction *MF = MI.getParent()->getParent();
+    const MCAsmInfo &MAI = MF->getTarget().getMCAsmInfo();
+    unsigned Size = getInlineAsmLength(MI.getOperand(0).getSymbolName(), MAI);
+    return alignTo(Size, 4);
+  }
+  if (MI.getOpcode() == EZH::CONSTPOOL_ENTRY) {
+    return MI.getOperand(2).getImm();
+  }
+  unsigned Size = MI.getDesc().getSize();
+  if (Size > 0)
+    return Size;
+  if (MI.isMetaInstruction())
+    return 0;
+  return 4;
+}
+
+int EZHInstrInfo::getJumpTableIndex(const MachineInstr &MI) const {
+  if (MI.getOpcode() == EZH::PseudoBR_JT) {
+    const MachineOperand &MO = MI.getOperand(2);
+    if (MO.isJTI()) {
+      return MO.getIndex();
+    } else if (MO.isImm()) {
+      return MO.getImm();
+    }
+  }
+  return -1;
+}
diff --git a/llvm/lib/Target/EZH/EZHInstrInfo.h b/llvm/lib/Target/EZH/EZHInstrInfo.h
new file mode 100644
index 0000000000000..48f8c4400dc8d
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHInstrInfo.h
@@ -0,0 +1,92 @@
+//===- EZHInstrInfo.h - EZH Instruction Information ---------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the EZH implementation of the TargetInstrInfo class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHINSTRINFO_H
+#define LLVM_LIB_TARGET_EZH_EZHINSTRINFO_H
+
+#include "EZHRegisterInfo.h"
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/CodeGen/TargetInstrInfo.h"
+#include "llvm/Support/BranchProbability.h"
+
+#define GET_INSTRINFO_HEADER
+#include "EZHGenInstrInfo.inc"
+
+namespace llvm {
+
+class EZHSubtarget;
+
+/// EZH Instruction Information.
+class EZHInstrInfo : public EZHGenInstrInfo {
+  const EZHRegisterInfo RegisterInfo;
+
+public:
+  EZHInstrInfo(const EZHSubtarget &STI);
+
+  const EZHRegisterInfo &getRegisterInfo() const { return RegisterInfo; }
+
+  void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator Position,
+                   const DebugLoc &DL, Register DestinationRegister,
+                   Register SourceRegister, bool KillSource,
+                   bool RenamableDest = false,
+                   bool RenamableSrc = false) const override;
+
+  void storeRegToStackSlot(
+      MachineBasicBlock &MBB, MachineBasicBlock::iterator Position,
+      Register SourceRegister, bool IsKill, int FrameIndex,
+      const TargetRegisterClass *RegisterClass, Register VReg,
+      MachineInstr::MIFlag Flags = MachineInstr::NoFlags) const override;
+
+  void loadRegFromStackSlot(
+      MachineBasicBlock &MBB, MachineBasicBlock::iterator Position,
+      Register DestinationRegister, int FrameIndex,
+      const TargetRegisterClass *RegisterClass, Register VReg,
+      unsigned SubReg = 0,
+      MachineInstr::MIFlag Flags = MachineInstr::NoFlags) const override;
+
+  bool expandPostRAPseudo(MachineInstr &MI) const override;
+
+  bool analyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TrueBlock,
+                     MachineBasicBlock *&FalseBlock,
+                     SmallVectorImpl<MachineOperand> &Condition,
+                     bool AllowModify) const override;
+
+  unsigned removeBranch(MachineBasicBlock &MBB,
+                        int *BytesRemoved = nullptr) const override;
+
+  unsigned insertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TrueBlock,
+                        MachineBasicBlock *FalseBlock,
+                        ArrayRef<MachineOperand> Condition, const DebugLoc &DL,
+                        int *BytesAdded = nullptr) const override;
+
+  bool
+  reverseBranchCondition(SmallVectorImpl<MachineOperand> &Cond) const override;
+  bool isPredicated(const MachineInstr &MI) const override;
+  bool isPredicable(const MachineInstr &MI) const override;
+  bool canPredicatePredicatedInstr(const MachineInstr &MI) const override;
+  bool PredicateInstruction(MachineInstr &MI,
+                            ArrayRef<MachineOperand> Pred) const override;
+  bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
+                           unsigned ExtraPredCycles,
+                           BranchProbability Probability) const override;
+  bool isProfitableToIfCvt(MachineBasicBlock &TMBB, unsigned NumTCycles,
+                           unsigned ExtraTCycles, MachineBasicBlock &FMBB,
+                           unsigned NumFCycles, unsigned ExtraFCycles,
+                           BranchProbability Probability) const override;
+  unsigned getInstSizeInBytes(const MachineInstr &MI) const override;
+  int getJumpTableIndex(const MachineInstr &MI) const override;
+};
+
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHINSTRINFO_H
diff --git a/llvm/lib/Target/EZH/EZHInstrInfo.td b/llvm/lib/Target/EZH/EZHInstrInfo.td
new file mode 100644
index 0000000000000..6bc29360850d5
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHInstrInfo.td
@@ -0,0 +1,1248 @@
+//===-- EZHInstrInfo.td - EZH Instruction defs ---------*- tablegen -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+include "EZHInstrFormats.td"
+
+//===----------------------------------------------------------------------===//
+// Instruction definitions.
+//===----------------------------------------------------------------------===//
+
+def calltarget : Operand<i32>, ImmLeaf<i32, [{ return (Imm & 3) == 0; }]> {
+  let PrintMethod = "printBranchTarget";
+  let EncoderMethod = "getCallTargetOpValue";
+  let DecoderMethod = "decodeSimm30";
+}
+
+def brtarget : Operand<OtherVT> {
+  let PrintMethod = "printBranchTarget";
+  let EncoderMethod = "getBranchTargetOpValue";
+  let DecoderMethod = "decodeSimm21";
+}
+
+def imm20 : Operand<i32>, ImmLeaf<i32, [{ return isUInt<20>(Imm) && (Imm & 3) == 0; }]> {
+  let PrintMethod = "printImmOperand";
+}
+
+
+def shifted_imms11 : Operand<i32>, ImmLeaf<i32, [{ return isInt<11>(Imm); }]> {
+  let PrintMethod = "printShiftedImmOperand";
+  let DecoderMethod = "decodeSimm11";
+}
+
+def imms11 : Operand<i32>, ImmLeaf<i32, [{ return isInt<11>(Imm); }]> {
+  let PrintMethod = "printImmOperand";
+  let DecoderMethod = "decodeSimm11";
+}
+
+def imms12_logical : Operand<i32>, ImmLeaf<i32, [{ return isInt<12>(Imm); }]> {
+  let PrintMethod = "printImmOperand";
+  let DecoderMethod = "decodeSimm12";
+}
+
+def imms12 : Operand<i32>, ImmLeaf<i32, [{ return isInt<12>(Imm); }]> {
+  let PrintMethod = "printImmOperand";
+  let DecoderMethod = "decodeSimm12";
+}
+
+
+def imms8_word : PatLeaf<(imm), [{
+  return isInt<8>(N->getSExtValue() >> 2) && ((N->getZExtValue() & 3) == 0);
+}]>;
+
+
+def imms8_word_offset : Operand<i32>, ImmLeaf<i32, [{ return isInt<8>(Imm >> 2) && ((Imm & 3) == 0); }]> {
+  let PrintMethod = "printWordOffset";
+  let EncoderMethod = "getWordOffsetOpValue";
+  let DecoderMethod = "decodeWordOffset";
+}
+
+def imms8 : Operand<i32>, ImmLeaf<i32, [{ return isInt<8>(Imm); }]> {
+  let PrintMethod = "printImmOperand";
+  let DecoderMethod = "decodeSimm8";
+}
+
+def imm5 : Operand<i32>, ImmLeaf<i32, [{ return isInt<5>(Imm) || isUInt<5>(Imm); }]> {
+  let PrintMethod = "printImmOperand";
+}
+
+def imm16 : Operand<i32>, ImmLeaf<i32, [{ return isUInt<16>(Imm); }]> {
+  let PrintMethod = "printImmOperand";
+  let DecoderMethod = "decodeSimm16";
+}
+
+def imm24 : Operand<i32>, ImmLeaf<i32, [{ return isUInt<24>(Imm); }]> {
+  let PrintMethod = "printImmOperand";
+}
+
+def imm1 : Operand<i32>, ImmLeaf<i32, [{ return isInt<1>(Imm) || isUInt<1>(Imm); }]> {
+  let PrintMethod = "printImmOperand";
+}
+
+def SDT_EZHCallSeqStart : SDCallSeqStart<[SDTCisVT<0, i32>,
+                                           SDTCisVT<1, i32>]>;
+def SDT_EZHCallSeqEnd   : SDCallSeqEnd<[SDTCisVT<0, i32>,
+                                         SDTCisVT<1, i32>]>;
+def SDT_EZHCall         : SDTypeProfile<0, -1, [SDTCisVT<0, i32>]>;
+
+def EZH_call            : SDNode<"EZHISD::CALL", SDT_EZHCall,
+                                  [SDNPHasChain, SDNPOutGlue, SDNPOptInGlue, SDNPVariadic]>;
+def EZH_adjcallstackdown : SDNode<"ISD::CALLSEQ_START", SDT_EZHCallSeqStart,
+                                  [SDNPHasChain, SDNPOutGlue]>;
+def EZH_adjcallstackup   : SDNode<"ISD::CALLSEQ_END",   SDT_EZHCallSeqEnd,
+                                  [SDNPHasChain, SDNPOptInGlue, SDNPOutGlue]>;
+
+def EZH_ret_glue_node   : SDNode<"EZHISD::RET_GLUE_INTERNAL", SDTNone,
+                                  [SDNPHasChain, SDNPOptInGlue, SDNPVariadic]>;
+
+// Condition Code Classes
+class EZHCondCode<bits<4> val, string suffix> {
+  bits<4> Value = val;
+  string Suffix = suffix;
+}
+
+def Cond_eu : EZHCondCode<0x0, "">;     // Always / True (EU flag)
+def Cond_ze : EZHCondCode<0x1, "_ze">;  // Zero (ZE flag)
+def Cond_nz : EZHCondCode<0x2, "_nz">;  // Not Zero (NZ flag)
+def Cond_po : EZHCondCode<0x3, "_po">;  // Positive (PO flag)
+def Cond_ne : EZHCondCode<0x4, "_ne">;  // Negative (NE flag)
+def Cond_az : EZHCondCode<0x5, "_az">;  // Above Zero (AZ flag)
+def Cond_zb : EZHCondCode<0x6, "_zb">;  // Zero or Below (ZB flag)
+def Cond_ca : EZHCondCode<0x7, "_ca">;  // Carry (CA flag)
+def Cond_nc : EZHCondCode<0x8, "_nc">;  // No Carry (NC flag)
+def Cond_cz : EZHCondCode<0x9, "_cz">;  // Carry or Zero (CZ flag)
+def Cond_spo: EZHCondCode<0xA, "_spo">; // Shift-Only-when-Positive / Unconditionally Scheduled branch delay slot (SPO/UNS)
+def Cond_sne: EZHCondCode<0xB, "_sne">; // Shift-Only-when-Negative / Scheduled branch delay slot when Not Zero (SNE/NZS)
+def Cond_nbs: EZHCondCode<0xC, "_nbs">; // Not Boolean-expression set (NBS flag)
+def Cond_nex: EZHCondCode<0xD, "_nex">; // External flag is not set (NEX flag)
+def Cond_bs : EZHCondCode<0xE, "_bs">;  // Boolean-expression set (BS flag)
+def Cond_ex : EZHCondCode<0xF, "_ex">;  // External flag is set (EX flag)
+
+defvar CondCodes = [Cond_eu, Cond_ze, Cond_nz, Cond_po, Cond_ne, Cond_az, Cond_zb, Cond_ca, Cond_nc, Cond_cz, Cond_spo, Cond_sne, Cond_nbs, Cond_nex, Cond_bs, Cond_ex];
+
+
+
+
+
+class SetFlag<bits<1> val, string suffix> {
+  bits<1> Value = val;
+  string Suffix = suffix;
+}
+
+def Flag_none : SetFlag<0, "">;
+def Flag_s : SetFlag<1, "s">;
+
+defvar SetFlags = [Flag_none, Flag_s];
+
+multiclass ALUShiftedOps<bits<5> op, string opc_str, string sf_suffix, string cc_suffix, SDPatternOperator op_node = null_frag> {
+  // Normal
+  def _LSL_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 0, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"_lsl"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt",
+      !if(!and(!empty(cc_suffix), !empty(sf_suffix)), [(set i32:$Rd, (shl (op_node i32:$Rs1, i32:$Rs2), imm5:$ShAmt))], [])>;
+  def _LSR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 2, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"_lsr"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt",
+      !if(!and(!empty(cc_suffix), !empty(sf_suffix)), [(set i32:$Rd, (srl (op_node i32:$Rs1, i32:$Rs2), imm5:$ShAmt))], [])>;
+  def _ASR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 1, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"_asr"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt",
+      !if(!and(!empty(cc_suffix), !empty(sf_suffix)), [(set i32:$Rd, (sra (op_node i32:$Rs1, i32:$Rs2), imm5:$ShAmt))], [])>;
+  def _ROR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 3, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"_ror"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt",
+      !if(!and(!empty(cc_suffix), !empty(sf_suffix)), [(set i32:$Rd, (rotr (op_node i32:$Rs1, i32:$Rs2), imm5:$ShAmt))], [])>;
+  def _FLSL_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 4, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"_flsl"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def _FLSR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 6, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"_flsr"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def _FASR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 5, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"_fasr"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def _FROR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 7, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"_fror"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def _F_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 4, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2), "e_"#opc_str#"_f"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2", []> { let ShAmt = 0; }
+
+  // Inverted
+  def N_LSL_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 0, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"n_lsl"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt",
+      !if(!and(!empty(cc_suffix), !empty(sf_suffix)), [(set i32:$Rd, (shl (not (op_node i32:$Rs1, i32:$Rs2)), imm5:$ShAmt))], [])>;
+  def N_LSR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 2, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"n_lsr"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt",
+      !if(!and(!empty(cc_suffix), !empty(sf_suffix)), [(set i32:$Rd, (srl (not (op_node i32:$Rs1, i32:$Rs2)), imm5:$ShAmt))], [])>;
+  def N_ASR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 1, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"n_asr"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt",
+      !if(!and(!empty(cc_suffix), !empty(sf_suffix)), [(set i32:$Rd, (sra (not (op_node i32:$Rs1, i32:$Rs2)), imm5:$ShAmt))], [])>;
+  def N_ROR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 3, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"n_ror"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt",
+      !if(!and(!empty(cc_suffix), !empty(sf_suffix)), [(set i32:$Rd, (rotr (not (op_node i32:$Rs1, i32:$Rs2)), imm5:$ShAmt))], [])>;
+  def N_FLSL_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 4, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"n_flsl"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def N_FLSR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 6, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"n_flsr"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def N_FASR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 5, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"n_fasr"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def N_FROR_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 7, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_"#opc_str#"n_fror"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def N_F_#sf_suffix#_#cc_suffix : EZHInstALUShifted<op, 4, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2), "e_"#opc_str#"n_f"#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2", []> { let ShAmt = 0; }
+}
+
+
+
+
+multiclass FlipALUOps<bits<3> op, string opc_str, string sf_suffix, string cc_suffix> {
+  def FBIT_LSR_#opc_str#_#sf_suffix#_#cc_suffix : EZHInstFlipALU<op, 0, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_fbit_lsr_"#opc_str#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def FBIT_ASR_#opc_str#_#sf_suffix#_#cc_suffix : EZHInstFlipALU<op, 1, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_fbit_asr_"#opc_str#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def FEND_LSR_#opc_str#_#sf_suffix#_#cc_suffix : EZHInstFlipALU<op, 0, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_fend_lsr_"#opc_str#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+  def FEND_ASR_#opc_str#_#sf_suffix#_#cc_suffix : EZHInstFlipALU<op, 1, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), "e_fend_asr_"#opc_str#sf_suffix#cc_suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []>;
+}
+
+foreach cc = CondCodes in {
+
+  defvar is_predicated = !not(!empty(cc.Suffix));
+  defvar predicated_constraints = !if(is_predicated, "$Rd = $src_in", "");
+
+  defvar ins_GPRAll = !con((ins GPRAll:$Rs1), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_2 = !con((ins GPRAll:$Rs1, GPRAll:$Rs2), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_imm = !con((ins imms11:$Imm), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_simm = !con((ins shifted_imms11:$Imm, imm5:$ShAmt), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_imm12 = !con((ins GPRAll:$Rs1, imms12:$Imm), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_logical_imm12 = !con((ins GPRAll:$Rs1, imms12_logical:$Imm), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRSP_imm12 = !con((ins GPRSP:$Rs1, imms12:$Imm), !if(is_predicated, (ins GPRSP:$src_in), (ins)));
+
+  defvar ins_GPRAll_shift = !con((ins GPRAll:$Rs, imm5:$ShAmt), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_flip = !con((ins GPRAll:$Rs2, imm5:$ShAmt), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_shift_alu = !con((ins GPRAll:$Rs1, GPRAll:$Rs2, imm5:$ShAmt), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_reg_shift = !con((ins GPRAll:$Rs2, GPRAll:$Rshift), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+  defvar ins_GPRAll_reg_shift_alu = !con((ins GPRAll:$Rs1, GPRAll:$Rs2, GPRAll:$Rshift), !if(is_predicated, (ins GPRAll:$src_in), (ins)));
+
+  foreach sf = SetFlags in {
+  let Cond = cc.Value, S = sf.Value in {
+
+// MOV
+def MOVrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x00, 0, (outs GPRAll:$Rd), ins_GPRAll,
+                       "e_mov"#sf.Suffix#cc.Suffix#" $Rd, $Rs1", []> { 
+                         let Rs2 = 0; 
+                         let Constraints = predicated_constraints;
+                       }
+def MVNrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x00, 0, (outs GPRAll:$Rd), ins_GPRAll,
+                       "e_mvn"#sf.Suffix#cc.Suffix#" $Rd, $Rs1", !if(!empty(cc.Suffix), [(set i32:$Rd, (not i32:$Rs1))], [])> { 
+                         let Rs2 = 0; 
+                         let Inst{31} = 1; 
+                         let Constraints = predicated_constraints;
+                       }
+def MOVri_#sf.Suffix#_#cc.Suffix : EZHInstALUI<0x00, 0, (outs GPRAll:$Rd), ins_GPRAll_imm,
+                       "e_load_imm"#sf.Suffix#cc.Suffix#" $Rd, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (i32 imm:$Imm))], [])> { 
+                         let Rs1 = 0; 
+                         let Constraints = predicated_constraints;
+                       }
+let AsmMatchConverter = "cvtShiftedImm" in {
+def MOVSri_#sf.Suffix#_#cc.Suffix : EZHInstALUIShifted<0x00, 0, (outs GPRAll:$Rd), ins_GPRAll_simm,
+                       "e_load_simm"#sf.Suffix#cc.Suffix#" $Rd, $Imm", []> {
+                         let Constraints = predicated_constraints;
+                       }
+}
+def MOVNri_#sf.Suffix#_#cc.Suffix : EZHInstALUI<0x00, 0, (outs GPRAll:$Rd), ins_GPRAll_imm,
+                       "e_load_immn"#sf.Suffix#cc.Suffix#" $Rd, $Imm", []> { 
+                         let Rs1 = 0; 
+                         let Inst{31} = 1; 
+                         let Constraints = predicated_constraints;
+                       }
+let AsmMatchConverter = "cvtShiftedImm" in {
+def MOVNSri_#sf.Suffix#_#cc.Suffix : EZHInstALUIShifted<0x00, 1, (outs GPRAll:$Rd), ins_GPRAll_simm,
+                       "e_load_simmn"#sf.Suffix#cc.Suffix#" $Rd, $Imm", []> {
+                         let Constraints = predicated_constraints;
+                       }
+}
+
+// ADD
+def ADDrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x06, 0, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, i32:$Rs2))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def ADDNrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x06, 1, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_addn"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (add i32:$Rs1, i32:$Rs2)))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def ADDri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x06, 0, (outs GPRSP:$Rd), ins_GPRSP_imm12,
+                         "e_add_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (i32 imm:$Imm)))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+def ADDNri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x06, 1, (outs GPRAll:$Rd), ins_GPRAll_imm12,
+                         "e_addn_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (add i32:$Rs1, (i32 imm:$Imm))))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+
+// SUB
+def SUBrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x08, 0, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub i32:$Rs1, i32:$Rs2))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def SUBNrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x08, 1, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_subn"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (sub i32:$Rs1, i32:$Rs2)))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def SUBri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x08, 0, (outs GPRSP:$Rd), ins_GPRSP_imm12,
+                         "e_sub_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub i32:$Rs1, (i32 imm:$Imm)))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+def SUBNri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x08, 1, (outs GPRAll:$Rd), ins_GPRAll_imm12,
+                         "e_subn_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (sub i32:$Rs1, (i32 imm:$Imm))))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+
+// ADC
+def ADCrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x09, 0, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (adde i32:$Rs1, i32:$Rs2))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def ADCNrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x09, 1, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_adcn"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", []> {
+                         let Constraints = predicated_constraints;
+                       }
+def ADCri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x09, 0, (outs GPRAll:$Rd), ins_GPRAll_imm12,
+                         "e_adc_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (adde i32:$Rs1, (i32 imm:$Imm)))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+def ADCNri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x09, 1, (outs GPRAll:$Rd), ins_GPRAll_imm12,
+                         "e_adcn_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", []> {
+                           let Constraints = predicated_constraints;
+                         }
+
+// SBC
+def SBCrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x0A, 0, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (sube i32:$Rs1, i32:$Rs2))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def SBCNrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x0A, 1, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_sbcn"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", []> {
+                         let Constraints = predicated_constraints;
+                       }
+def SBCri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x0A, 0, (outs GPRAll:$Rd), ins_GPRAll_imm12,
+                         "e_sbc_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (sube i32:$Rs1, (i32 imm:$Imm)))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+def SBCNri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x0A, 1, (outs GPRAll:$Rd), ins_GPRAll_imm12,
+                         "e_sbcn_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", []> {
+                           let Constraints = predicated_constraints;
+                         }
+
+// OR
+def ORrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x0C, 0, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, i32:$Rs2))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def ORNrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x0C, 1, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_orn"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (or i32:$Rs1, i32:$Rs2)))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def ORri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x0C, 0, (outs GPRAll:$Rd), ins_GPRAll_logical_imm12,
+                         "e_or_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (i32 imm:$Imm)))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+def ORNri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x0C, 1, (outs GPRAll:$Rd), ins_GPRAll_logical_imm12,
+                         "e_orn_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (or i32:$Rs1, (i32 imm:$Imm))))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+
+// AND
+def ANDrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x0D, 0, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, i32:$Rs2))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def ANDNrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x0D, 1, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_andn"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (and i32:$Rs1, i32:$Rs2)))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def ANDri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x0D, 0, (outs GPRAll:$Rd), ins_GPRAll_logical_imm12,
+                         "e_and_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (i32 imm:$Imm)))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+def ANDNri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x0D, 1, (outs GPRAll:$Rd), ins_GPRAll_logical_imm12,
+                         "e_andn_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (and i32:$Rs1, (i32 imm:$Imm))))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+
+// XOR
+def XORrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x0E, 0, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, i32:$Rs2))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def XORNrr_#sf.Suffix#_#cc.Suffix : EZHInstALU<0x0E, 1, (outs GPRAll:$Rd), ins_GPRAll_2,
+                       "e_xorn"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (xor i32:$Rs1, i32:$Rs2)))], [])> {
+                         let Constraints = predicated_constraints;
+                       }
+def XORri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x0E, 0, (outs GPRAll:$Rd), ins_GPRAll_logical_imm12,
+                         "e_xor_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (i32 imm:$Imm)))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+def XORNri_#sf.Suffix#_#cc.Suffix : EZHInstALUI12<0x0E, 1, (outs GPRAll:$Rd), ins_GPRAll_logical_imm12,
+                         "e_xorn_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Imm", !if(!empty(cc.Suffix), [(set i32:$Rd, (not (xor i32:$Rs1, (i32 imm:$Imm))))], [])> {
+                           let Constraints = predicated_constraints;
+                         }
+
+
+// Shifted immediates
+defm ADD : ALUShiftedOps<0x06, "add", sf.Suffix, cc.Suffix, add>;
+defm SUB : ALUShiftedOps<0x08, "sub", sf.Suffix, cc.Suffix, sub>;
+defm ADC : ALUShiftedOps<0x09, "adc", sf.Suffix, cc.Suffix>;
+defm SBC : ALUShiftedOps<0x0A, "sbc", sf.Suffix, cc.Suffix>;
+defm OR  : ALUShiftedOps<0x0C, "or",  sf.Suffix, cc.Suffix, or>;
+defm AND : ALUShiftedOps<0x0D, "and", sf.Suffix, cc.Suffix, and>;
+defm XOR : ALUShiftedOps<0x0E, "xor", sf.Suffix, cc.Suffix, xor>;
+
+def FBIT_LSR_#sf.Suffix#_#cc.Suffix : EZHInstFlipALU<0, 0, 1, (outs GPRAll:$Rd), ins_GPRAll_flip, "e_fbit_lsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs2, $ShAmt", []> { 
+  let Rs1 = 0; 
+  let Constraints = predicated_constraints;
+}
+def FEND_LSR_#sf.Suffix#_#cc.Suffix : EZHInstFlipALU<0, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_flip, "e_fend_lsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs2, $ShAmt", []> { 
+  let Rs1 = 0; 
+  let Constraints = predicated_constraints;
+}
+def FBIT_ASR_#sf.Suffix#_#cc.Suffix : EZHInstFlipALU<0, 1, 1, (outs GPRAll:$Rd), ins_GPRAll_flip, "e_fbit_asr"#sf.Suffix#cc.Suffix#" $Rd, $Rs2, $ShAmt", []> { 
+  let Rs1 = 0; 
+  let Constraints = predicated_constraints;
+}
+def FEND_ASR_#sf.Suffix#_#cc.Suffix : EZHInstFlipALU<0, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_flip, "e_fend_asr"#sf.Suffix#cc.Suffix#" $Rd, $Rs2, $ShAmt", []> { 
+  let Rs1 = 0; 
+  let Constraints = predicated_constraints;
+}
+
+defm FBIT_AND : FlipALUOps<1, "and", sf.Suffix, cc.Suffix>;
+defm FBIT_OR  : FlipALUOps<2, "or",  sf.Suffix, cc.Suffix>;
+defm FBIT_XOR : FlipALUOps<3, "xor", sf.Suffix, cc.Suffix>;
+defm FBIT_ADD : FlipALUOps<4, "add", sf.Suffix, cc.Suffix>;
+defm FBIT_SUB : FlipALUOps<5, "sub", sf.Suffix, cc.Suffix>;
+defm FBIT_ADC : FlipALUOps<6, "adc", sf.Suffix, cc.Suffix>;
+defm FBIT_SBC : FlipALUOps<7, "sbc", sf.Suffix, cc.Suffix>;
+
+def ANDOR_#sf.Suffix#_#cc.Suffix : EZHInstAndOr<(outs GPRAll:$Rd), !con((ins GPRAll:$Rs1, GPRAll:$Rs2, GPRAll:$Rs3), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_andor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rs3", []> {
+  let Constraints = predicated_constraints;
+}
+
+} // let Cond, S
+} // foreach sf
+
+let Cond = cc.Value, S = 0 in {
+
+// Shifts
+foreach sf = SetFlags in {
+let S = sf.Value in {
+def LSLi_#sf.Suffix#_#cc.Suffix : EZHInstShift<0, (outs GPRAll:$Rd), ins_GPRAll_shift,
+                        "e_lsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (shl i32:$Rs, (i32 imm:$ShAmt)))], [])> {
+                          let Constraints = predicated_constraints;
+                        }
+def LSRi_#sf.Suffix#_#cc.Suffix : EZHInstShift<2, (outs GPRAll:$Rd), ins_GPRAll_shift,
+                        "e_lsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (srl i32:$Rs, (i32 imm:$ShAmt)))], [])> {
+                          let Constraints = predicated_constraints;
+                        }
+def ASRi_#sf.Suffix#_#cc.Suffix : EZHInstShift<1, (outs GPRAll:$Rd), ins_GPRAll_shift,
+                        "e_asr"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (sra i32:$Rs, (i32 imm:$ShAmt)))], [])> {
+                          let Constraints = predicated_constraints;
+                        }
+def RORi_#sf.Suffix#_#cc.Suffix : EZHInstShift<3, (outs GPRAll:$Rd), ins_GPRAll_shift,
+                        "e_ror"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (rotr i32:$Rs, (i32 imm:$ShAmt)))], [])> {
+                          let Constraints = predicated_constraints;
+                        }
+
+// ShiftALU operations
+def LSL_AND_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<1, 0, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsl_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (shl i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def LSR_AND_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<1, 1, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsr_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (srl i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ASR_AND_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<1, 2, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_asr_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (sra i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ROR_AND_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<1, 3, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_ror_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (rotr i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+
+def LSL_OR_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<2, 0, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsl_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (shl i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def LSR_OR_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<2, 1, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsr_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (srl i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ASR_OR_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<2, 2, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_asr_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (sra i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ROR_OR_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<2, 3, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_ror_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (rotr i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+
+def LSL_XOR_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<3, 0, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsl_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (shl i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def LSR_XOR_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<3, 1, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsr_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (srl i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ASR_XOR_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<3, 2, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_asr_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (sra i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ROR_XOR_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<3, 3, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_ror_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (rotr i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+
+def LSL_ADD_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<4, 0, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsl_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (shl i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def LSR_ADD_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<4, 1, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsr_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (srl i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ASR_ADD_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<4, 2, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_asr_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (sra i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ROR_ADD_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<4, 3, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_ror_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (rotr i32:$Rs2, (i32 imm:$ShAmt))))], [])> {
+      let Constraints = predicated_constraints;
+    }
+
+def LSL_SUB_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<5, 0, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsl_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub (shl i32:$Rs2, (i32 imm:$ShAmt)), i32:$Rs1))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def LSR_SUB_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<5, 1, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsr_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub (srl i32:$Rs2, (i32 imm:$ShAmt)), i32:$Rs1))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ASR_SUB_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<5, 2, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_asr_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub (sra i32:$Rs2, (i32 imm:$ShAmt)), i32:$Rs1))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def ROR_SUB_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<5, 3, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_ror_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub (rotr i32:$Rs2, (i32 imm:$ShAmt)), i32:$Rs1))], [])> {
+      let Constraints = predicated_constraints;
+    }
+
+def LSL_ADC_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<6, 0, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsl_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []> {
+      let Constraints = predicated_constraints;
+    }
+def LSR_ADC_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<6, 1, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsr_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []> {
+      let Constraints = predicated_constraints;
+    }
+def ASR_ADC_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<6, 2, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_asr_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []> {
+      let Constraints = predicated_constraints;
+    }
+def ROR_ADC_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<6, 3, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_ror_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []> {
+      let Constraints = predicated_constraints;
+    }
+
+def LSL_SBC_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<7, 0, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsl_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []> {
+      let Constraints = predicated_constraints;
+    }
+def LSR_SBC_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<7, 1, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_lsr_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []> {
+      let Constraints = predicated_constraints;
+    }
+def ASR_SBC_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<7, 2, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_asr_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []> {
+      let Constraints = predicated_constraints;
+    }
+def ROR_SBC_#sf.Suffix#_#cc.Suffix : EZHInstShiftALU<7, 3, (outs GPRAll:$Rd), ins_GPRAll_shift_alu,
+    "e_ror_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $ShAmt", []> {
+      let Constraints = predicated_constraints;
+    }
+
+} // let S
+} // foreach sf
+
+// Load/Store
+def LDR#cc.Suffix : EZHInstMem<0x01, 0, 1, 0, 0, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rn, imms8_word_offset:$Offset),
+                     "e_ldr"#cc.Suffix#" $Rd, $Rn, $Offset", !if(!empty(cc.Suffix), [(set i32:$Rd, (load (add i32:$Rn, imms8_word:$Offset)))], [])> {}
+def LDR_PRE#cc.Suffix : EZHInstMem<0x01, 0, 1, 0, 0, 1, (outs GPRAll:$Rd, GPRAll:$Rn_wb), (ins GPRAll:$Rn, imms8_word_offset:$Offset),
+                     "e_ldr_pre"#cc.Suffix#" $Rd, $Rn, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+def LDR_POST#cc.Suffix : EZHInstMem<0x01, 0, 1, 0, 1, 1, (outs GPRAll:$Rd, GPRAll:$Rn_wb), (ins GPRAll:$Rn, imms8_word_offset:$Offset),
+                     "e_ldr_post"#cc.Suffix#" $Rn, $Rd, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+
+def STR#cc.Suffix : EZHInstMem<0x02, 1, 1, 0, 0, 0, (outs), (ins GPRAll:$Rd, GPRAll:$Rn, imms8_word_offset:$Offset),
+                     "e_str"#cc.Suffix#" $Rn, $Rd, $Offset", !if(!empty(cc.Suffix), [(store i32:$Rd, (add i32:$Rn, imms8_word:$Offset))], [])> {}
+def STR_PRE#cc.Suffix : EZHInstMem<0x02, 1, 1, 0, 0, 1, (outs GPRAll:$Rn_wb), (ins GPRAll:$Rd, GPRAll:$Rn, imms8_word_offset:$Offset),
+                     "e_str_pre"#cc.Suffix#" $Rn, $Rd, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+def STR_POST#cc.Suffix : EZHInstMem<0x02, 1, 1, 0, 1, 1, (outs GPRAll:$Rn_wb), (ins GPRAll:$Rd, GPRAll:$Rn, imms8_word_offset:$Offset),
+                     "e_str_post"#cc.Suffix#" $Rn, $Rd, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+
+def LDRB#cc.Suffix : EZHInstMem<0x01, 0, 0, 0, 0, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rn, imms8:$Offset),
+                      "e_ldrb"#cc.Suffix#" $Rd, $Rn, $Offset", !if(!empty(cc.Suffix), [(set i32:$Rd, (zextloadi8 (add i32:$Rn, imms8:$Offset)))], [])> {}
+def LDRB_PRE#cc.Suffix : EZHInstMem<0x01, 0, 0, 0, 0, 1, (outs GPRAll:$Rd, GPRAll:$Rn_wb), (ins GPRAll:$Rn, imms8:$Offset),
+                      "e_ldrb_pre"#cc.Suffix#" $Rd, $Rn, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+def LDRB_POST#cc.Suffix : EZHInstMem<0x01, 0, 0, 0, 1, 1, (outs GPRAll:$Rd, GPRAll:$Rn_wb), (ins GPRAll:$Rn, imms8:$Offset),
+                      "e_ldrb_post"#cc.Suffix#" $Rd, $Rn, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+
+def LDRBS#cc.Suffix : EZHInstMem<0x01, 0, 0, 1, 0, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rn, imms8:$Offset),
+                       "e_ldrbs"#cc.Suffix#" $Rd, $Rn, $Offset", !if(!empty(cc.Suffix), [(set i32:$Rd, (sextloadi8 (add i32:$Rn, imms8:$Offset)))], [])> {}
+def LDRBS_PRE#cc.Suffix : EZHInstMem<0x01, 0, 0, 1, 0, 1, (outs GPRAll:$Rd, GPRAll:$Rn_wb), (ins GPRAll:$Rn, imms8:$Offset),
+                       "e_ldrbs_pre"#cc.Suffix#" $Rd, $Rn, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+def LDRBS_POST#cc.Suffix : EZHInstMem<0x01, 0, 0, 1, 1, 1, (outs GPRAll:$Rd, GPRAll:$Rn_wb), (ins GPRAll:$Rn, imms8:$Offset),
+                       "e_ldrbs_post"#cc.Suffix#" $Rd, $Rn, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+
+def STRB#cc.Suffix : EZHInstMem<0x02, 1, 0, 0, 0, 0, (outs), (ins GPRAll:$Rd, GPRAll:$Rn, imms8:$Offset),
+                      "e_strb"#cc.Suffix#" $Rn, $Rd, $Offset", !if(!empty(cc.Suffix), [(truncstorei8 i32:$Rd, (add i32:$Rn, imms8:$Offset))], [])> {}
+def STRB_PRE#cc.Suffix : EZHInstMem<0x02, 1, 0, 0, 0, 1, (outs GPRAll:$Rn_wb), (ins GPRAll:$Rd, GPRAll:$Rn, imms8:$Offset),
+                      "e_strb_pre"#cc.Suffix#" $Rn, $Rd, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+def STRB_POST#cc.Suffix : EZHInstMem<0x02, 1, 0, 0, 1, 1, (outs GPRAll:$Rn_wb), (ins GPRAll:$Rd, GPRAll:$Rn, imms8:$Offset),
+                      "e_strb_post"#cc.Suffix#" $Rn, $Rd, $Offset", []> { let Constraints = "$Rn = $Rn_wb"; }
+
+// RegShiftALU operations
+foreach sf = SetFlags in {
+let S = sf.Value in {
+
+// Shift only (alu_op = 0, is_post = 0)
+def RLSL_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<0, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift,
+    "e_rlsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (shl i32:$Rs2, i32:$Rshift))], [])> { 
+      let Rs1 = 0; 
+      let Constraints = predicated_constraints;
+    }
+def RLSR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<0, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift,
+    "e_rlsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (srl i32:$Rs2, i32:$Rshift))], [])> { 
+      let Rs1 = 0; 
+      let Constraints = predicated_constraints;
+    }
+def RASR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<0, 2, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift,
+    "e_rasr"#sf.Suffix#cc.Suffix#" $Rd, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (sra i32:$Rs2, i32:$Rshift))], [])> { 
+      let Rs1 = 0; 
+      let Constraints = predicated_constraints;
+    }
+def RROR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<0, 3, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift,
+    "e_rror"#sf.Suffix#cc.Suffix#" $Rd, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (rotr i32:$Rs2, i32:$Rshift))], [])> { 
+      let Rs1 = 0; 
+      let Constraints = predicated_constraints;
+    }
+
+// AND (alu_op = 1)
+// is_post = 0 (Shift then ALU)
+def RLSL_AND_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<1, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsl_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (shl i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RLSR_AND_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<1, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsr_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (srl i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RASR_AND_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<1, 2, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rasr_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (sra i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RROR_AND_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<1, 3, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rror_and"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (and i32:$Rs1, (rotr i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+// is_post = 1 (ALU then Shift)
+def AND_RLSL_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<1, 0, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_and_rlsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def AND_RLSR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<1, 1, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_and_rlsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def AND_RASR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<1, 2, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_and_rasr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def AND_RROR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<1, 3, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_and_rror"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+
+// OR (alu_op = 2)
+// is_post = 0 (Shift then ALU)
+def RLSL_OR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<2, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsl_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (shl i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RLSR_OR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<2, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsr_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (srl i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RASR_OR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<2, 2, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rasr_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (sra i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RROR_OR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<2, 3, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rror_or"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (or i32:$Rs1, (rotr i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+// is_post = 1 (ALU then Shift)
+def OR_RLSL_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<2, 0, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_or_rlsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def OR_RLSR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<2, 1, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_or_rlsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def OR_RASR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<2, 2, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_or_rasr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def OR_RROR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<2, 3, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_or_rror"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+
+// XOR (alu_op = 3)
+// is_post = 0 (Shift then ALU)
+def RLSL_XOR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<3, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsl_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (shl i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RLSR_XOR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<3, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsr_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (srl i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RASR_XOR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<3, 2, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rasr_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (sra i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RROR_XOR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<3, 3, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rror_xor"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (xor i32:$Rs1, (rotr i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+// is_post = 1 (ALU then Shift)
+def XOR_RLSL_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<3, 0, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_xor_rlsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def XOR_RLSR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<3, 1, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_xor_rlsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def XOR_RASR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<3, 2, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_xor_rasr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def XOR_RROR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<3, 3, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_xor_rror"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+
+// ADD (alu_op = 4)
+// is_post = 0 (Shift then ALU)
+def RLSL_ADD_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<4, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsl_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (shl i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RLSR_ADD_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<4, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsr_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (srl i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RASR_ADD_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<4, 2, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rasr_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (sra i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RROR_ADD_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<4, 3, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rror_add"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (add i32:$Rs1, (rotr i32:$Rs2, i32:$Rshift)))], [])> {
+      let Constraints = predicated_constraints;
+    }
+// is_post = 1 (ALU then Shift)
+def ADD_RLSL_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<4, 0, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_add_rlsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def ADD_RLSR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<4, 1, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_add_rlsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def ADD_RASR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<4, 2, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_add_rasr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def ADD_RROR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<4, 3, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_add_rror"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+
+// SUB (alu_op = 5)
+// is_post = 0 (Shift then ALU)
+def RLSL_SUB_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<5, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsl_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub (shl i32:$Rs2, i32:$Rshift), i32:$Rs1))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RLSR_SUB_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<5, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsr_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub (srl i32:$Rs2, i32:$Rshift), i32:$Rs1))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RASR_SUB_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<5, 2, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rasr_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (sub (sra i32:$Rs2, i32:$Rshift), i32:$Rs1))], [])> {
+      let Constraints = predicated_constraints;
+    }
+def RROR_SUB_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<5, 3, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rror_sub"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+// is_post = 1 (ALU then Shift)
+def SUB_RLSL_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<5, 0, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_sub_rlsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def SUB_RLSR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<5, 1, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_sub_rlsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def SUB_RASR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<5, 2, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_sub_rasr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def SUB_RROR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<5, 3, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_sub_rror"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", !if(!empty(cc.Suffix), [(set i32:$Rd, (rotr (sub i32:$Rs2, i32:$Rs1), i32:$Rshift))], [])> {
+      let Constraints = predicated_constraints;
+    }
+
+// ADC (alu_op = 6)
+// is_post = 0 (Shift then ALU)
+def RLSL_ADC_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<6, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsl_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def RLSR_ADC_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<6, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsr_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def RASR_ADC_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<6, 2, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rasr_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def RROR_ADC_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<6, 3, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rror_adc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+// is_post = 1 (ALU then Shift)
+def ADC_RLSL_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<6, 0, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_adc_rlsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def ADC_RLSR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<6, 1, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_adc_rlsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def ADC_RASR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<6, 2, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_adc_rasr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def ADC_RROR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<6, 3, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_adc_rror"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+
+// SBC (alu_op = 7)
+// is_post = 0 (Shift then ALU)
+def RLSL_SBC_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<7, 0, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsl_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def RLSR_SBC_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<7, 1, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rlsr_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def RASR_SBC_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<7, 2, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rasr_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def RROR_SBC_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<7, 3, 0, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_rror_sbc"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+// is_post = 1 (ALU then Shift)
+def SBC_RLSL_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<7, 0, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_sbc_rlsl"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def SBC_RLSR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<7, 1, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_sbc_rlsr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def SBC_RASR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<7, 2, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_sbc_rasr"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+def SBC_RROR_#sf.Suffix#_#cc.Suffix : EZHInstRegShiftALU<7, 3, 1, (outs GPRAll:$Rd), ins_GPRAll_reg_shift_alu,
+    "e_sbc_rror"#sf.Suffix#cc.Suffix#" $Rd, $Rs1, $Rs2, $Rshift", []> {
+      let Constraints = predicated_constraints;
+    }
+
+}
+}
+
+// Tight Loop
+def TIGHT_LOOP#cc.Suffix : EZHInstTightLoop<(outs), (ins GPRAll:$Rend, GPRAll:$Rcount), "e_tight_loop"#cc.Suffix#" $Rend, $Rcount", []>;
+
+// Reg Offset Load/Store
+def LDR_REG#cc.Suffix : EZHInstMemReg<0x1D, 0, 1, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rn, GPRAll:$Rm), "e_ldr_reg"#cc.Suffix#" $Rd, $Rn, $Rm", []>;
+def LDR_REGB#cc.Suffix : EZHInstMemReg<0x1D, 0, 0, 0, (outs GPRAll:$Rd), (ins GPRAll:$Rn, GPRAll:$Rm), "e_ldr_regb"#cc.Suffix#" $Rd, $Rn, $Rm", []>;
+def LDR_REGBS#cc.Suffix : EZHInstMemReg<0x1D, 0, 0, 1, (outs GPRAll:$Rd), (ins GPRAll:$Rn, GPRAll:$Rm), "e_ldr_regbs"#cc.Suffix#" $Rd, $Rn, $Rm", []>;
+
+def STR_REG#cc.Suffix : EZHInstMemReg<0x1D, 1, 1, 0, (outs), (ins GPRAll:$Rd, GPRAll:$Rn, GPRAll:$Rm), "e_str_reg"#cc.Suffix#" $Rn, $Rd, $Rm", []>;
+def STR_REGB#cc.Suffix : EZHInstMemReg<0x1D, 1, 0, 0, (outs), (ins GPRAll:$Rd, GPRAll:$Rn, GPRAll:$Rm), "e_str_regb"#cc.Suffix#" $Rn, $Rd, $Rm", []>;
+
+// Push / Pop (Upward Stack)
+def PUSH#cc.Suffix : EZHInstMem<0x02, 1, 1, 0, 1, 1, (outs), (ins GPRAll:$Rd), "e_push"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 1; // +1
+}
+def POP#cc.Suffix : EZHInstMem<0x01, 0, 1, 0, 0, 1, (outs GPRAll:$Rd), (ins), "e_pop"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 0xFF; // -1
+}
+def PUSHB#cc.Suffix : EZHInstMem<0x02, 1, 0, 0, 1, 1, (outs), (ins GPRAll:$Rd), "e_pushb"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 1; // +1
+}
+def POPB#cc.Suffix : EZHInstMem<0x01, 0, 0, 0, 0, 1, (outs GPRAll:$Rd), (ins), "e_popb"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 0xFF; // -1
+}
+def POPBS#cc.Suffix : EZHInstMem<0x01, 0, 0, 1, 0, 1, (outs GPRAll:$Rd), (ins), "e_popbs"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 0xFF; // -1
+}
+
+// Push / Pop Down (Downward Stack)
+def PUSHD#cc.Suffix : EZHInstMem<0x02, 1, 1, 0, 0, 1, (outs), (ins GPRAll:$Rd), "e_pushd"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 0xFF; // -1 (Pre-decrement)
+}
+def POPD#cc.Suffix : EZHInstMem<0x01, 0, 1, 0, 1, 1, (outs GPRAll:$Rd), (ins), "e_popd"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 1; // +1 (Post-increment)
+}
+def PUSHDB#cc.Suffix : EZHInstMem<0x02, 1, 0, 0, 0, 1, (outs), (ins GPRAll:$Rd), "e_pushdb"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 0xFF; // -1
+}
+def POPDB#cc.Suffix : EZHInstMem<0x01, 0, 0, 0, 1, 1, (outs GPRAll:$Rd), (ins), "e_popdb"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 1; // +1
+}
+def POPDBS#cc.Suffix : EZHInstMem<0x01, 0, 0, 1, 1, 1, (outs GPRAll:$Rd), (ins), "e_popdbs"#cc.Suffix#" $Rd", []> {
+  let Rn = 12; // SP
+  let Offset = 1; // +1
+}
+
+def PER_READ#cc.Suffix : EZHInstPerRead<0x04, (outs GPRAll:$Rd), (ins imm20:$addr), "e_per_read"#cc.Suffix#" $Rd, $addr", []>;
+def PER_WRITE#cc.Suffix : EZHInstPerWrite<0x05, (outs), (ins GPRAll:$Rs, imm20:$addr), "e_per_write"#cc.Suffix#" $Rs, $addr", []>;
+
+} // let Cond
+
+// Bit manipulation
+let Cond = cc.Value in {
+foreach sf = SetFlags in {
+let S = sf.Value in {
+def BTST_#sf.Suffix#_#cc.Suffix : EZHInstBitReg<1, (outs GPRAll:$Rd), !con((ins GPRAll:$Rs, GPRAll:$Rbit), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_btst"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $Rbit", []> { 
+  let S_bit = 1; 
+  let Constraints = predicated_constraints;
+}
+def BSET_#sf.Suffix#_#cc.Suffix : EZHInstBitReg<2, (outs GPRAll:$Rd), !con((ins GPRAll:$Rs, GPRAll:$Rbit), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_bset"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $Rbit", []> { 
+  let S_bit = 1; 
+  let Constraints = predicated_constraints;
+}
+def BCLR_#sf.Suffix#_#cc.Suffix : EZHInstBitReg<1, (outs GPRAll:$Rd), !con((ins GPRAll:$Rs, GPRAll:$Rbit), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_bclr"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $Rbit", []> { 
+  let S_bit = 0; 
+  let Constraints = predicated_constraints;
+}
+def BTOG_#sf.Suffix#_#cc.Suffix : EZHInstBitReg<3, (outs GPRAll:$Rd), !con((ins GPRAll:$Rs, GPRAll:$Rbit), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_btog"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $Rbit", []> { 
+  let S_bit = 1; 
+  let Constraints = predicated_constraints;
+}
+
+def BTST_IMM_#sf.Suffix#_#cc.Suffix : EZHInstBit<1, (outs GPRAll:$Rd), !con((ins GPRAll:$Rs, imm5:$Bit5), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_btst_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $Bit5", []> { 
+  let S_bit = 1; 
+  let Constraints = predicated_constraints;
+}
+def BSET_IMM_#sf.Suffix#_#cc.Suffix : EZHInstBit<2, (outs GPRAll:$Rd), !con((ins GPRAll:$Rs, imm5:$Bit5), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_bset_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $Bit5", []> { 
+  let S_bit = 1; 
+  let Constraints = predicated_constraints;
+}
+def BCLR_IMM_#sf.Suffix#_#cc.Suffix : EZHInstBit<1, (outs GPRAll:$Rd), !con((ins GPRAll:$Rs, imm5:$Bit5), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_bclr_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $Bit5", []> { 
+  let S_bit = 0; 
+  let Constraints = predicated_constraints;
+}
+def BTOG_IMM_#sf.Suffix#_#cc.Suffix : EZHInstBit<3, (outs GPRAll:$Rd), !con((ins GPRAll:$Rs, imm5:$Bit5), !if(is_predicated, (ins GPRAll:$src_in), (ins))), "e_btog_imm"#sf.Suffix#cc.Suffix#" $Rd, $Rs, $Bit5", []> { 
+  let S_bit = 1; 
+  let Constraints = predicated_constraints;
+}
+}
+
+
+}
+} // let Cond
+} // foreach cc = CondCodes
+
+// Unconditional instructions (no space for Cond field)
+let Cond = 0, S = 0 in {
+def NOP : EZHInstSingle<0x12, (outs), (ins), "e_nop", []> { let Inst{31-5} = 0; }
+def INT_TRIGGER : EZHInstSingle<0x14, (outs), (ins imm24:$Imm), "e_int_trigger $Imm", []> { bits<24> Imm; let Inst{31-8} = Imm; let Inst{7-5} = 0; }
+def MODIFY_GPO_BYTE : EZHInstModifyGPOByte<(outs), (ins imms8:$AndMask, imms8:$OrMask, imms8:$XorMask),
+                        "e_modify_gpo_byte $AndMask, $OrMask, $XorMask", []>;
+}
+
+// Return
+let isReturn = 1, isTerminator = 1, isBarrier = 1 in {
+  def RET : EZHInst<(outs), (ins variable_ops), "e_goto ra", [(EZH_ret_glue_node)]> {
+    let Inst{4-0}   = 0x15; // Opcode for E_GOTO
+    let Inst{9-5}   = 0;
+    let Inst{13-10} = 1;
+    let Inst{17-14} = 0x0f; // RA
+    let Inst{31-18} = 0;
+  }
+}
+
+class EZHPseudo<dag outs, dag ins, string asmstr, list<dag> pattern>
+    : Instruction {
+  let Namespace = "EZH";
+  dag OutOperandList = outs;
+  dag InOperandList = ins;
+  let AsmString = asmstr;
+  let Pattern = pattern;
+  let isPseudo = 1;
+  let isCodeGenOnly = 1;
+}
+
+
+
+def LOAD_CONSTANT : EZHPseudo<(outs GPRAll:$Rd), (ins i32imm:$imm), "", []>;
+
+let isNotDuplicable = 1, isBarrier = 1, hasSideEffects = 1 in
+def CONSTPOOL_ENTRY : EZHPseudo<(outs), (ins unknown:$sym, unknown:$val), "$sym:\n\t.long $val", []>;
+
+
+
+let isCall = 1, Defs = [R0, R1, R2, R3, RA], isCodeGenOnly = 1 in {
+def CALL_INDIRECT : EZHInstGotoReg<1, (outs), (ins tcGPR:$raddr), "e_goto_regl $raddr", [(EZH_call i32:$raddr)]>;
+}
+
+
+def EZHcmp : SDNode<"EZHISD::CMP", SDTypeProfile<0, 2, [SDTCisSameAs<0, 1>]>, [SDNPOutGlue]>;
+def EZHbrcc : SDNode<"EZHISD::BR_CC", SDTypeProfile<0, 2, [SDTCisVT<0, OtherVT>, SDTCisVT<1, i32>]>, [SDNPHasChain, SDNPInGlue]>;
+def EZHselectcc : SDNode<"EZHISD::SELECT_CC", SDTypeProfile<1, 3, [SDTCisSameAs<0, 1>, SDTCisSameAs<1, 2>, SDTCisVT<3, i32>]>, [SDNPInGlue]>;
+def EZHbtog : SDNode<"EZHISD::BTOG", SDTypeProfile<1, 2, [SDTCisSameAs<0, 1>, SDTCisVT<2, i32>]>>;
+def EZHbrjt : SDNode<"EZHISD::BR_JT", SDTypeProfile<0, 3, [SDTCisVT<0, i32>, SDTCisVT<1, i32>, SDTCisVT<2, i32>]>, [SDNPHasChain]>;
+def EZHsjlj_setjmp : SDNode<"EZHISD::EH_SJLJ_SETJMP", SDTypeProfile<1, 1, [SDTCisVT<0, i32>, SDTCisVT<1, i32>]>, [SDNPHasChain, SDNPOptInGlue]>;
+def EZHsjlj_longjmp : SDNode<"EZHISD::EH_SJLJ_LONGJMP", SDTypeProfile<0, 1, [SDTCisVT<0, i32>]>, [SDNPHasChain, SDNPOptInGlue]>;
+def EZHsjlj_setup_dispatch : SDNode<"EZHISD::EH_SJLJ_SETUP_DISPATCH", SDTypeProfile<0, 0, []>, [SDNPHasChain, SDNPOptInGlue]>;
+
+let Defs = [RA], isTerminator = 1, isBarrier = 1, isBranch = 1, isIndirectBranch = 1 in
+def PseudoBR_JT : EZHPseudo<(outs), (ins GPRAll:$table, GPRAll:$index, i32imm:$jti), "# PseudoBR_JT $table, $index, $jti", [(EZHbrjt i32:$table, i32:$index, tjumptable:$jti)]>;
+
+def : Pat<(EZHbtog i32:$Rs, (i32 imm:$Bit)), (BTOG_IMM__ GPRAll:$Rs, imm:$Bit)>;
+
+let usesCustomInserter = 1, hasSideEffects = 1 in {
+  def PseudoCMP : EZHPseudo<(outs), (ins GPRAll:$lhs, GPRAll:$rhs), "", [(EZHcmp i32:$lhs, i32:$rhs)]>;
+  def PseudoCMPi : EZHPseudo<(outs), (ins GPRAll:$lhs, imms12:$rhs), "", [(EZHcmp i32:$lhs, imms12:$rhs)]>;
+}
+
+let usesCustomInserter = 1, isTerminator = 1, isBranch = 1 in {
+  def PseudoBR_CC : EZHPseudo<(outs), (ins brtarget:$dest, i32imm:$cc), "", [(EZHbrcc bb:$dest, timm:$cc)]>;
+}
+
+let usesCustomInserter = 1 in {
+  def PseudoSELECT_CC : EZHPseudo<(outs GPRAll:$dst), (ins GPRAll:$truev, GPRAll:$falsev, i32imm:$cc), "", [(set i32:$dst, (EZHselectcc i32:$truev, i32:$falsev, timm:$cc))]>;
+}
+
+// Pseudo instructions
+let isPseudo = 1, hasSideEffects = 1 in {
+  def ADJCALLSTACKDOWN : EZHPseudo<(outs), (ins i32imm:$amt1, i32imm:$amt2),
+                                 "",
+                                 [(EZH_adjcallstackdown timm:$amt1, timm:$amt2)]>;
+  def ADJCALLSTACKUP : EZHPseudo<(outs), (ins i32imm:$amt1, i32imm:$amt2),
+                              "",
+                              [(EZH_adjcallstackup timm:$amt1, timm:$amt2)]>;
+  
+  let usesCustomInserter = 1 in {
+    let Defs = [R0, R1, R2, R3, R4, R5, R6, R7, RA], isBarrier = 1 in {
+      def EH_SjLj_SetJmp : EZHPseudo<(outs GPRAll:$dst), (ins GPRAll:$buf), "", 
+                           [(set i32:$dst, (EZHsjlj_setjmp i32:$buf))]>;
+    }
+    let isTerminator = 1, isBarrier = 1 in {
+      def EH_SjLj_LongJmp : EZHPseudo<(outs), (ins GPRAll:$buf), "", 
+                            [(EZHsjlj_longjmp i32:$buf)]>;
+    }
+    let isBarrier = 1, hasSideEffects = 1 in {
+      def EH_SjLj_Setup_Dispatch : EZHPseudo<(outs), (ins), "",
+                            [(EZHsjlj_setup_dispatch)]>;
+    }
+  }
+}
+
+
+// Pseudo instructions
+
+foreach cc = CondCodes in {
+let Cond = cc.Value, S = 0 in {
+
+let isBranch = 1, isTerminator = 1, isBarrier = !if(!empty(cc.Suffix), 1, 0) in {
+  let S = 1 in {
+    def GOTO#cc.Suffix : EZHInstGoto<0, (outs), (ins brtarget:$addr), "e_goto"#cc.Suffix#" $addr", !if(!empty(cc.Suffix), [(br bb:$addr)], [])>;
+    def GOTOL#cc.Suffix : EZHInstGoto<1, (outs), (ins brtarget:$addr), "e_gotol"#cc.Suffix#" $addr", []> { let Defs = [RA]; }
+  }
+  let S = 0 in {
+    def GOTO_REG#cc.Suffix : EZHInstGotoReg<0, (outs), (ins GPRAll:$raddr), "e_goto_reg"#cc.Suffix#" $raddr", !if(!empty(cc.Suffix), [(brind i32:$raddr)], [])>;
+    def GOTO_REGL#cc.Suffix : EZHInstGotoReg<1, (outs), (ins GPRAll:$raddr), "e_goto_regl"#cc.Suffix#" $raddr", []> { let Defs = [RA]; }
+  }
+}
+
+let isCall = 1, Uses = [SP], Defs = [R0, R1, R2, R3, RA], isCodeGenOnly = 1 in {
+  let S = 1 in {
+      }
+  let S = 0 in {
+      }
+}
+// Hold instructions
+let isTerminator = 1, isBarrier = 1, hasSideEffects = 1 in {
+  let S = 0 in {
+    def HOLD#cc.Suffix : EZHInst<(outs), (ins), "e_hold"#cc.Suffix, []> {
+      let Opcode = 0x1C;
+      let Inst{13-10} = 13; // PC
+      let Inst{14} = 0;
+      let Inst{15} = 1;
+      let Inst{31-16} = 0;
+    }
+    
+    def VECTORED_HOLD#cc.Suffix : EZHInstVectoredHold<0, 0, (outs), (ins GPRAll:$table), "e_vectored_hold"#cc.Suffix#" $table", []>;
+    def VECTORED_HOLD_NRA#cc.Suffix : EZHInstVectoredHold<1, 0, (outs), (ins GPRAll:$table), "e_vectored_hold_nra"#cc.Suffix#" $table", []>;
+    def VECTORED_HOLD_LV#cc.Suffix : EZHInstVectoredHold<0, 1, (outs), (ins GPRAll:$table), "e_vectored_hold_lv"#cc.Suffix#" $table", []>;
+    def VECTORED_HOLD_LV_NRA#cc.Suffix : EZHInstVectoredHold<1, 1, (outs), (ins GPRAll:$table), "e_vectored_hold_lv_nra"#cc.Suffix#" $table", []>;
+  }
+  let S = 1 in {
+    def ACC_VECTORED_HOLD#cc.Suffix : EZHInstAccVectoredHold<0, 0, (outs), (ins GPRAll:$table, imms8:$vectors), "e_acc_vectored_hold"#cc.Suffix#" $table, $vectors", []>;
+    def ACC_VECTORED_HOLD_NRA#cc.Suffix : EZHInstAccVectoredHold<1, 0, (outs), (ins GPRAll:$table, imms8:$vectors), "e_acc_vectored_hold_nra"#cc.Suffix#" $table, $vectors", []>;
+    def ACC_VECTORED_HOLD_LV#cc.Suffix : EZHInstAccVectoredHold<0, 1, (outs), (ins GPRAll:$table, imms8:$vectors), "e_acc_vectored_hold_lv"#cc.Suffix#" $table, $vectors", []>;
+    def ACC_VECTORED_HOLD_LV_NRA#cc.Suffix : EZHInstAccVectoredHold<1, 1, (outs), (ins GPRAll:$table, imms8:$vectors), "e_acc_vectored_hold_lv_nra"#cc.Suffix#" $table, $vectors", []>;
+  }
+}
+
+} // let Cond
+} // foreach cc
+
+// Special Beats
+
+let Cond = 1, S = 0 in
+def HEART_RYTHM_IMM : EZHInstSingle<0x12, (outs), (ins imm16:$Imm), "e_heart_rythm_imm $Imm", []> {
+  bits<16> Imm;
+  let Inst{31-16} = Imm;
+  let Inst{15-6} = 0;
+  let Inst{5} = 1;
+}
+
+def HEART_RYTHM : EZHInstSingle<0x12, (outs), (ins GPRAll:$Rs), "e_heart_rythm $Rs", []> {
+  bits<4> Rs;
+  let Inst{31-18} = 0;
+  let Inst{17-14} = Rs;
+  let Inst{13-10} = 0;
+  let Inst{9} = 1;
+  let Inst{8-6} = 0;
+  let Inst{5} = 1;
+}
+
+def WAIT_FOR_BEAT : EZHInstSingle<0x12, (outs), (ins), "e_wait_for_beat", []> {
+  let Inst{31-7} = 0;
+  let Inst{6} = 1;
+  let Inst{5} = 1;
+  let Inst{4-0} = 0x12;
+}
+
+def SYNCH_ALL_TO_BEAT : EZHInstSingle<0x12, (outs), (ins imm1:$Imm), "e_synch_all_to_beat $Imm", []> {
+  bits<1> Imm;
+  let Inst{31} = Imm;
+  let Inst{30-7} = 0;
+  let Inst{6} = 1;
+  let Inst{5} = 0;
+  let Inst{4-0} = 0x12;
+}
+
+// Call instructions
+let isCall = 1, Defs = [R0, R1, R2, R3, RA] in {
+def CALL : EZHInstCall<0x03, (outs), (ins calltarget:$addr), "e_gosub $addr", [(EZH_call tglobaladdr:$addr)]>;
+let isCodeGenOnly = 1 in
+def CALLExt : EZHInstCall<0x03, (outs), (ins calltarget:$addr), "e_gosub $addr", [(EZH_call texternalsym:$addr)]>;
+}
+
+// Memory Patterns (Words and Bytes)
+// 16-bit access is handled by the Legalizer's Expand mechanism into bytes.
+def : Pat<(i32 (load GPRAll:$Rn)), (LDR GPRAll:$Rn, 0)>;
+def : Pat<(store i32:$Rd, GPRAll:$Rn), (STR GPRAll:$Rd, GPRAll:$Rn, 0)>;
+
+def : Pat<(i32 (zextloadi8 GPRAll:$Rn)), (LDRB GPRAll:$Rn, 0)>;
+def : Pat<(i32 (sextloadi8 GPRAll:$Rn)), (LDRBS GPRAll:$Rn, 0)>;
+def : Pat<(i32 (extloadi8 GPRAll:$Rn)), (LDRB GPRAll:$Rn, 0)>;
+
+// Final Memory Patterns and Indexed Addressing
+def : Pat<(i32 (load GPRAll:$Rn)), (LDR GPRAll:$Rn, 0)>;
+def : Pat<(store i32:$Rd, GPRAll:$Rn), (STR GPRAll:$Rd, GPRAll:$Rn, 0)>;
+
+
+// Memory Patterns (Words and Bytes)
+def : Pat<(i32 (load GPRAll:$Rn)), (LDR GPRAll:$Rn, 0)>;
+def : Pat<(store i32:$Rd, GPRAll:$Rn), (STR GPRAll:$Rd, GPRAll:$Rn, 0)>;
+
+def : Pat<(i32 (zextloadi8 GPRAll:$Rn)), (LDRB GPRAll:$Rn, 0)>;
+def : Pat<(i32 (sextloadi8 GPRAll:$Rn)), (LDRBS GPRAll:$Rn, 0)>;
+def : Pat<(i32 (extloadi8 GPRAll:$Rn)), (LDRB GPRAll:$Rn, 0)>;
+def : Pat<(truncstorei8 GPRAll:$Rd, GPRAll:$Rn), (STRB GPRAll:$Rd, GPRAll:$Rn, 0)>;
+
+def : Pat<(i32 (extloadi1 GPRAll:$Rn)), (LDRB GPRAll:$Rn, 0)>;
+def : Pat<(i32 (zextloadi1 GPRAll:$Rn)), (LDRB GPRAll:$Rn, 0)>;
+
+// Variable shift patterns
+def : Pat<(shl GPRAll:$Rs2, GPRAll:$Rshift), (RLSL__ GPRAll:$Rs2, GPRAll:$Rshift)>;
+def : Pat<(srl GPRAll:$Rs2, GPRAll:$Rshift), (RLSR__ GPRAll:$Rs2, GPRAll:$Rshift)>;
+def : Pat<(sra GPRAll:$Rs2, GPRAll:$Rshift), (RASR__ GPRAll:$Rs2, GPRAll:$Rshift)>;
+
+// Patterns for Opcode 6/8 shifted instructions (Shift the Result)
+def : Pat<(shl (add i32:$Rs1, i32:$Rs2), (i32 imm:$ShAmt)), (ADD_LSL__ GPRAll:$Rs1, GPRAll:$Rs2, imm:$ShAmt)>;
+def : Pat<(srl (add i32:$Rs1, i32:$Rs2), (i32 imm:$ShAmt)), (ADD_LSR__ GPRAll:$Rs1, GPRAll:$Rs2, imm:$ShAmt)>;
+def : Pat<(sra (add i32:$Rs1, i32:$Rs2), (i32 imm:$ShAmt)), (ADD_ASR__ GPRAll:$Rs1, GPRAll:$Rs2, imm:$ShAmt)>;
+def : Pat<(rotr (add i32:$Rs1, i32:$Rs2), (i32 imm:$ShAmt)), (ADD_ROR__ GPRAll:$Rs1, GPRAll:$Rs2, imm:$ShAmt)>;
+
+def : Pat<(shl (sub i32:$Rs1, i32:$Rs2), (i32 imm:$ShAmt)), (SUB_LSL__ GPRAll:$Rs1, GPRAll:$Rs2, imm:$ShAmt)>;
+def : Pat<(srl (sub i32:$Rs1, i32:$Rs2), (i32 imm:$ShAmt)), (SUB_LSR__ GPRAll:$Rs1, GPRAll:$Rs2, imm:$ShAmt)>;
+def : Pat<(sra (sub i32:$Rs1, i32:$Rs2), (i32 imm:$ShAmt)), (SUB_ASR__ GPRAll:$Rs1, GPRAll:$Rs2, imm:$ShAmt)>;
+def : Pat<(rotr (sub i32:$Rs1, i32:$Rs2), (i32 imm:$ShAmt)), (SUB_ROR__ GPRAll:$Rs1, GPRAll:$Rs2, imm:$ShAmt)>;
+
+//===----------------------------------------------------------------------===//
+// Instruction Selection Patterns (ISel lowering)
+//===----------------------------------------------------------------------===//
+
+// 1. Negate-Result ALU
+def : Pat<(not (add i32:$Rs1, i32:$Rs2)), (ADDNrr__ GPRAll:$Rs1, GPRAll:$Rs2)>;
+def : Pat<(not (sub i32:$Rs1, i32:$Rs2)), (SUBNrr__ GPRAll:$Rs1, GPRAll:$Rs2)>;
+def : Pat<(not (and i32:$Rs1, i32:$Rs2)), (ANDNrr__ GPRAll:$Rs1, GPRAll:$Rs2)>;
+def : Pat<(not (or i32:$Rs1, i32:$Rs2)), (ORNrr__ GPRAll:$Rs1, GPRAll:$Rs2)>;
+def : Pat<(not (xor i32:$Rs1, i32:$Rs2)), (XORNrr__ GPRAll:$Rs1, GPRAll:$Rs2)>;
+
+// 2. Combined AND-then-OR
+def : Pat<(or (and i32:$Rs1, i32:$Rs2), i32:$Rs3), (ANDOR__ GPRAll:$Rs1, GPRAll:$Rs2, GPRAll:$Rs3)>;
+
+// 3. Dynamic Bit Manipulation
+def : Pat<(or i32:$Rs, (shl 1, i32:$Rbit)), (BSET__ GPRAll:$Rs, GPRAll:$Rbit)>;
+def : Pat<(and i32:$Rs, (not (shl 1, i32:$Rbit))), (BCLR__ GPRAll:$Rs, GPRAll:$Rbit)>;
+def : Pat<(xor i32:$Rs, (shl 1, i32:$Rbit)), (BTOG__ GPRAll:$Rs, GPRAll:$Rbit)>;
+def : Pat<(and i32:$Rs, (shl 1, i32:$Rbit)), (BTST__ GPRAll:$Rs, GPRAll:$Rbit)>;
+
+// 4. Immediate Bit Manipulation (Power of 2 Matching)
+def Log2 : SDNodeXForm<imm, [{
+  return CurDAG->getTargetConstant(Log2_32(N->getZExtValue()), SDLoc(N), MVT::i32);
+}]>;
+
+def Log2Inv : SDNodeXForm<imm, [{
+  return CurDAG->getTargetConstant(Log2_32(~N->getZExtValue()), SDLoc(N), MVT::i32);
+}]>;
+
+def power_of_2 : PatLeaf<(imm), [{
+  return isPowerOf2_32(N->getZExtValue());
+}], Log2>;
+
+def power_of_2_inv : PatLeaf<(imm), [{
+  return isPowerOf2_32(~N->getZExtValue());
+}], Log2Inv>;
+
+def : Pat<(or i32:$Rs, power_of_2:$Bit), (BSET_IMM__ GPRAll:$Rs, power_of_2:$Bit)>;
+def : Pat<(and i32:$Rs, power_of_2_inv:$Bit), (BCLR_IMM__ GPRAll:$Rs, power_of_2_inv:$Bit)>;
+def : Pat<(xor i32:$Rs, power_of_2:$Bit), (BTOG_IMM__ GPRAll:$Rs, power_of_2:$Bit)>;
+
+def : Pat<(bswap i32:$Rs2), (FEND_LSR__ GPRAll:$Rs2, 0)>;
+def : Pat<(bitreverse i32:$Rs2), (FBIT_LSR__ GPRAll:$Rs2, 0)>;
diff --git a/llvm/lib/Target/EZH/EZHMCInstLower.cpp b/llvm/lib/Target/EZH/EZHMCInstLower.cpp
new file mode 100644
index 0000000000000..48c66e3dd0296
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHMCInstLower.cpp
@@ -0,0 +1,89 @@
+//=-- EZHMCInstLower.cpp - Convert EZH MachineInstr to an MCInst --------=//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHMCInstLower.h"
+#include "llvm/CodeGen/AsmPrinter.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCExpr.h"
+#include "llvm/MC/MCInst.h"
+
+using namespace llvm;
+
+MCSymbol *
+EZHMCInstLower::GetGlobalAddressSymbol(const MachineOperand &MO) const {
+  return Printer.getSymbol(MO.getGlobal());
+}
+
+MCSymbol *
+EZHMCInstLower::GetBlockAddressSymbol(const MachineOperand &MO) const {
+  return Printer.GetBlockAddressSymbol(MO.getBlockAddress());
+}
+
+MCSymbol *
+EZHMCInstLower::GetExternalSymbolSymbol(const MachineOperand &MO) const {
+  return Printer.GetExternalSymbolSymbol(MO.getSymbolName());
+}
+
+MCSymbol *EZHMCInstLower::GetJumpTableSymbol(const MachineOperand &MO) const {
+  return Printer.GetJTISymbol(MO.getIndex());
+}
+
+MCSymbol *
+EZHMCInstLower::GetConstantPoolIndexSymbol(const MachineOperand &MO) const {
+  return Printer.GetCPISymbol(MO.getIndex());
+}
+
+MCOperand EZHMCInstLower::LowerSymbolOperand(const MachineOperand &MO,
+                                             MCSymbol *Sym) const {
+  const MCExpr *Expr = MCSymbolRefExpr::create(Sym, Ctx);
+  if (!MO.isJTI() && MO.getOffset())
+    Expr = MCBinaryExpr::createAdd(
+        Expr, MCConstantExpr::create(MO.getOffset(), Ctx), Ctx);
+  return MCOperand::createExpr(Expr);
+}
+
+void EZHMCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
+  OutMI.setOpcode(MI->getOpcode());
+
+  for (const MachineOperand &MO : MI->operands()) {
+    MCOperand MCOp;
+    switch (MO.getType()) {
+    case MachineOperand::MO_Register:
+      if (MO.isImplicit())
+        continue;
+      MCOp = MCOperand::createReg(MO.getReg());
+      break;
+    case MachineOperand::MO_Immediate:
+      MCOp = MCOperand::createImm(MO.getImm());
+      break;
+    case MachineOperand::MO_MachineBasicBlock:
+      MCOp = MCOperand::createExpr(
+          MCSymbolRefExpr::create(MO.getMBB()->getSymbol(), Ctx));
+      break;
+    case MachineOperand::MO_GlobalAddress:
+      MCOp = LowerSymbolOperand(MO, GetGlobalAddressSymbol(MO));
+      break;
+    case MachineOperand::MO_ExternalSymbol:
+      MCOp = LowerSymbolOperand(MO, GetExternalSymbolSymbol(MO));
+      break;
+    case MachineOperand::MO_JumpTableIndex:
+      MCOp = LowerSymbolOperand(MO, GetJumpTableSymbol(MO));
+      break;
+    case MachineOperand::MO_ConstantPoolIndex:
+      MCOp = LowerSymbolOperand(MO, GetConstantPoolIndexSymbol(MO));
+      break;
+    case MachineOperand::MO_RegisterMask:
+      continue;
+    default:
+      llvm_unreachable("unknown operand type");
+    }
+    OutMI.addOperand(MCOp);
+  }
+}
diff --git a/llvm/lib/Target/EZH/EZHMCInstLower.h b/llvm/lib/Target/EZH/EZHMCInstLower.h
new file mode 100644
index 0000000000000..626614920350c
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHMCInstLower.h
@@ -0,0 +1,44 @@
+//===-- EZHMCInstLower.h - Lower MachineInstr to MCInst -------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHMCINSTLOWER_H
+#define LLVM_LIB_TARGET_EZH_EZHMCINSTLOWER_H
+
+#include "llvm/Support/Compiler.h"
+
+namespace llvm {
+class AsmPrinter;
+class MCContext;
+class MCInst;
+class MCOperand;
+class MCSymbol;
+class MachineInstr;
+class MachineOperand;
+
+// EZHMCInstLower - This class is used to lower an MachineInstr
+// into an MCInst.
+class LLVM_LIBRARY_VISIBILITY EZHMCInstLower {
+  MCContext &Ctx;
+
+  AsmPrinter &Printer;
+
+public:
+  EZHMCInstLower(MCContext &CTX, AsmPrinter &AP) : Ctx(CTX), Printer(AP) {}
+  void Lower(const MachineInstr *MI, MCInst &OutMI) const;
+
+  MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const;
+
+  MCSymbol *GetGlobalAddressSymbol(const MachineOperand &MO) const;
+  MCSymbol *GetBlockAddressSymbol(const MachineOperand &MO) const;
+  MCSymbol *GetExternalSymbolSymbol(const MachineOperand &MO) const;
+  MCSymbol *GetJumpTableSymbol(const MachineOperand &MO) const;
+  MCSymbol *GetConstantPoolIndexSymbol(const MachineOperand &MO) const;
+};
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHMCINSTLOWER_H
diff --git a/llvm/lib/Target/EZH/EZHMachineFunctionInfo.cpp b/llvm/lib/Target/EZH/EZHMachineFunctionInfo.cpp
new file mode 100644
index 0000000000000..59d2e62850601
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHMachineFunctionInfo.cpp
@@ -0,0 +1,20 @@
+//===-- EZHMachineFuctionInfo.cpp - EZH machine function info ---===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHMachineFunctionInfo.h"
+
+using namespace llvm;
+
+void EZHMachineFunctionInfo::anchor() {}
+
+MachineFunctionInfo *EZHMachineFunctionInfo::clone(
+    BumpPtrAllocator &Allocator, MachineFunction &DestMF,
+    const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB)
+    const {
+  return DestMF.cloneInfo<EZHMachineFunctionInfo>(*this);
+}
diff --git a/llvm/lib/Target/EZH/EZHMachineFunctionInfo.h b/llvm/lib/Target/EZH/EZHMachineFunctionInfo.h
new file mode 100644
index 0000000000000..954fc77818a6b
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHMachineFunctionInfo.h
@@ -0,0 +1,66 @@
+//===- EZHMachineFuctionInfo.h - EZH machine func info -------*- C++ -*-==//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares EZH-specific per-machine-function information.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHMACHINEFUNCTIONINFO_H
+#define LLVM_LIB_TARGET_EZH_EZHMACHINEFUNCTIONINFO_H
+
+#include "EZHRegisterInfo.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/Support/Allocator.h"
+
+namespace llvm {
+
+// EZHMachineFunctionInfo - This class is derived from MachineFunction and
+// contains private EZH target-specific information for each MachineFunction.
+class EZHMachineFunctionInfo : public MachineFunctionInfo {
+  virtual void anchor();
+
+  // SRetReturnReg - EZH ABI require that sret lowering includes
+  // returning the value of the returned struct in a register. This field
+  // holds the virtual register into which the sret argument is passed.
+  Register SRetReturnReg;
+
+  // VarArgsFrameIndex - FrameIndex for start of varargs area.
+  int VarArgsFrameIndex;
+
+  // VarArgsSaveSize - Size of the varargs register save area.
+  unsigned VarArgsSaveSize;
+
+  // VarArgsRegIdx - The first register index that is spilled for varargs.
+  unsigned VarArgsRegIdx;
+
+public:
+  EZHMachineFunctionInfo(const Function &F, const TargetSubtargetInfo *STI)
+      : VarArgsFrameIndex(0), VarArgsSaveSize(0), VarArgsRegIdx(0) {}
+  MachineFunctionInfo *
+  clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF,
+        const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB)
+      const override;
+
+  Register getSRetReturnReg() const { return SRetReturnReg; }
+  void setSRetReturnReg(Register Reg) { SRetReturnReg = Reg; }
+
+  int getVarArgsFrameIndex() const { return VarArgsFrameIndex; }
+  void setVarArgsFrameIndex(int Index) { VarArgsFrameIndex = Index; }
+
+  unsigned getVarArgsSaveSize() const { return VarArgsSaveSize; }
+  void setVarArgsSaveSize(unsigned Size) { VarArgsSaveSize = Size; }
+
+  unsigned getVarArgsRegIdx() const { return VarArgsRegIdx; }
+  void setVarArgsRegIdx(unsigned Idx) { VarArgsRegIdx = Idx; }
+};
+
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHMACHINEFUNCTIONINFO_H
diff --git a/llvm/lib/Target/EZH/EZHRegisterInfo.cpp b/llvm/lib/Target/EZH/EZHRegisterInfo.cpp
new file mode 100644
index 0000000000000..823f6d7acbb06
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHRegisterInfo.cpp
@@ -0,0 +1,335 @@
+//===-- EZHRegisterInfo.cpp - EZH Register Information ------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHRegisterInfo.h"
+#include "EZHFrameLowering.h"
+#include "EZHInstrInfo.h"
+#include "EZHMachineFunctionInfo.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/ADT/BitVector.h"
+#include "llvm/CodeGen/MachineConstantPool.h"
+#include "llvm/CodeGen/MachineFrameInfo.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+#include "llvm/CodeGen/RegisterScavenging.h"
+#include "llvm/CodeGen/TargetFrameLowering.h"
+#include "llvm/IR/Constants.h"
+#include "llvm/IR/Type.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/raw_ostream.h"
+#include "llvm/Target/TargetMachine.h"
+
+#define GET_REGINFO_TARGET_DESC
+#include "EZHGenRegisterInfo.inc"
+
+using namespace llvm;
+
+EZHRegisterInfo::EZHRegisterInfo() : EZHGenRegisterInfo(EZH::RA) {}
+
+const uint16_t *
+EZHRegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
+  return CSR_EZH_SaveList;
+}
+
+BitVector EZHRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
+  BitVector Reserved(getNumRegs());
+
+  auto ReserveRegAndAliases = [&](Register Reg) {
+    for (MCRegAliasIterator Alias(Reg, this, true); Alias.isValid(); ++Alias)
+      Reserved.set(*Alias);
+  };
+
+  ReserveRegAndAliases(EZH::SP);
+  ReserveRegAndAliases(EZH::PC);
+  ReserveRegAndAliases(EZH::RA);
+  ReserveRegAndAliases(EZH::GPO);
+  ReserveRegAndAliases(EZH::GPD);
+  ReserveRegAndAliases(EZH::CFS);
+  ReserveRegAndAliases(EZH::CFM);
+  ReserveRegAndAliases(EZH::GPI);
+
+  const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
+  if (TFI->hasFP(MF))
+    ReserveRegAndAliases(EZH::R7);
+
+  if (hasBasePointer(MF))
+    ReserveRegAndAliases(getBaseRegister());
+
+  return Reserved;
+}
+
+bool EZHRegisterInfo::requiresRegisterScavenging(
+    const MachineFunction &MF) const {
+  return true;
+}
+
+bool EZHRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
+                                          int SPAdj, unsigned FIOperandNum,
+                                          RegScavenger *RS) const {
+  MachineInstr &MI = *II;
+  MachineBasicBlock &MBB = *MI.getParent();
+  MachineFunction &MF = *MBB.getParent();
+  const EZHInstrInfo *TII =
+      static_cast<const EZHInstrInfo *>(MF.getSubtarget().getInstrInfo());
+  DebugLoc DL = MI.getDebugLoc();
+
+  int FrameIndex = MI.getOperand(FIOperandNum).getIndex();
+  int Offset = MI.getOperand(FIOperandNum + 1).getImm();
+
+  const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
+  Register FrameReg = EZH::SP;
+
+  bool HasFP = TFI->hasFP(MF);
+  bool HasBP = hasBasePointer(MF);
+  bool IsFixed = MF.getFrameInfo().isFixedObjectIndex(FrameIndex);
+
+  if (HasBP && !IsFixed) {
+    FrameReg = getBaseRegister(); // R6
+    Offset += MF.getFrameInfo().getObjectOffset(FrameIndex);
+    Offset += MF.getFrameInfo().getStackSize() + SPAdj;
+  } else if (HasFP) {
+    FrameReg = EZH::R7;
+    unsigned CSRSize = 0;
+    if (MF.getFunction().isVarArg()) {
+      EZHMachineFunctionInfo *FuncInfo = MF.getInfo<EZHMachineFunctionInfo>();
+      CSRSize = FuncInfo->getVarArgsSaveSize() + 4;
+    } else {
+      const std::vector<CalleeSavedInfo> &CSI =
+          MF.getFrameInfo().getCalleeSavedInfo();
+      CSRSize = CSI.size() * 4;
+      CSRSize += 4; // R7 itself
+    }
+    Offset += MF.getFrameInfo().getObjectOffset(FrameIndex) + CSRSize;
+  } else {
+    Offset += MF.getFrameInfo().getObjectOffset(FrameIndex);
+    Offset += MF.getFrameInfo().getStackSize() + SPAdj;
+  }
+
+  // Determine if the offset fits in the immediate field of the memory
+  // instruction.
+  unsigned Opc = MI.getOpcode();
+  bool IsWordMem =
+      (Opc == EZH::LDR || Opc == EZH::STR || Opc == EZH::LDR_PRE ||
+       Opc == EZH::LDR_POST || Opc == EZH::STR_PRE || Opc == EZH::STR_POST);
+
+  bool Fits = false;
+  if (IsWordMem) {
+    if (Offset >= -512 && Offset <= 508 && (Offset & 3) == 0)
+      Fits = true;
+  } else {
+    if (Offset >= -128 && Offset <= 127)
+      Fits = true;
+  }
+
+  if (Fits) {
+    MI.getOperand(FIOperandNum).ChangeToRegister(FrameReg, false);
+    MI.getOperand(FIOperandNum + 1).ChangeToImmediate(Offset);
+    return false;
+  }
+
+  // Offset does not fit natively. Use the RegScavenger to materialize it.
+  Register ScratchReg;
+  bool PushPopFallback = false;
+
+  if (RS) {
+    ScratchReg = RS->FindUnusedReg(&EZH::GPRRegClass);
+    // Ensure the scavenged scratch register is not actively used by the memory
+    // instruction itself!
+    if (ScratchReg && (MI.readsRegister(ScratchReg, this) ||
+                       MI.definesRegister(ScratchReg, this))) {
+      ScratchReg = EZH::NoRegister;
+    }
+    // Bypass scavengeRegisterBackwards to avoid risky spills that cause
+    // recursion crashes. If no free register is found, we safe-fallback to
+    // pushing/popping a temporary register.
+  }
+
+  if (!ScratchReg) {
+    Register FallbackReg = EZH::NoRegister;
+    static const Register Candidates[] = {EZH::R4, EZH::R5, EZH::R6, EZH::R7};
+    for (Register Reg : Candidates) {
+      if (Reg != FrameReg && !MI.readsRegister(Reg, this) &&
+          !MI.definesRegister(Reg, this)) {
+        FallbackReg = Reg;
+        break;
+      }
+    }
+    if (!FallbackReg) {
+      static const Register Callers[] = {EZH::R0, EZH::R1, EZH::R2, EZH::R3};
+      for (Register Reg : Callers) {
+        if (Reg != FrameReg && !MI.readsRegister(Reg, this) &&
+            !MI.definesRegister(Reg, this)) {
+          FallbackReg = Reg;
+          break;
+        }
+      }
+    }
+    assert(FallbackReg != EZH::NoRegister &&
+           "Could not find any fallback register!");
+    ScratchReg = FallbackReg;
+    PushPopFallback = true;
+  }
+
+  if (PushPopFallback) {
+    if (FrameReg == EZH::SP)
+      Offset += 4; // Compensate for SP decrement due to push when SP is base
+    BuildMI(MBB, II, DL, TII->get(EZH::STR_PRE), EZH::SP)
+        .addReg(ScratchReg)
+        .addReg(EZH::SP)
+        .addImm(-4);
+  }
+
+  if (Offset > 0 && Offset <= 2047) {
+    BuildMI(MBB, II, DL, TII->get(EZH::ADDri__))
+        .addDef(ScratchReg)
+        .addReg(FrameReg)
+        .addImm(Offset);
+  } else if (Offset < 0 && Offset >= -2048) {
+    BuildMI(MBB, II, DL, TII->get(EZH::SUBri__))
+        .addDef(ScratchReg)
+        .addReg(FrameReg)
+        .addImm(-Offset);
+  } else {
+    // Load Offset into ScratchReg, then add SP
+    uint32_t UOffset = static_cast<uint32_t>(Offset);
+    uint32_t ShiftAmt = 0;
+    while ((UOffset & 1) == 0 && ShiftAmt < 31 && UOffset != 0) {
+      UOffset >>= 1;
+      ++ShiftAmt;
+    }
+    if (UOffset < 1024) {
+      BuildMI(MBB, II, DL, TII->get(EZH::MOVSri__))
+          .addDef(ScratchReg)
+          .addImm(UOffset)
+          .addImm(ShiftAmt);
+    } else {
+      // Process strictly from High-to-Low (MSB to LSB)
+      // This allows us to:
+      // 1. Load the highest non-zero byte chunk natively via MOVri (or MOVSri)
+      // 2. Left-shift the scratch register by 8 bits
+      // 3. Directly OR the next lower-order non-zero byte chunk via ORri
+      // This keeps code size strictly minimal and completely avoids secondary
+      // scratch registers.
+      uint32_t UOffset = static_cast<uint32_t>(Offset);
+
+      // Extract non-zero byte chunks
+      uint8_t Bytes[4];
+      Bytes[3] = (UOffset >> 24) & 0xFF;
+      Bytes[2] = (UOffset >> 16) & 0xFF;
+      Bytes[1] = (UOffset >> 8) & 0xFF;
+      Bytes[0] = UOffset & 0xFF;
+
+      int FirstNonZeroIdx = -1;
+      for (int i = 3; i >= 0; --i) {
+        if (Bytes[i] != 0) {
+          FirstNonZeroIdx = i;
+          break;
+        }
+      }
+
+      if (FirstNonZeroIdx != -1) {
+        int NextNonZeroIdx = -1;
+        for (int i = FirstNonZeroIdx - 1; i >= 0; --i) {
+          if (Bytes[i] != 0) {
+            NextNonZeroIdx = i;
+            break;
+          }
+        }
+
+        if (NextNonZeroIdx != -1) {
+          unsigned FirstShift = (FirstNonZeroIdx - NextNonZeroIdx) * 8;
+          BuildMI(MBB, II, DL, TII->get(EZH::MOVSri__), ScratchReg)
+              .addImm(Bytes[FirstNonZeroIdx])
+              .addImm(FirstShift);
+
+          BuildMI(MBB, II, DL, TII->get(EZH::ORri__), ScratchReg)
+              .addReg(ScratchReg)
+              .addImm(Bytes[NextNonZeroIdx]);
+
+          unsigned ShiftAccum = 0;
+          for (int i = NextNonZeroIdx - 1; i >= 0; --i) {
+            ShiftAccum += 8;
+            if (Bytes[i] != 0) {
+              BuildMI(MBB, II, DL, TII->get(EZH::LSLi__), ScratchReg)
+                  .addReg(ScratchReg)
+                  .addImm(ShiftAccum);
+              ShiftAccum = 0;
+
+              BuildMI(MBB, II, DL, TII->get(EZH::ORri__), ScratchReg)
+                  .addReg(ScratchReg)
+                  .addImm(Bytes[i]);
+            }
+          }
+          if (ShiftAccum > 0) {
+            BuildMI(MBB, II, DL, TII->get(EZH::LSLi__), ScratchReg)
+                .addReg(ScratchReg)
+                .addImm(ShiftAccum);
+          }
+        } else {
+          BuildMI(MBB, II, DL, TII->get(EZH::MOVri__), ScratchReg)
+              .addImm(Bytes[FirstNonZeroIdx]);
+          if (FirstNonZeroIdx > 0) {
+            BuildMI(MBB, II, DL, TII->get(EZH::LSLi__), ScratchReg)
+                .addReg(ScratchReg)
+                .addImm(FirstNonZeroIdx * 8);
+          }
+        }
+      }
+    }
+    BuildMI(MBB, II, DL, TII->get(EZH::ADDrr__))
+        .addDef(ScratchReg)
+        .addReg(ScratchReg)
+        .addReg(FrameReg);
+  }
+
+  MI.getOperand(FIOperandNum).ChangeToRegister(ScratchReg, false);
+  MI.getOperand(FIOperandNum + 1).ChangeToImmediate(0);
+
+  if (PushPopFallback) {
+    MachineBasicBlock::iterator NextII = std::next(II);
+    BuildMI(MBB, NextII, DL, TII->get(EZH::LDR_POST), ScratchReg)
+        .addReg(EZH::SP, RegState::Define)
+        .addReg(EZH::SP)
+        .addImm(4);
+  }
+
+  return false;
+}
+
+Register EZHRegisterInfo::getFrameRegister(const MachineFunction &MF) const {
+  const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering();
+  return TFI->hasFP(MF) ? EZH::R7 : EZH::SP;
+}
+
+const uint32_t *
+EZHRegisterInfo::getCallPreservedMask(const MachineFunction &MF,
+                                      CallingConv::ID CC) const {
+  return CSR_EZH_RegMask;
+}
+
+unsigned EZHRegisterInfo::getRARegister() const { return EZH::RA; }
+
+Register EZHRegisterInfo::getBaseRegister() const { return EZH::R6; }
+
+bool EZHRegisterInfo::hasBasePointer(const MachineFunction &MF) const {
+  return hasStackRealignment(MF);
+}
+
+bool EZHRegisterInfo::shouldCoalesce(
+    MachineInstr *MI, const TargetRegisterClass *SrcRC, unsigned SubReg,
+    const TargetRegisterClass *DstRC, unsigned DstSubReg,
+    const TargetRegisterClass *NewRC, LiveIntervals &LIS) const {
+  // Protect stack pointer allocations, saves, and restores from aggressive
+  // register coalescing.
+  if (SrcRC == &EZH::SPRRegClass || DstRC == &EZH::SPRRegClass ||
+      NewRC == &EZH::SPRRegClass)
+    return false;
+
+  return true;
+}
diff --git a/llvm/lib/Target/EZH/EZHRegisterInfo.h b/llvm/lib/Target/EZH/EZHRegisterInfo.h
new file mode 100644
index 0000000000000..66d6de400ae60
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHRegisterInfo.h
@@ -0,0 +1,60 @@
+//===- EZHRegisterInfo.h - EZH Register Information Impl ----*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the EZH implementation of the TargetRegisterInfo class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHREGISTERINFO_H
+#define LLVM_LIB_TARGET_EZH_EZHREGISTERINFO_H
+
+#include "llvm/ADT/BitVector.h"
+#include "llvm/CodeGen/Register.h"
+#include "llvm/CodeGen/TargetRegisterInfo.h"
+
+#define GET_REGINFO_HEADER
+#include "EZHGenRegisterInfo.inc"
+
+namespace llvm {
+
+class LiveIntervals;
+class RegScavenger;
+
+/// EZH Register Information.
+struct EZHRegisterInfo : public EZHGenRegisterInfo {
+  EZHRegisterInfo();
+
+  const uint32_t *getCallPreservedMask(const MachineFunction &MF,
+                                       CallingConv::ID) const override;
+
+  // Code Generation virtual methods.
+  const uint16_t *
+  getCalleeSavedRegs(const MachineFunction *MF = nullptr) const override;
+
+  BitVector getReservedRegs(const MachineFunction &MF) const override;
+
+  bool requiresRegisterScavenging(const MachineFunction &MF) const override;
+
+  bool eliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj,
+                           unsigned FIOperandNum,
+                           RegScavenger *RS = nullptr) const override;
+
+  // Debug information queries.
+  unsigned getRARegister() const;
+  Register getFrameRegister(const MachineFunction &MF) const override;
+  Register getBaseRegister() const;
+  bool hasBasePointer(const MachineFunction &MF) const;
+  bool shouldCoalesce(MachineInstr *MI, const TargetRegisterClass *SrcRC,
+                      unsigned SubReg, const TargetRegisterClass *DstRC,
+                      unsigned DstSubReg, const TargetRegisterClass *NewRC,
+                      LiveIntervals &LIS) const override;
+};
+
+} // end namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHREGISTERINFO_H
diff --git a/llvm/lib/Target/EZH/EZHRegisterInfo.td b/llvm/lib/Target/EZH/EZHRegisterInfo.td
new file mode 100644
index 0000000000000..63ac66e1bfeb4
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHRegisterInfo.td
@@ -0,0 +1,65 @@
+//===-- EZHRegisterInfo.td - EZH Register defs ---------*- tablegen -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+class EZHReg<bits<4> num, string n> : Register<n> {
+  field bits<4> Num;
+  let Num = num;
+  let Namespace = "EZH";
+  let HWEncoding{3-0} = num;
+}
+
+def sub_even : SubRegIndex<32>;
+def sub_odd  : SubRegIndex<32, 32>;
+
+// General Purpose Registers
+foreach i = 0-7 in {
+  def R#i : EZHReg<i, "r"#i>, DwarfRegNum<[i]>;
+}
+
+def R0_R1 : RegisterTuples<[sub_even, sub_odd], [(add R0), (add R1)]>;
+def R2_R3 : RegisterTuples<[sub_even, sub_odd], [(add R2), (add R3)]>;
+def R4_R5 : RegisterTuples<[sub_even, sub_odd], [(add R4), (add R5)]>;
+def R6_R7 : RegisterTuples<[sub_even, sub_odd], [(add R6), (add R7)]>;
+
+def GPO : EZHReg<8,  "gpo">, DwarfRegNum<[8]>;
+def GPD : EZHReg<9,  "gpd">, DwarfRegNum<[9]>;
+def CFS : EZHReg<10, "cfs">, DwarfRegNum<[10]>;
+def CFM : EZHReg<11, "cfm">, DwarfRegNum<[11]>;
+def SP  : EZHReg<12, "sp">, DwarfRegNum<[12]>;
+def PC  : EZHReg<13, "pc">, DwarfRegNum<[13]>;
+def GPI : EZHReg<14, "gpi">, DwarfRegNum<[14]>;
+def RA  : EZHReg<15, "ra">, DwarfRegNum<[15]>;
+
+// Register classes
+def GPR : RegisterClass<"EZH", [i32], 32, (add
+  R0, R1, R2, R3, R4, R5, R6, R7, RA, SP, PC, GPO, GPD, CFS, CFM, GPI
+)>;
+
+def GPRPair : RegisterClass<"EZH", [i64], 64, (add
+  R0_R1, R2_R3, R4_R5, R6_R7
+)>;
+
+def tcGPR : RegisterClass<"EZH", [i32], 32, (add R0, R1, R2, R3, R4, R5)>;
+
+def GPRSP : RegisterClass<"EZH", [i32], 32, (add
+  GPR, SP
+)>;
+
+def GPRAll : RegisterClass<"EZH", [i32], 32, (add
+  GPR, SP, PC, RA, GPO, GPD, CFS, CFM, GPI
+)>;
+
+def SPR : RegisterClass<"EZH", [i32], 32, (add SP)>;
+def PCR : RegisterClass<"EZH", [i32], 32, (add PC)>;
+
+// Condition code register
+def SR : EZHReg<0, "sw">;
+def CCR : RegisterClass<"EZH", [i32], 32, (add SR)> {
+  let CopyCost = -1;
+  let isAllocatable = 0;
+}
diff --git a/llvm/lib/Target/EZH/EZHSchedule.td b/llvm/lib/Target/EZH/EZHSchedule.td
new file mode 100644
index 0000000000000..238ffa56d0f97
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHSchedule.td
@@ -0,0 +1,69 @@
+//=-EZHSchedule.td - EZH Scheduling Definitions --*- tablegen -*-=========//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+def ALU_FU  : FuncUnit;
+def LDST_FU : FuncUnit;
+
+def IIC_ALU  : InstrItinClass;
+def IIC_LD   : InstrItinClass;
+def IIC_ST   : InstrItinClass;
+def IIC_LDSW : InstrItinClass;
+def IIC_STSW : InstrItinClass;
+
+def EZHItinerary : ProcessorItineraries<[ALU_FU, LDST_FU],[],[
+  InstrItinData<IIC_LD,   [InstrStage<1, [LDST_FU]>]>,
+  InstrItinData<IIC_ST,   [InstrStage<1, [LDST_FU]>]>,
+  InstrItinData<IIC_LDSW, [InstrStage<2, [LDST_FU]>]>,
+  InstrItinData<IIC_STSW, [InstrStage<2, [LDST_FU]>]>,
+  InstrItinData<IIC_ALU,  [InstrStage<1, [ALU_FU]>]>
+]>;
+
+def EZHSchedModel : SchedMachineModel {
+  // Cycles for loads to access the cache [default = -1]
+  let LoadLatency = 2;
+
+  // Max micro-ops that can be buffered for optimized loop dispatch/execution.
+  // [default = -1]
+  let LoopMicroOpBufferSize = 0;
+
+  // Allow scheduler to assign default model to any unrecognized opcodes.
+  // [default = 1]
+  let CompleteModel = 0;
+
+  // Max micro-ops that may be scheduled per cycle. [default = 1]
+  let IssueWidth = 1;
+
+  // Extra cycles for a mispredicted branch. [default = -1]
+  let MispredictPenalty = 10;
+
+  // Enable Post RegAlloc Scheduler pass. [default = 0]
+  let PostRAScheduler = 0;
+
+  // Max micro-ops that can be buffered. [default = -1]
+  let MicroOpBufferSize = 0;
+
+  // Per-cycle resources tables. [default = NoItineraries]
+  let Itineraries = EZHItinerary;
+}
+
+def ALU : ProcResource<1> { let BufferSize = 0; }
+def LdSt : ProcResource<1> { let BufferSize = 0; }
+
+def WriteLD   : SchedWrite;
+def WriteST   : SchedWrite;
+def WriteLDSW : SchedWrite;
+def WriteSTSW : SchedWrite;
+def WriteALU  : SchedWrite;
+
+let SchedModel = EZHSchedModel in {
+  def : WriteRes<WriteLD, [LdSt]>   { let Latency = 2; }
+  def : WriteRes<WriteST, [LdSt]>   { let Latency = 2; }
+  def : WriteRes<WriteLDSW, [LdSt]> { let Latency = 2; }
+  def : WriteRes<WriteSTSW, [LdSt]> { let Latency = 4; }
+  def : WriteRes<WriteALU, [ALU]>   { let Latency = 1; }
+}
diff --git a/llvm/lib/Target/EZH/EZHSelectionDAGInfo.cpp b/llvm/lib/Target/EZH/EZHSelectionDAGInfo.cpp
new file mode 100644
index 0000000000000..ea49c58085076
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHSelectionDAGInfo.cpp
@@ -0,0 +1,28 @@
+//===-- EZHSelectionDAGInfo.cpp - EZH SelectionDAG Info -------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the EZHSelectionDAGInfo class.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHSelectionDAGInfo.h"
+
+#define DEBUG_TYPE "ezh-selectiondag-info"
+
+using namespace llvm;
+
+EZHSelectionDAGInfo::EZHSelectionDAGInfo() : SelectionDAGTargetInfo() {}
+
+SDValue EZHSelectionDAGInfo::EmitTargetCodeForMemcpy(
+    SelectionDAG & /*DAG*/, const SDLoc & /*dl*/, SDValue /*Chain*/,
+    SDValue /*Dst*/, SDValue /*Src*/, SDValue Size, Align /*Alignment*/,
+    bool /*isVolatile*/, bool /*AlwaysInline*/,
+    MachinePointerInfo /*DstPtrInfo*/,
+    MachinePointerInfo /*SrcPtrInfo*/) const {
+  return SDValue();
+}
diff --git a/llvm/lib/Target/EZH/EZHSelectionDAGInfo.h b/llvm/lib/Target/EZH/EZHSelectionDAGInfo.h
new file mode 100644
index 0000000000000..7137dce41ab3f
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHSelectionDAGInfo.h
@@ -0,0 +1,34 @@
+//===-- EZHSelectionDAGInfo.h - EZH SelectionDAG Info ---------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the EZH subclass for SelectionDAGTargetInfo.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHSELECTIONDAGINFO_H
+#define LLVM_LIB_TARGET_EZH_EZHSELECTIONDAGINFO_H
+
+#include "llvm/CodeGen/SelectionDAGTargetInfo.h"
+
+namespace llvm {
+
+class EZHSelectionDAGInfo : public SelectionDAGTargetInfo {
+public:
+  EZHSelectionDAGInfo();
+
+  SDValue EmitTargetCodeForMemcpy(SelectionDAG &DAG, const SDLoc &dl,
+                                  SDValue Chain, SDValue Dst, SDValue Src,
+                                  SDValue Size, Align Alignment,
+                                  bool isVolatile, bool AlwaysInline,
+                                  MachinePointerInfo DstPtrInfo,
+                                  MachinePointerInfo SrcPtrInfo) const override;
+};
+
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHSELECTIONDAGINFO_H
diff --git a/llvm/lib/Target/EZH/EZHSubtarget.cpp b/llvm/lib/Target/EZH/EZHSubtarget.cpp
new file mode 100644
index 0000000000000..bd01d4fdc143d
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHSubtarget.cpp
@@ -0,0 +1,65 @@
+//===- EZHSubtarget.cpp - EZH Subtarget Information -----------*- C++ -*-=//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the EZH specific subclass of TargetSubtarget.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHSubtarget.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+
+#define DEBUG_TYPE "ezh-subtarget"
+
+#define GET_SUBTARGETINFO_TARGET_DESC
+#define GET_SUBTARGETINFO_CTOR
+#include "EZHGenSubtargetInfo.inc"
+
+using namespace llvm;
+
+void EZHSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
+  StringRef CPUName = CPU.empty() ? "generic" : CPU;
+  ParseSubtargetFeatures(CPUName, /*TuneCPU*/ CPUName, FS);
+}
+
+EZHSubtarget &EZHSubtarget::initializeSubtargetDependencies(StringRef CPU,
+                                                            StringRef FS) {
+  initSubtargetFeatures(CPU, FS);
+  return *this;
+}
+
+EZHSubtarget::EZHSubtarget(const Triple &TargetTriple, StringRef Cpu,
+                           StringRef FeatureString, const TargetMachine &TM,
+                           const TargetOptions & /*Options*/,
+                           CodeModel::Model /*CodeModel*/,
+                           CodeGenOptLevel /*OptLevel*/)
+    : EZHGenSubtargetInfo(TargetTriple, Cpu, /*TuneCPU*/ Cpu, FeatureString),
+      InstrInfo(initializeSubtargetDependencies(Cpu, FeatureString)),
+      FrameLowering(*this), TLInfo(TM, *this) {}
+
+void EZHSubtarget::initLibcallLoweringInfo(LibcallLoweringInfo &Info) const {
+  Info.setLibcallImpl(RTLIB::SDIV_I32, RTLIB::impl___divsi3);
+  Info.setLibcallImpl(RTLIB::UDIV_I32, RTLIB::impl___udivsi3);
+  Info.setLibcallImpl(RTLIB::SREM_I32, RTLIB::impl___modsi3);
+  Info.setLibcallImpl(RTLIB::UREM_I32, RTLIB::impl___umodsi3);
+  Info.setLibcallImpl(RTLIB::MUL_I32, RTLIB::impl___mulsi3);
+  Info.setLibcallImpl(RTLIB::SHL_I32, RTLIB::impl___ashlsi3);
+  Info.setLibcallImpl(RTLIB::SRL_I32, RTLIB::impl___lshrsi3);
+  Info.setLibcallImpl(RTLIB::SRA_I32, RTLIB::impl___ashrsi3);
+  Info.setLibcallImpl(RTLIB::CTLZ_I32, RTLIB::impl___clzsi2);
+  Info.setLibcallImpl(RTLIB::CTPOP_I32, RTLIB::impl___popcountsi2);
+
+  Info.setLibcallImpl(RTLIB::SDIV_I64, RTLIB::impl___divdi3);
+  Info.setLibcallImpl(RTLIB::UDIV_I64, RTLIB::impl___udivdi3);
+  Info.setLibcallImpl(RTLIB::SREM_I64, RTLIB::impl___moddi3);
+  Info.setLibcallImpl(RTLIB::UREM_I64, RTLIB::impl___umoddi3);
+  Info.setLibcallImpl(RTLIB::MUL_I64, RTLIB::impl___muldi3);
+  Info.setLibcallImpl(RTLIB::SHL_I64, RTLIB::impl___ashldi3);
+  Info.setLibcallImpl(RTLIB::SRL_I64, RTLIB::impl___lshrdi3);
+  Info.setLibcallImpl(RTLIB::SRA_I64, RTLIB::impl___ashrdi3);
+  Info.setLibcallImpl(RTLIB::CTLZ_I64, RTLIB::impl___clzdi2);
+}
diff --git a/llvm/lib/Target/EZH/EZHSubtarget.h b/llvm/lib/Target/EZH/EZHSubtarget.h
new file mode 100644
index 0000000000000..c63c6714f5a8e
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHSubtarget.h
@@ -0,0 +1,84 @@
+//=====-- EZHSubtarget.h - Define Subtarget for the EZH -----*- C++ -*--==//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares the EZH specific subclass of TargetSubtarget.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHSUBTARGET_H
+#define LLVM_LIB_TARGET_EZH_EZHSUBTARGET_H
+
+#include "EZHFrameLowering.h"
+#include "EZHISelLowering.h"
+#include "EZHInstrInfo.h"
+#include "EZHSelectionDAGInfo.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/CodeGen/TargetSubtargetInfo.h"
+#include "llvm/IR/DataLayout.h"
+#include "llvm/Support/CodeGen.h"
+#include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetOptions.h"
+#include "llvm/TargetParser/Triple.h"
+
+#define GET_SUBTARGETINFO_HEADER
+#include "EZHGenSubtargetInfo.inc"
+
+namespace llvm {
+
+/// EZH subtarget features and information.
+class EZHSubtarget : public EZHGenSubtargetInfo {
+public:
+  // This constructor initializes the data members to match that
+  // of the specified triple.
+  EZHSubtarget(const Triple &TargetTriple, StringRef Cpu,
+               StringRef FeatureString, const TargetMachine &TM,
+               const TargetOptions &Options, CodeModel::Model CodeModel,
+               CodeGenOptLevel OptLevel);
+
+  // ParseSubtargetFeatures - Parses features string setting specified
+  // subtarget options.  Definition of function is auto generated by tblgen.
+  void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);
+
+  EZHSubtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS);
+
+  void initSubtargetFeatures(StringRef CPU, StringRef FS);
+
+  bool enableMachineScheduler() const override { return true; }
+
+  const EZHInstrInfo *getInstrInfo() const override { return &InstrInfo; }
+
+  const TargetFrameLowering *getFrameLowering() const override {
+    return &FrameLowering;
+  }
+
+  const EZHRegisterInfo *getRegisterInfo() const override {
+    return &InstrInfo.getRegisterInfo();
+  }
+
+  const EZHTargetLowering *getTargetLowering() const override {
+    return &TLInfo;
+  }
+
+  const EZHSelectionDAGInfo *getSelectionDAGInfo() const override {
+    return &TSInfo;
+  }
+
+  bool hasBitSliceInterrupts() const { return HasBitSliceInterrupts; }
+
+  void initLibcallLoweringInfo(LibcallLoweringInfo &Info) const override;
+
+private:
+  bool HasBitSliceInterrupts = false;
+  EZHInstrInfo InstrInfo;
+  EZHFrameLowering FrameLowering;
+  EZHTargetLowering TLInfo;
+  EZHSelectionDAGInfo TSInfo;
+};
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHSUBTARGET_H
diff --git a/llvm/lib/Target/EZH/EZHTargetMachine.cpp b/llvm/lib/Target/EZH/EZHTargetMachine.cpp
new file mode 100644
index 0000000000000..3fdfbacd3baeb
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHTargetMachine.cpp
@@ -0,0 +1,119 @@
+//===-- EZHTargetMachine.cpp - Define TargetMachine for EZH ---------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHTargetMachine.h"
+#include "EZH.h"
+#include "EZHMachineFunctionInfo.h"
+#include "EZHTargetObjectFile.h"
+#include "TargetInfo/EZHTargetInfo.h"
+#include "llvm/Analysis/TargetTransformInfo.h"
+#include "llvm/CodeGen/BasicTTIImpl.h"
+#include "llvm/CodeGen/Passes.h"
+#include "llvm/CodeGen/TargetPassConfig.h"
+#include "llvm/MC/TargetRegistry.h"
+#include <optional>
+
+using namespace llvm;
+
+namespace {
+class EZHTTIImpl : public BasicTTIImplBase<EZHTTIImpl> {
+  using BaseT = BasicTTIImplBase<EZHTTIImpl>;
+  using TTI = TargetTransformInfo;
+  friend BaseT;
+  friend TargetTransformInfoImplBase;
+
+  const EZHSubtarget *ST;
+  const EZHTargetLowering *TLI;
+
+  const EZHSubtarget *getST() const { return ST; }
+  const EZHTargetLowering *getTLI() const { return TLI; }
+
+public:
+  explicit EZHTTIImpl(const EZHTargetMachine *TM, const Function &F)
+      : BaseT(TM, F.getDataLayout()), ST(TM->getSubtargetImpl(F)),
+        TLI(ST->getTargetLowering()) {}
+};
+} // namespace
+
+extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeEZHTarget() {
+  RegisterTargetMachine<EZHTargetMachine> registered_target(getTheEZHTarget());
+}
+
+static Reloc::Model getEffectiveRelocModel(std::optional<Reloc::Model> RM) {
+  return Reloc::Static;
+}
+
+EZHTargetMachine::EZHTargetMachine(const Target &T, const Triple &TT,
+                                   StringRef Cpu, StringRef FeatureString,
+                                   const TargetOptions &Options,
+                                   std::optional<Reloc::Model> RM,
+                                   std::optional<CodeModel::Model> CodeModel,
+                                   CodeGenOptLevel OptLevel, bool JIT)
+    : CodeGenTargetMachineImpl(
+          T, TT.computeDataLayout(), TT, Cpu, FeatureString, Options,
+          getEffectiveRelocModel(RM),
+          getEffectiveCodeModel(CodeModel, CodeModel::Medium), OptLevel),
+      Subtarget(TT, Cpu, FeatureString, *this, Options, getCodeModel(),
+                OptLevel),
+      TLOF(new EZHTargetObjectFile()) {
+  initAsmInfo();
+}
+
+TargetTransformInfo
+EZHTargetMachine::getTargetTransformInfo(const Function &F) const {
+  return TargetTransformInfo(std::make_unique<EZHTTIImpl>(this, F));
+}
+
+MachineFunctionInfo *EZHTargetMachine::createMachineFunctionInfo(
+    BumpPtrAllocator &Allocator, const Function &F,
+    const TargetSubtargetInfo *STI) const {
+  return EZHMachineFunctionInfo::create<EZHMachineFunctionInfo>(Allocator, F,
+                                                                STI);
+}
+
+namespace {
+class EZHPassConfig : public TargetPassConfig {
+public:
+  EZHPassConfig(EZHTargetMachine &TM, PassManagerBase *PassManager)
+      : TargetPassConfig(TM, *PassManager) {}
+
+  EZHTargetMachine &getEZHTargetMachine() const {
+    return getTM<EZHTargetMachine>();
+  }
+
+  bool addInstSelector() override;
+  void addPostRegAlloc() override;
+  void addPreSched2() override;
+  void addPreEmitPass() override;
+  void addPreEmitPass2() override;
+};
+} // namespace
+
+TargetPassConfig *
+EZHTargetMachine::createPassConfig(PassManagerBase &PassManager) {
+  return new EZHPassConfig(*this, &PassManager);
+}
+
+bool EZHPassConfig::addInstSelector() {
+  addPass(createEZHISelDag(getEZHTargetMachine()));
+  return false;
+}
+
+void EZHPassConfig::addPostRegAlloc() {}
+
+void EZHPassConfig::addPreSched2() {
+  if (getOptLevel() != CodeGenOptLevel::None)
+    addPass(&IfConverterID);
+}
+
+void EZHPassConfig::addPreEmitPass() {}
+
+void EZHPassConfig::addPreEmitPass2() {
+  addPass(createEZHBitSliceInjectionPass());
+  addPass(createEZHConstantIslandPass());
+}
diff --git a/llvm/lib/Target/EZH/EZHTargetMachine.h b/llvm/lib/Target/EZH/EZHTargetMachine.h
new file mode 100644
index 0000000000000..6d00b5c1cf3b0
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHTargetMachine.h
@@ -0,0 +1,68 @@
+//===-- EZHTargetMachine.h - Define TargetMachine for EZH --- C++ ---===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares the EZH specific subclass of TargetMachine.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHTARGETMACHINE_H
+#define LLVM_LIB_TARGET_EZH_EZHTARGETMACHINE_H
+
+#include "EZHISelLowering.h"
+#include "EZHInstrInfo.h"
+#include "EZHSelectionDAGInfo.h"
+#include "EZHSubtarget.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/Analysis/TargetTransformInfo.h"
+#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"
+#include "llvm/Support/Allocator.h"
+#include "llvm/Support/CodeGen.h"
+#include "llvm/Target/TargetLoweringObjectFile.h"
+#include "llvm/Target/TargetOptions.h"
+#include "llvm/TargetParser/Triple.h"
+#include <memory>
+#include <optional>
+
+namespace llvm {
+
+class PassManagerBase;
+
+/// TargetMachine implementation for the NXP EZH architecture.
+class EZHTargetMachine : public CodeGenTargetMachineImpl {
+  EZHSubtarget Subtarget;
+  std::unique_ptr<TargetLoweringObjectFile> TLOF;
+
+public:
+  EZHTargetMachine(const Target &TheTarget, const Triple &TargetTriple,
+                   StringRef Cpu, StringRef FeatureString,
+                   const TargetOptions &Options, std::optional<Reloc::Model> RM,
+                   std::optional<CodeModel::Model> CodeModel,
+                   CodeGenOptLevel OptLevel, bool JIT);
+
+  const EZHSubtarget *getSubtargetImpl(const Function & /*Fn*/) const override {
+    return &Subtarget;
+  }
+
+  TargetTransformInfo getTargetTransformInfo(const Function &F) const override;
+
+  // Pass Pipeline Configuration
+  TargetPassConfig *createPassConfig(PassManagerBase &pass_manager) override;
+
+  TargetLoweringObjectFile *getObjFileLowering() const override {
+    return TLOF.get();
+  }
+
+  MachineFunctionInfo *
+  createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,
+                            const TargetSubtargetInfo *STI) const override;
+
+  bool isMachineVerifierClean() const override { return false; }
+};
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHTARGETMACHINE_H
diff --git a/llvm/lib/Target/EZH/EZHTargetObjectFile.cpp b/llvm/lib/Target/EZH/EZHTargetObjectFile.cpp
new file mode 100644
index 0000000000000..d9a82fbaae886
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHTargetObjectFile.cpp
@@ -0,0 +1,127 @@
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHTargetObjectFile.h"
+
+#include "llvm/BinaryFormat/ELF.h"
+#include "llvm/IR/DataLayout.h"
+#include "llvm/IR/GlobalVariable.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCSectionELF.h"
+#include "llvm/Support/CommandLine.h"
+#include "llvm/Target/TargetMachine.h"
+
+using namespace llvm;
+
+static cl::opt<unsigned> SSThreshold(
+    "ezh-ssection-threshold", cl::Hidden,
+    cl::desc("Small data and bss section threshold size (default=0)"),
+    cl::init(0));
+
+void EZHTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM) {
+  TargetLoweringObjectFileELF::Initialize(Ctx, TM);
+
+  SmallDataSection = getContext().getELFSection(
+      ".sdata", ELF::SHT_PROGBITS, ELF::SHF_WRITE | ELF::SHF_ALLOC);
+  SmallBSSSection = getContext().getELFSection(".sbss", ELF::SHT_NOBITS,
+                                               ELF::SHF_WRITE | ELF::SHF_ALLOC);
+}
+
+// A address must be loaded from a small section if its size is less than the
+// small section size threshold. Data in this section must be addressed using
+// gp_rel operator.
+static bool isInSmallSection(uint64_t Size) {
+  // gcc has traditionally not treated zero-sized objects as small data, so this
+  // is effectively part of the ABI.
+  return Size > 0 && Size <= SSThreshold;
+}
+
+// Return true if this global address should be placed into small data/bss
+// section.
+bool EZHTargetObjectFile::isGlobalInSmallSection(
+    const GlobalObject *GO, const TargetMachine &TM) const {
+  if (GO == nullptr)
+    return TM.getCodeModel() == CodeModel::Small;
+
+  // We first check the case where global is a declaration, because finding
+  // section kind using getKindForGlobal() is only allowed for global
+  // definitions.
+  if (GO->isDeclaration() || GO->hasAvailableExternallyLinkage())
+    return isGlobalInSmallSectionImpl(GO, TM);
+
+  return isGlobalInSmallSection(GO, TM, getKindForGlobal(GO, TM));
+}
+
+// Return true if this global address should be placed into small data/bss
+// section.
+bool EZHTargetObjectFile::isGlobalInSmallSection(const GlobalObject *GO,
+                                                 const TargetMachine &TM,
+                                                 SectionKind Kind) const {
+  return isGlobalInSmallSectionImpl(GO, TM);
+}
+
+// Return true if this global address should be placed into small data/bss
+// section. This method does all the work, except for checking the section
+// kind.
+bool EZHTargetObjectFile::isGlobalInSmallSectionImpl(
+    const GlobalObject *GO, const TargetMachine &TM) const {
+  const auto *GVA = dyn_cast<GlobalVariable>(GO);
+
+  // If not a GlobalVariable, only consider the code model.
+  if (!GVA)
+    return TM.getCodeModel() == CodeModel::Small;
+
+  // Global values placed in sections starting with .ldata do not fit in
+  // 21-bits, so always use large memory access for them. FIXME: This is a
+  // workaround for a tool limitation.
+  if (GVA->getSection().starts_with(".ldata"))
+    return false;
+
+  if (TM.getCodeModel() == CodeModel::Small)
+    return true;
+
+  if (GVA->hasLocalLinkage())
+    return false;
+
+  if (((GVA->hasExternalLinkage() && GVA->isDeclaration()) ||
+       GVA->hasCommonLinkage()))
+    return false;
+
+  Type *Ty = GVA->getValueType();
+  return isInSmallSection(GVA->getDataLayout().getTypeAllocSize(Ty));
+}
+
+MCSection *EZHTargetObjectFile::SelectSectionForGlobal(
+    const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const {
+  // Handle Small Section classification here.
+  if (Kind.isBSS() && isGlobalInSmallSection(GO, TM, Kind))
+    return SmallBSSSection;
+  if (Kind.isData() && isGlobalInSmallSection(GO, TM, Kind))
+    return SmallDataSection;
+
+  // Otherwise, we work the same as ELF.
+  return TargetLoweringObjectFileELF::SelectSectionForGlobal(GO, Kind, TM);
+}
+
+/// Return true if this constant should be placed into small data section.
+bool EZHTargetObjectFile::isConstantInSmallSection(const DataLayout &DL,
+                                                   const Constant *CN) const {
+  return isInSmallSection(DL.getTypeAllocSize(CN->getType()));
+}
+
+MCSection *EZHTargetObjectFile::getSectionForConstant(const DataLayout &DL,
+                                                      SectionKind Kind,
+                                                      const Constant *C,
+                                                      Align &Alignment,
+                                                      const Function *F) const {
+  if (isConstantInSmallSection(DL, C))
+    return SmallDataSection;
+
+  // Otherwise, we work the same as ELF.
+  return TargetLoweringObjectFileELF::getSectionForConstant(DL, Kind, C,
+                                                            Alignment, F);
+}
diff --git a/llvm/lib/Target/EZH/EZHTargetObjectFile.h b/llvm/lib/Target/EZH/EZHTargetObjectFile.h
new file mode 100644
index 0000000000000..0373ce7061718
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHTargetObjectFile.h
@@ -0,0 +1,53 @@
+//===-- EZHTargetObjectFile.h - EZH Object Info -----------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHTARGETOBJECTFILE_H
+#define LLVM_LIB_TARGET_EZH_EZHTARGETOBJECTFILE_H
+
+#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
+#include "llvm/MC/SectionKind.h"
+#include "llvm/Support/Alignment.h"
+
+namespace llvm {
+
+class Constant;
+class DataLayout;
+class GlobalObject;
+class MCContext;
+class MCSection;
+class TargetMachine;
+class EZHTargetObjectFile : public TargetLoweringObjectFileELF {
+  MCSection *SmallDataSection;
+  MCSection *SmallBSSSection;
+
+  bool isGlobalInSmallSection(const GlobalObject *GO, const TargetMachine &TM,
+                              SectionKind Kind) const;
+  bool isGlobalInSmallSectionImpl(const GlobalObject *GO,
+                                  const TargetMachine &TM) const;
+
+public:
+  void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
+
+  /// Return true if this global address should be placed into small data/bss
+  /// section.
+  bool isGlobalInSmallSection(const GlobalObject *GO,
+                              const TargetMachine &TM) const;
+
+  MCSection *SelectSectionForGlobal(const GlobalObject *GO, SectionKind Kind,
+                                    const TargetMachine &TM) const override;
+
+  /// Return true if this constant should be placed into small data section.
+  bool isConstantInSmallSection(const DataLayout &DL, const Constant *CN) const;
+
+  MCSection *getSectionForConstant(const DataLayout &DL, SectionKind Kind,
+                                   const Constant *C, Align &Alignment,
+                                   const Function *F) const override;
+};
+} // end namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHTARGETOBJECTFILE_H
diff --git a/llvm/lib/Target/EZH/EZHTargetTransformInfo.h b/llvm/lib/Target/EZH/EZHTargetTransformInfo.h
new file mode 100644
index 0000000000000..483b6012a2ff9
--- /dev/null
+++ b/llvm/lib/Target/EZH/EZHTargetTransformInfo.h
@@ -0,0 +1,123 @@
+//===-- EZHTargetTransformInfo.h - EZH specific TTI ---------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file a TargetTransformInfoImplBase conforming object specific to the
+// EZH target machine. It uses the target's detailed information to
+// provide more precise answers to certain TTI queries, while letting the
+// target independent and default TTI implementations handle the rest.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_EZHTARGETTRANSFORMINFO_H
+#define LLVM_LIB_TARGET_EZH_EZHTARGETTRANSFORMINFO_H
+
+#include "EZH.h"
+#include "EZHSubtarget.h"
+#include "EZHTargetMachine.h"
+#include "llvm/Analysis/TargetTransformInfo.h"
+#include "llvm/CodeGen/BasicTTIImpl.h"
+#include "llvm/CodeGen/TargetLowering.h"
+#include "llvm/Support/MathExtras.h"
+
+namespace llvm {
+class EZHTTIImpl final : public BasicTTIImplBase<EZHTTIImpl> {
+  typedef BasicTTIImplBase<EZHTTIImpl> BaseT;
+  typedef TargetTransformInfo TTI;
+  friend BaseT;
+
+  const EZHSubtarget *ST;
+  const EZHTargetLowering *TLI;
+
+  const EZHSubtarget *getST() const { return ST; }
+  const EZHTargetLowering *getTLI() const { return TLI; }
+
+public:
+  explicit EZHTTIImpl(const EZHTargetMachine *TM, const Function &F)
+      : BaseT(TM, F.getDataLayout()), ST(TM->getSubtargetImpl(F)),
+        TLI(ST->getTargetLowering()) {}
+
+  bool shouldBuildLookupTables() const override { return false; }
+
+  TargetTransformInfo::PopcntSupportKind
+  getPopcntSupport(unsigned TyWidth) const override {
+    if (TyWidth == 32)
+      return TTI::PSK_FastHardware;
+    return TTI::PSK_Software;
+  }
+
+  InstructionCost getIntImmCost(const APInt &Imm, Type *Ty,
+                                TTI::TargetCostKind CostKind) const override {
+    assert(Ty->isIntegerTy() && "Expected integer type!");
+    unsigned BitSize = Ty->getPrimitiveSizeInBits();
+    // There is no cost model for constants with a bit size of 0. Return
+    // TCC_Free here, so that constant hoisting will ignore this constant.
+    if (BitSize == 0)
+      return TTI::TCC_Free;
+    // No cost model for operations on integers larger than 64 bit implemented
+    // yet.
+    if (BitSize > 64)
+      return TTI::TCC_Free;
+
+    if (Imm == 0)
+      return TTI::TCC_Free;
+    if (isInt<16>(Imm.getSExtValue()))
+      return TTI::TCC_Basic;
+    if (isInt<21>(Imm.getZExtValue()))
+      return TTI::TCC_Basic;
+    if (isInt<32>(Imm.getSExtValue())) {
+      if ((Imm.getSExtValue() & 0xFFFF) == 0)
+        return TTI::TCC_Basic;
+      return 2 * TTI::TCC_Basic;
+    }
+
+    return 4 * TTI::TCC_Basic;
+  }
+
+  InstructionCost
+  getIntImmCostInst(unsigned Opc, unsigned Idx, const APInt &Imm, Type *Ty,
+                    TTI::TargetCostKind CostKind,
+                    Instruction *Inst = nullptr) const override {
+    return getIntImmCost(Imm, Ty, CostKind);
+  }
+
+  InstructionCost
+  getIntImmCostIntrin(Intrinsic::ID IID, unsigned Idx, const APInt &Imm,
+                      Type *Ty, TTI::TargetCostKind CostKind) const override {
+    return getIntImmCost(Imm, Ty, CostKind);
+  }
+
+  InstructionCost getArithmeticInstrCost(
+      unsigned Opcode, Type *Ty, TTI::TargetCostKind CostKind,
+      TTI::OperandValueInfo Op1Info = {TTI::OK_AnyValue, TTI::OP_None},
+      TTI::OperandValueInfo Op2Info = {TTI::OK_AnyValue, TTI::OP_None},
+      ArrayRef<const Value *> Args = {},
+      const Instruction *CxtI = nullptr) const override {
+    int ISD = TLI->InstructionOpcodeToISD(Opcode);
+
+    switch (ISD) {
+    default:
+      return BaseT::getArithmeticInstrCost(Opcode, Ty, CostKind, Op1Info,
+                                           Op2Info);
+    case ISD::MUL:
+    case ISD::SDIV:
+    case ISD::UDIV:
+    case ISD::UREM:
+      // This increases the cost associated with multiplication and division
+      // to 64 times what the baseline arithmetic cost is. The arithmetic
+      // instruction cost was arbitrarily chosen to reduce the desirability
+      // of emitting arithmetic instructions that are emulated in software.
+      // TODO: Investigate the performance impact given specialized lowerings.
+      return 64 * BaseT::getArithmeticInstrCost(Opcode, Ty, CostKind, Op1Info,
+                                                Op2Info);
+    }
+  }
+};
+
+} // end namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_EZHTARGETTRANSFORMINFO_H
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/CMakeLists.txt b/llvm/lib/Target/EZH/MCTargetDesc/CMakeLists.txt
new file mode 100644
index 0000000000000..1c515c97df6f7
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/CMakeLists.txt
@@ -0,0 +1,18 @@
+add_llvm_component_library(LLVMEZHDesc
+  EZHAsmBackend.cpp
+  EZHELFObjectWriter.cpp
+  EZHInstPrinter.cpp
+  EZHMCAsmInfo.cpp
+  EZHMCCodeEmitter.cpp
+  EZHMCTargetDesc.cpp
+
+  LINK_COMPONENTS
+  EZHInfo
+  MC
+  MCDisassembler
+  Support
+  TargetParser
+
+  ADD_TO_COMPONENT
+  EZH
+)
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHAsmBackend.cpp b/llvm/lib/Target/EZH/MCTargetDesc/EZHAsmBackend.cpp
new file mode 100644
index 0000000000000..127924bbd9a03
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHAsmBackend.cpp
@@ -0,0 +1,180 @@
+//===-- EZHAsmBackend.cpp - EZH Assembler Backend ---------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHFixupKinds.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/MC/MCAsmBackend.h"
+#include "llvm/BinaryFormat/ELF.h"
+#include "llvm/ADT/StringSwitch.h"
+#include "llvm/MC/MCAssembler.h"
+#include "llvm/MC/MCELFObjectWriter.h"
+#include "llvm/MC/MCObjectWriter.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MC/MCValue.h"
+#include "llvm/Support/Endian.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+// Prepare value for the target space
+static unsigned adjustFixupValue(unsigned Kind, uint64_t Value) {
+  switch (Kind) {
+  case FK_Data_1:
+  case FK_Data_2:
+  case FK_Data_4:
+  case FK_Data_8:
+    return Value;
+  case EZH::FIXUP_EZH_8_PCREL:
+    // PC evaluates to Loc + 8. The Value passed in is Target - Loc.
+    // We need (Target - (Loc + 8)) = Target - Loc - 8 = Value - 8.
+    // The hardware expects a positive unsigned offset in words.
+    // Since literal pool is always placed after the instruction, Value should
+    // be > 8.
+    return ((Value - 8) >> 2) & 0xFF;
+  case EZH::FIXUP_EZH_21:
+  case EZH::FIXUP_EZH_21_F:
+  case EZH::FIXUP_EZH_25:
+    // GOTOs and GOSUBs in EZH use absolute word addressing, not PC-relative.
+    return Value >> 2;
+  case EZH::FIXUP_EZH_32:
+  case EZH::FIXUP_EZH_HI16:
+  case EZH::FIXUP_EZH_LO16:
+    return Value;
+  default:
+    llvm_unreachable("Unknown fixup kind!");
+  }
+}
+
+namespace {
+class EZHAsmBackend : public MCAsmBackend {
+  Triple::OSType OSType;
+
+public:
+  EZHAsmBackend(const Target &T, Triple::OSType OST)
+      : MCAsmBackend(llvm::endianness::little), OSType(OST) {}
+
+  void applyFixup(const MCFragment &, const MCFixup &, const MCValue &Target,
+                  uint8_t *Data, uint64_t Value, bool IsResolved) override;
+
+  std::unique_ptr<MCObjectTargetWriter>
+  createObjectTargetWriter() const override;
+
+  std::optional<MCFixupKind> getFixupKind(StringRef Name) const override;
+
+  MCFixupKindInfo getFixupKindInfo(MCFixupKind Kind) const override;
+
+  bool writeNopData(raw_ostream &OS, uint64_t Count,
+                    const MCSubtargetInfo *STI) const override;
+
+  bool shouldForceRelocation(const MCFixup &Fixup) const {
+    switch (static_cast<unsigned>(Fixup.getKind())) {
+    case EZH::FIXUP_EZH_21:
+    case EZH::FIXUP_EZH_21_F:
+    case EZH::FIXUP_EZH_25:
+      // GOTOs and GOSUBs are absolute word addresses.
+      // We must force the linker to process them to handle section offsets.
+      return true;
+    default:
+      return false;
+    }
+  }
+};
+
+bool EZHAsmBackend::writeNopData(raw_ostream &OS, uint64_t Count,
+                                 const MCSubtargetInfo *STI) const {
+  if ((Count % 4) != 0)
+    return false;
+
+  for (uint64_t i = 0; i < Count; i += 4)
+    OS.write("\x15\0\0\0", 4);
+
+  return true;
+}
+
+void EZHAsmBackend::applyFixup(const MCFragment &F, const MCFixup &Fixup,
+                               const MCValue &Target, uint8_t *Data,
+                               uint64_t Value, bool IsResolved) {
+  if (shouldForceRelocation(Fixup))
+    IsResolved = false;
+
+  maybeAddReloc(F, Fixup, Target, Value, IsResolved);
+
+  MCFixupKind Kind = Fixup.getKind();
+  if (mc::isRelocation(Kind))
+    return;
+  Value = adjustFixupValue(static_cast<unsigned>(Kind), Value);
+  if (!Value)
+    return; // This value doesn't change the encoding
+
+  // Read 32-bit little-endian instruction
+  uint32_t CurVal = llvm::support::endian::read32le(Data);
+
+  uint64_t Mask =
+      (static_cast<uint64_t>(-1) >> (64 - getFixupKindInfo(Kind).TargetSize));
+  CurVal |= (Value & Mask) << getFixupKindInfo(Kind).TargetOffset;
+
+  // Write 32-bit little-endian instruction back
+  llvm::support::endian::write32le(Data, CurVal);
+}
+
+std::unique_ptr<MCObjectTargetWriter>
+EZHAsmBackend::createObjectTargetWriter() const {
+  return createEZHELFObjectWriter(MCELFObjectTargetWriter::getOSABI(OSType));
+}
+
+MCFixupKindInfo EZHAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
+  static const MCFixupKindInfo Infos[EZH::NumTargetFixupKinds] = {
+      // This table *must* be in same the order of fixup_* kinds in
+      // EZHFixupKinds.h.
+      // Note: The number of bits indicated here are assumed to be contiguous.
+      //   This does not hold true for LANAI_21 and LANAI_21_F which are applied
+      //   to bits 0x7cffff and 0x7cfffc, respectively. Since the 'bits' counts
+      //   here are used only for cosmetic purposes, we set the size to 16 bits
+      //   for these 21-bit relocation as llvm/lib/MC/MCAsmStreamer.cpp checks
+      //   no bits are set in the fixup range.
+      //
+      // name          offset bits flags
+      {"FIXUP_EZH_NONE", 0, 32, 0},  {"FIXUP_EZH_21", 11, 21, 0},
+      {"FIXUP_EZH_21_F", 11, 21, 0}, {"FIXUP_EZH_25", 5, 27, 0},
+      {"FIXUP_EZH_32", 0, 32, 0},    {"FIXUP_EZH_HI16", 16, 16, 0},
+      {"FIXUP_EZH_LO16", 0, 16, 0},  {"FIXUP_EZH_8_PCREL", 24, 8, 0}};
+
+  if (Kind < FirstTargetFixupKind)
+    return MCAsmBackend::getFixupKindInfo(Kind);
+
+  assert(unsigned(Kind - FirstTargetFixupKind) < EZH::NumTargetFixupKinds &&
+         "Invalid kind!");
+  return Infos[Kind - FirstTargetFixupKind];
+}
+
+std::optional<MCFixupKind> EZHAsmBackend::getFixupKind(StringRef Name) const {
+  unsigned Type = llvm::StringSwitch<unsigned>(Name)
+#define ELF_RELOC(NAME, ID) .Case(#NAME, ID)
+#include "llvm/BinaryFormat/ELFRelocs/EZH.def"
+#undef ELF_RELOC
+                      .Case("BFD_RELOC_NONE", ELF::R_EZH_NONE)
+                      .Case("BFD_RELOC_32", ELF::R_EZH_32)
+                      .Default(-1u);
+  if (Type != -1u)
+    return static_cast<MCFixupKind>(FirstLiteralRelocationKind + Type);
+  return std::nullopt;
+}
+
+} // namespace
+
+MCAsmBackend *llvm::createEZHAsmBackend(const Target &T,
+                                        const MCSubtargetInfo &STI,
+                                        const MCRegisterInfo & /*MRI*/,
+                                        const MCTargetOptions & /*Options*/) {
+  const Triple &TT = STI.getTargetTriple();
+  if (!TT.isOSBinFormatELF())
+    llvm_unreachable("OS not supported");
+
+  return new EZHAsmBackend(T, TT.getOS());
+}
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHBaseInfo.h b/llvm/lib/Target/EZH/MCTargetDesc/EZHBaseInfo.h
new file mode 100644
index 0000000000000..81a3c8a1afb9e
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHBaseInfo.h
@@ -0,0 +1,61 @@
+//===-- EZHBaseInfo.h - Top level definitions for EZH MC ----*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHBASEINFO_H
+#define LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHBASEINFO_H
+
+#include "EZHMCTargetDesc.h"
+#include "llvm/MC/MCExpr.h"
+#include "llvm/Support/ErrorHandling.h"
+
+namespace llvm {
+
+namespace EZHII {
+enum TOF { MO_NO_FLAG, MO_HI16, MO_LO16 };
+} // namespace EZHII
+
+static inline unsigned getEZHRegisterNumbering(MCRegister Reg) {
+  switch (Reg.id()) {
+  case EZH::R0:
+    return 0;
+  case EZH::R1:
+    return 1;
+  case EZH::R2:
+    return 2;
+  case EZH::R3:
+    return 3;
+  case EZH::R4:
+    return 4;
+  case EZH::R5:
+    return 5;
+  case EZH::R6:
+    return 6;
+  case EZH::R7:
+    return 7;
+  case EZH::GPO:
+    return 8;
+  case EZH::GPD:
+    return 9;
+  case EZH::CFS:
+    return 10;
+  case EZH::CFM:
+    return 11;
+  case EZH::SP:
+    return 12;
+  case EZH::PC:
+    return 13;
+  case EZH::GPI:
+    return 14;
+  case EZH::RA:
+    return 15;
+  default:
+    llvm_unreachable("Unknown register number!");
+  }
+}
+} // namespace llvm
+#endif // LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHBASEINFO_H
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHELFObjectWriter.cpp b/llvm/lib/Target/EZH/MCTargetDesc/EZHELFObjectWriter.cpp
new file mode 100644
index 0000000000000..4499e9a3ef724
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHELFObjectWriter.cpp
@@ -0,0 +1,93 @@
+//===-- EZHELFObjectWriter.cpp - EZH ELF Writer -----------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "MCTargetDesc/EZHBaseInfo.h"
+#include "MCTargetDesc/EZHFixupKinds.h"
+#include "llvm/BinaryFormat/ELF.h"
+#include "llvm/MC/MCELFObjectWriter.h"
+#include "llvm/MC/MCObjectWriter.h"
+#include "llvm/Support/ErrorHandling.h"
+
+using namespace llvm;
+
+namespace {
+
+class EZHELFObjectWriter : public MCELFObjectTargetWriter {
+public:
+  explicit EZHELFObjectWriter(uint8_t OSABI);
+
+  ~EZHELFObjectWriter() override = default;
+
+protected:
+  unsigned getRelocType(const MCFixup &, const MCValue &,
+                        bool IsPCRel) const override;
+  bool needsRelocateWithSymbol(const MCValue &, unsigned Type) const override;
+};
+
+} // end anonymous namespace
+
+EZHELFObjectWriter::EZHELFObjectWriter(uint8_t OSABI)
+    : MCELFObjectTargetWriter(/*Is64Bit_=*/false, OSABI, ELF::EM_EZH,
+                              /*HasRelocationAddend_=*/true) {}
+
+unsigned EZHELFObjectWriter::getRelocType(const MCFixup &Fixup, const MCValue &,
+                                          bool) const {
+  unsigned Type;
+  unsigned Kind = static_cast<unsigned>(Fixup.getKind());
+  switch (Kind) {
+  case EZH::FIXUP_EZH_21:
+    Type = ELF::R_EZH_21;
+    break;
+  case EZH::FIXUP_EZH_21_F:
+    Type = ELF::R_EZH_21_F;
+    break;
+  case EZH::FIXUP_EZH_25:
+    Type = ELF::R_EZH_25;
+    break;
+  case EZH::FIXUP_EZH_32:
+  case FK_Data_4:
+    Type = ELF::R_EZH_32;
+    break;
+  case EZH::FIXUP_EZH_HI16:
+    Type = ELF::R_EZH_HI16;
+    break;
+  case EZH::FIXUP_EZH_LO16:
+    Type = ELF::R_EZH_LO16;
+    break;
+  case EZH::FIXUP_EZH_NONE:
+    Type = ELF::R_EZH_NONE;
+    break;
+  case EZH::FIXUP_EZH_8_PCREL:
+    Type = ELF::R_EZH_NONE;
+    break;
+
+  default:
+    llvm_unreachable("Invalid fixup kind!");
+  }
+  return Type;
+}
+
+bool EZHELFObjectWriter::needsRelocateWithSymbol(const MCValue &,
+                                                 unsigned Type) const {
+  switch (Type) {
+  case ELF::R_EZH_21:
+  case ELF::R_EZH_21_F:
+  case ELF::R_EZH_25:
+  case ELF::R_EZH_HI16:
+    return true;
+  case ELF::R_EZH_32:
+    return false;
+  default:
+    return false;
+  }
+}
+
+std::unique_ptr<MCObjectTargetWriter>
+llvm::createEZHELFObjectWriter(uint8_t OSABI) {
+  return std::make_unique<EZHELFObjectWriter>(OSABI);
+}
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHFixupKinds.h b/llvm/lib/Target/EZH/MCTargetDesc/EZHFixupKinds.h
new file mode 100644
index 0000000000000..a6ffeb2b72af4
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHFixupKinds.h
@@ -0,0 +1,43 @@
+//===-- EZHFixupKinds.h - EZH Specific Fixup Entries --------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHFIXUPKINDS_H
+#define LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHFIXUPKINDS_H
+
+#include "llvm/MC/MCFixup.h"
+
+namespace llvm {
+namespace EZH {
+// Although most of the current fixup types reflect a unique relocation
+// one can have multiple fixup types for a given relocation and thus need
+// to be uniquely named.
+//
+// This table *must* be in the save order of
+// MCFixupKindInfo Infos[EZH::NumTargetFixupKinds]
+// in EZHAsmBackend.cpp.
+//
+enum Fixups {
+  // Results in R_EZH_NONE
+  FIXUP_EZH_NONE = FirstTargetFixupKind,
+
+  FIXUP_EZH_21,      // 21-bit symbol relocation
+  FIXUP_EZH_21_F,    // 21-bit symbol relocation, last two bits masked to 0
+  FIXUP_EZH_25,      // 25-bit branch targets
+  FIXUP_EZH_32,      // general 32-bit relocation
+  FIXUP_EZH_HI16,    // upper 16-bits of a symbolic relocation
+  FIXUP_EZH_LO16,    // lower 16-bits of a symbolic relocation
+  FIXUP_EZH_8_PCREL, // 8-bit PC-relative word offset
+
+  // Marker
+  LastTargetFixupKind,
+  NumTargetFixupKinds = LastTargetFixupKind - FirstTargetFixupKind
+};
+} // namespace EZH
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHFIXUPKINDS_H
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHInstPrinter.cpp b/llvm/lib/Target/EZH/MCTargetDesc/EZHInstPrinter.cpp
new file mode 100644
index 0000000000000..0365ea5cfea77
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHInstPrinter.cpp
@@ -0,0 +1,110 @@
+//===-- EZHInstPrinter.cpp - Convert EZH MCInst to asm syntax ---------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHInstPrinter.h"
+#include "EZHMCTargetDesc.h"
+#include "llvm/MC/MCAsmInfo.h"
+#include "llvm/MC/MCExpr.h"
+#include "llvm/MC/MCInst.h"
+#include "llvm/MC/MCInstPrinter.h"
+#include "llvm/MC/MCInstrInfo.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+#define DEBUG_TYPE "asm-printer"
+
+#include "EZHGenAsmWriter.inc"
+
+void EZHInstPrinter::printRegName(raw_ostream &OS, MCRegister Reg) {
+  OS << StringRef(getRegisterName(Reg)).lower();
+}
+
+void EZHInstPrinter::printInst(const MCInst *MI, uint64_t Address,
+                               StringRef Annotation, const MCSubtargetInfo &STI,
+                               raw_ostream &OS) {
+  StringRef Name = MII.getName(MI->getOpcode());
+  if (Name.starts_with("STR_PRE") && MI->getNumOperands() >= 4 &&
+      MI->getOperand(0).isReg() && MI->getOperand(0).getReg() == EZH::SP &&
+      MI->getOperand(2).isReg() && MI->getOperand(2).getReg() == EZH::SP &&
+      MI->getOperand(3).isImm() && MI->getOperand(3).getImm() == -4) {
+    OS << "\te_pushd" << Name.substr(7) << "\t";
+    printOperand(MI, 1, OS);
+    printAnnotation(OS, Annotation);
+    return;
+  }
+
+  if (Name.starts_with("LDR_POST") && MI->getNumOperands() >= 4 &&
+      MI->getOperand(1).isReg() && MI->getOperand(1).getReg() == EZH::SP &&
+      MI->getOperand(2).isReg() && MI->getOperand(2).getReg() == EZH::SP &&
+      MI->getOperand(3).isImm() && MI->getOperand(3).getImm() == 4) {
+    OS << "\te_popd" << Name.substr(8) << "\t";
+    printOperand(MI, 0, OS);
+    printAnnotation(OS, Annotation);
+    return;
+  }
+
+  printInstruction(MI, Address, OS);
+  printAnnotation(OS, Annotation);
+}
+
+void EZHInstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
+                                  raw_ostream &OS) {
+  const MCOperand &Op = MI->getOperand(OpNo);
+  if (Op.isReg())
+    OS << getRegisterName(Op.getReg());
+  else if (Op.isImm())
+    OS << Op.getImm();
+  else {
+    assert(Op.isExpr() && "Expected an expression");
+    MAI.printExpr(OS, *Op.getExpr());
+  }
+}
+
+void EZHInstPrinter::printBranchTarget(const MCInst *MI, unsigned OpNo,
+                                       raw_ostream &O) {
+  const MCOperand &Op = MI->getOperand(OpNo);
+  if (Op.isImm()) {
+    // Print the absolute address as a hex value without the 0x prefix for
+    // objdump compatibility, or with 0x depending on conventions. Wait,
+    // format_hex prints 0x. We can just use it.
+    O << format_hex(Op.getImm(), 2);
+  } else {
+    printOperand(MI, OpNo, O);
+  }
+}
+
+void EZHInstPrinter::printWordOffset(const MCInst *MI, unsigned OpNo,
+                                     raw_ostream &O) {
+  const MCOperand &Op = MI->getOperand(OpNo);
+  if (Op.isImm()) {
+    O << Op.getImm();
+  } else {
+    printOperand(MI, OpNo, O);
+  }
+}
+
+void EZHInstPrinter::printImmOperand(const MCInst *MI, unsigned OpNo,
+                                     raw_ostream &O) {
+  printOperand(MI, OpNo, O);
+}
+
+void EZHInstPrinter::printShiftedImmOperand(const MCInst *MI, unsigned OpNo,
+                                            raw_ostream &O) {
+  const MCOperand &ImmOp = MI->getOperand(OpNo);
+  const MCOperand &ShAmtOp = MI->getOperand(OpNo + 1);
+
+  if (ImmOp.isImm() && ShAmtOp.isImm()) {
+    int64_t Imm = ImmOp.getImm();
+    int64_t ShAmt = ShAmtOp.getImm();
+    O << (Imm << ShAmt);
+  } else {
+    // Fallback if not an immediate
+    printOperand(MI, OpNo, O);
+  }
+}
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHInstPrinter.h b/llvm/lib/Target/EZH/MCTargetDesc/EZHInstPrinter.h
new file mode 100644
index 0000000000000..f97ba5eb88a55
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHInstPrinter.h
@@ -0,0 +1,67 @@
+//= EZHInstPrinter.h - Convert EZH MCInst to asm syntax -------*- C++ -*--//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This class prints a EZH MCInst to a .s file.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHINSTPRINTER_H
+#define LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHINSTPRINTER_H
+
+#include "llvm/MC/MCInstPrinter.h"
+
+namespace llvm {
+class StringRef;
+
+class EZHInstPrinter : public MCInstPrinter {
+public:
+  EZHInstPrinter(const MCAsmInfo &MAI, const MCInstrInfo &MII,
+                 const MCRegisterInfo &MRI)
+      : MCInstPrinter(MAI, MII, MRI) {}
+
+  void printInst(const MCInst *MI, uint64_t Address, StringRef Annot,
+                 const MCSubtargetInfo &STI, raw_ostream &O) override;
+  void printOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printBranchTarget(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printWordOffset(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printShiftedImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printPredicateOperand(const MCInst *MI, unsigned OpNum, raw_ostream &O);
+  void printMemRiOperand(const MCInst *MI, int OpNo, raw_ostream &O);
+  void printMemRrOperand(const MCInst *MI, int OpNo, raw_ostream &O);
+  void printMemSplsOperand(const MCInst *MI, int OpNo, raw_ostream &O);
+  void printCCOperand(const MCInst *MI, int OpNo, raw_ostream &O);
+  void printHi16ImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printHi16AndImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printLo16AndImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+  void printMemImmOperand(const MCInst *MI, unsigned OpNo, raw_ostream &O);
+
+  // Autogenerated by tblgen.
+  std::pair<const char *, uint64_t>
+  getMnemonic(const MCInst &MI) const override;
+  void printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O);
+  bool printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS);
+  void printCustomAliasOperand(const MCInst *MI, uint64_t Address,
+                               unsigned OpIdx, unsigned PrintMethodIdx,
+                               raw_ostream &O);
+  static const char *getRegisterName(MCRegister Reg);
+  void printRegName(raw_ostream &OS, MCRegister Reg) override;
+
+private:
+  bool printAlias(const MCInst *MI, raw_ostream &Ostream);
+  bool printInst(const MCInst *MI, raw_ostream &Ostream, StringRef Alias,
+                 unsigned OpNo0, unsigned OpnNo1);
+  bool printMemoryLoadIncrement(const MCInst *MI, raw_ostream &Ostream,
+                                StringRef Opcode, int AddOffset);
+  bool printMemoryStoreIncrement(const MCInst *MI, raw_ostream &Ostream,
+                                 StringRef Opcode, int AddOffset);
+};
+
+} // end namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHINSTPRINTER_H
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHMCAsmInfo.cpp b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCAsmInfo.cpp
new file mode 100644
index 0000000000000..92b17d7bd8b59
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCAsmInfo.cpp
@@ -0,0 +1,43 @@
+//===-- EZHMCAsmInfo.cpp - EZH asm properties -----------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the declarations of the EZHMCAsmInfo properties.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHMCAsmInfo.h"
+#include "llvm/MC/MCDwarf.h"
+#include "llvm/TargetParser/Triple.h"
+
+using namespace llvm;
+
+void EZHMCAsmInfo::anchor() {}
+
+EZHMCAsmInfo::EZHMCAsmInfo(const Triple & /*TheTriple*/,
+                           const MCTargetOptions &Options)
+    : MCAsmInfoELF(Options) {
+  IsLittleEndian = true;
+  InternalSymbolPrefix = ".L";
+  WeakRefDirective = "\t.weak\t";
+  ExceptionsType = ExceptionHandling::SjLj;
+
+  // EZH assembly requires ".section" before ".bss"
+  UsesELFSectionDirectiveForBSS = true;
+
+  // Use ';' as comment string.
+  CommentString = ";";
+
+  // Target supports emission of debugging information.
+  SupportsDebugInformation = true;
+
+  // Set the instruction alignment.
+  MinInstAlignment = 4;
+
+  // DWARF initial frame state: CFA = SP (reg 12) + 0
+  addInitialFrameState(MCCFIInstruction::cfiDefCfa(nullptr, 12, 0));
+}
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHMCAsmInfo.h b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCAsmInfo.h
new file mode 100644
index 0000000000000..34b2f1dd9c163
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCAsmInfo.h
@@ -0,0 +1,31 @@
+//===-- EZHMCAsmInfo.h - EZH asm properties ------------------*- C++ -*--===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the declaration of the EZHMCAsmInfo class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHMCASMINFO_H
+#define LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHMCASMINFO_H
+
+#include "llvm/MC/MCAsmInfoELF.h"
+
+namespace llvm {
+class Triple;
+
+class EZHMCAsmInfo : public MCAsmInfoELF {
+  void anchor() override;
+
+public:
+  explicit EZHMCAsmInfo(const Triple &TheTriple,
+                        const MCTargetOptions &Options);
+};
+
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHMCASMINFO_H
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHMCCodeEmitter.cpp b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCCodeEmitter.cpp
new file mode 100644
index 0000000000000..09220de3aee60
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCCodeEmitter.cpp
@@ -0,0 +1,192 @@
+//===-- EZHMCCodeEmitter.cpp - Convert EZH code to machine code -------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the EZHMCCodeEmitter class.
+//
+//===----------------------------------------------------------------------===//
+
+#include "MCTargetDesc/EZHBaseInfo.h"
+#include "MCTargetDesc/EZHFixupKinds.h"
+#include "MCTargetDesc/EZHMCTargetDesc.h"
+#include "llvm/MC/MCCodeEmitter.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCExpr.h"
+#include "llvm/MC/MCInst.h"
+#include "llvm/MC/MCInstrInfo.h"
+#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/Support/EndianStream.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+#define DEBUG_TYPE "mccodeemitter"
+
+namespace {
+class EZHMCCodeEmitter : public MCCodeEmitter {
+  const MCInstrInfo &MCII;
+  MCContext &Ctx;
+
+public:
+  EZHMCCodeEmitter(const MCInstrInfo &mcii, MCContext &ctx)
+      : MCII(mcii), Ctx(ctx) {}
+
+  ~EZHMCCodeEmitter() override = default;
+
+  void encodeInstruction(const MCInst &MI, SmallVectorImpl<char> &CB,
+                         SmallVectorImpl<MCFixup> &Fixups,
+                         const MCSubtargetInfo &STI) const override;
+
+  // getBinaryCodeForInstr - TableGen'erated function.
+  uint64_t getBinaryCodeForInstr(const MCInst &MI,
+                                 SmallVectorImpl<MCFixup> &Fixups,
+                                 const MCSubtargetInfo &STI) const;
+
+  // getMachineOpValue - Return binary encoding of operand.
+  unsigned getWordOffsetOpValue(const MCInst &MI, unsigned OpNo,
+                                SmallVectorImpl<MCFixup> &Fixups,
+                                const MCSubtargetInfo &STI) const;
+
+  unsigned getMachineOpValue(const MCInst &MI, const MCOperand &MO,
+                             SmallVectorImpl<MCFixup> &Fixups,
+                             const MCSubtargetInfo &STI) const;
+
+  unsigned getBranchTargetOpValue(const MCInst &MI, unsigned OpNo,
+                                  SmallVectorImpl<MCFixup> &Fixups,
+                                  const MCSubtargetInfo &STI) const;
+
+  unsigned getCallTargetOpValue(const MCInst &MI, unsigned OpNo,
+                                SmallVectorImpl<MCFixup> &Fixups,
+                                const MCSubtargetInfo &STI) const;
+};
+} // end anonymous namespace
+
+void EZHMCCodeEmitter::encodeInstruction(const MCInst &MI,
+                                         SmallVectorImpl<char> &CB,
+                                         SmallVectorImpl<MCFixup> &Fixups,
+                                         const MCSubtargetInfo &STI) const {
+  uint64_t Bits = getBinaryCodeForInstr(MI, Fixups, STI);
+  support::endian::write<uint32_t>(CB, Bits, llvm::endianness::little);
+}
+
+unsigned
+EZHMCCodeEmitter::getBranchTargetOpValue(const MCInst &MI, unsigned OpNo,
+                                         SmallVectorImpl<MCFixup> &Fixups,
+                                         const MCSubtargetInfo &STI) const {
+  const MCOperand &MO = MI.getOperand(OpNo);
+  if (MO.isReg())
+    return getEZHRegisterNumbering(MO.getReg());
+  if (MO.isImm()) {
+    uint32_t val = static_cast<uint32_t>(MO.getImm());
+    assert((val & 3) == 0 && "Branch target not 4-byte aligned!");
+    return val >> 2;
+  }
+
+  Fixups.push_back(
+      MCFixup::create(0, MO.getExpr(), MCFixupKind(EZH::FIXUP_EZH_21), false));
+  return 0;
+}
+
+unsigned
+EZHMCCodeEmitter::getCallTargetOpValue(const MCInst &MI, unsigned OpNo,
+                                       SmallVectorImpl<MCFixup> &Fixups,
+                                       const MCSubtargetInfo &STI) const {
+  const MCOperand &MO = MI.getOperand(OpNo);
+  if (MO.isReg())
+    return getEZHRegisterNumbering(MO.getReg());
+  if (MO.isImm()) {
+    uint32_t val = static_cast<uint32_t>(MO.getImm());
+    assert((val & 3) == 0 && "Call offset not 4-byte aligned!");
+    return val >> 2;
+  }
+
+  Fixups.push_back(
+      MCFixup::create(0, MO.getExpr(), MCFixupKind(EZH::FIXUP_EZH_25)));
+  return 0;
+}
+
+unsigned
+EZHMCCodeEmitter::getWordOffsetOpValue(const MCInst &MI, unsigned OpNo,
+                                       SmallVectorImpl<MCFixup> &Fixups,
+                                       const MCSubtargetInfo &STI) const {
+  const MCOperand &MO = MI.getOperand(OpNo);
+  if (MO.isImm()) {
+    uint32_t val = static_cast<uint32_t>(MO.getImm());
+    assert((val & 3) == 0 && "Word offset not 4-byte aligned!");
+    return val >> 2;
+  }
+
+  if (MO.isExpr()) {
+    Fixups.push_back(MCFixup::create(
+        0, MO.getExpr(), MCFixupKind(EZH::FIXUP_EZH_8_PCREL), true));
+    return 0;
+  }
+
+  return getMachineOpValue(MI, MO, Fixups, STI);
+}
+
+unsigned EZHMCCodeEmitter::getMachineOpValue(const MCInst &MI,
+                                             const MCOperand &MO,
+                                             SmallVectorImpl<MCFixup> &Fixups,
+                                             const MCSubtargetInfo &STI) const {
+  if (MO.isReg())
+    return getEZHRegisterNumbering(MO.getReg());
+  if (MO.isImm()) {
+    int64_t Imm = MO.getImm();
+    unsigned Opc = MI.getOpcode();
+
+    if (Opc == EZH::MOVri__) {
+      if (!isInt<11>(Imm)) {
+        Ctx.reportError(MI.getLoc(),
+                        "immediate operand " + Twine(Imm) +
+                            " is out of range for e_load_imm (requires 11-bit "
+                            "signed immediate, -1024 to 1023)!");
+        return 0;
+      }
+    } else if (Opc == EZH::ADDri__ || Opc == EZH::SUBri__) {
+      if (!isInt<12>(Imm)) {
+        Ctx.reportError(MI.getLoc(),
+                        "immediate operand " + Twine(Imm) +
+                            " is out of range for e_add/sub_imm (requires "
+                            "12-bit signed immediate, -2048 to 2047)!");
+        return 0;
+      }
+    } else if (Opc == EZH::LSLi__ || Opc == EZH::LSRi__ || Opc == EZH::ASRi__ ||
+               Opc == EZH::RORi__) {
+      if (!isUInt<5>(Imm)) {
+        Ctx.reportError(MI.getLoc(), "shift count immediate " + Twine(Imm) +
+                                         " is out of range (requires 5-bit "
+                                         "unsigned immediate, 0 to 31)!");
+        return 0;
+      }
+    }
+
+    return static_cast<unsigned>(Imm);
+  }
+
+  if (MO.isExpr()) {
+    unsigned Opc = MI.getOpcode();
+    unsigned FixupKind = EZH::FIXUP_EZH_32;
+    if (Opc == EZH::MOVSri__)
+      FixupKind = EZH::FIXUP_EZH_HI16;
+    else if (Opc == EZH::ORri__)
+      FixupKind = EZH::FIXUP_EZH_LO16;
+
+    Fixups.push_back(MCFixup::create(0, MO.getExpr(), MCFixupKind(FixupKind)));
+    return 0;
+  }
+
+  return 0;
+}
+
+MCCodeEmitter *llvm::createEZHMCCodeEmitter(const MCInstrInfo &MCII,
+                                            MCContext &Ctx) {
+  return new EZHMCCodeEmitter(MCII, Ctx);
+}
+
+#include "EZHGenMCCodeEmitter.inc"
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHMCTargetDesc.cpp b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCTargetDesc.cpp
new file mode 100644
index 0000000000000..c5325b20e398a
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCTargetDesc.cpp
@@ -0,0 +1,169 @@
+//===-- EZHMCTargetDesc.cpp - EZH Target Descriptions -----------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file provides EZH specific target descriptions.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZHMCTargetDesc.h"
+#include "EZHInstPrinter.h"
+#include "EZHMCAsmInfo.h"
+#include "TargetInfo/EZHTargetInfo.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCInst.h"
+#include "llvm/MC/MCInstrAnalysis.h"
+#include "llvm/MC/MCInstrInfo.h"
+#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/MC/MCStreamer.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MC/TargetRegistry.h"
+#include "llvm/Support/Compiler.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/TargetParser/Triple.h"
+#include <cstdint>
+#include <string>
+
+#define GET_INSTRINFO_MC_DESC
+#define ENABLE_INSTR_PREDICATE_VERIFIER
+#include "EZHGenInstrInfo.inc"
+
+#define GET_SUBTARGETINFO_MC_DESC
+#include "EZHGenSubtargetInfo.inc"
+
+#define GET_REGINFO_MC_DESC
+#include "EZHGenRegisterInfo.inc"
+
+using namespace llvm;
+
+static MCInstrInfo *createEZHMCInstrInfo() {
+  MCInstrInfo *X = new MCInstrInfo();
+  InitEZHMCInstrInfo(X);
+  return X;
+}
+
+static MCRegisterInfo *createEZHMCRegisterInfo(const Triple & /*TT*/) {
+  MCRegisterInfo *X = new MCRegisterInfo();
+  InitEZHMCRegisterInfo(X, EZH::RA, 0, 0, EZH::PC);
+  return X;
+}
+
+static MCSubtargetInfo *createEZHMCSubtargetInfo(const Triple &TT,
+                                                 StringRef CPU, StringRef FS) {
+  StringRef CPUName = CPU.empty() ? "generic" : CPU;
+  return createEZHMCSubtargetInfoImpl(TT, CPUName, /*TuneCPU*/ CPUName, FS);
+}
+
+static MCStreamer *createMCStreamer(const Triple &T, MCContext &Context,
+                                    std::unique_ptr<MCAsmBackend> &&MAB,
+                                    std::unique_ptr<MCObjectWriter> &&OW,
+                                    std::unique_ptr<MCCodeEmitter> &&Emitter) {
+  if (!T.isOSBinFormatELF())
+    llvm_unreachable("OS not supported");
+
+  Context.setUseNamesOnTempLabels(true);
+
+  return createELFStreamer(Context, std::move(MAB), std::move(OW),
+                           std::move(Emitter));
+}
+
+static MCInstPrinter *createEZHMCInstPrinter(const Triple & /*T*/,
+                                             unsigned SyntaxVariant,
+                                             const MCAsmInfo &MAI,
+                                             const MCInstrInfo &MII,
+                                             const MCRegisterInfo &MRI) {
+  if (SyntaxVariant == 0)
+    return new EZHInstPrinter(MAI, MII, MRI);
+  return nullptr;
+}
+
+static MCRelocationInfo *createEZHElfRelocation(const Triple &TheTriple,
+                                                MCContext &Ctx) {
+  return createMCRelocationInfo(TheTriple, Ctx);
+}
+
+namespace {
+
+class EZHMCInstrAnalysis : public MCInstrAnalysis {
+public:
+  explicit EZHMCInstrAnalysis(const MCInstrInfo *Info)
+      : MCInstrAnalysis(Info) {}
+
+  bool evaluateBranch(const MCInst &Inst, uint64_t Addr, uint64_t Size,
+                      uint64_t &Target) const override {
+    if (Inst.getNumOperands() == 0)
+      return false;
+    if (!isConditionalBranch(Inst) && !isUnconditionalBranch(Inst) &&
+        !isCall(Inst))
+      return false;
+
+    if (Info->get(Inst.getOpcode()).operands()[0].OperandType ==
+        MCOI::OPERAND_PCREL) {
+      if (!Inst.getOperand(0).isImm())
+        return false;
+      int64_t Imm = Inst.getOperand(0).getImm();
+      Target = Addr + Size + Imm;
+      return true;
+    } else {
+      if (!Inst.getOperand(0).isImm())
+        return false;
+      int64_t Imm = Inst.getOperand(0).getImm();
+
+      // Skip case where immediate is 0 as that occurs in file that isn't linked
+      // and the branch target inferred would be wrong.
+      if (Imm == 0)
+        return false;
+
+      Target = Imm;
+      return true;
+    }
+  }
+};
+
+} // end anonymous namespace
+
+static MCInstrAnalysis *createEZHInstrAnalysis(const MCInstrInfo *Info) {
+  return new EZHMCInstrAnalysis(Info);
+}
+
+extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeEZHTargetMC() {
+  // Register the MC asm info.
+  RegisterMCAsmInfo<EZHMCAsmInfo> X(getTheEZHTarget());
+
+  // Register the MC instruction info.
+  TargetRegistry::RegisterMCInstrInfo(getTheEZHTarget(), createEZHMCInstrInfo);
+
+  // Register the MC register info.
+  TargetRegistry::RegisterMCRegInfo(getTheEZHTarget(), createEZHMCRegisterInfo);
+
+  // Register the MC subtarget info.
+  TargetRegistry::RegisterMCSubtargetInfo(getTheEZHTarget(),
+                                          createEZHMCSubtargetInfo);
+
+  // Register the MC code emitter
+  TargetRegistry::RegisterMCCodeEmitter(getTheEZHTarget(),
+                                        createEZHMCCodeEmitter);
+
+  // Register the ASM Backend
+  TargetRegistry::RegisterMCAsmBackend(getTheEZHTarget(), createEZHAsmBackend);
+
+  // Register the MCInstPrinter.
+  TargetRegistry::RegisterMCInstPrinter(getTheEZHTarget(),
+                                        createEZHMCInstPrinter);
+
+  // Register the ELF streamer.
+  TargetRegistry::RegisterELFStreamer(getTheEZHTarget(), createMCStreamer);
+
+  // Register the MC relocation info.
+  TargetRegistry::RegisterMCRelocationInfo(getTheEZHTarget(),
+                                           createEZHElfRelocation);
+
+  // Register the MC instruction analyzer.
+  TargetRegistry::RegisterMCInstrAnalysis(getTheEZHTarget(),
+                                          createEZHInstrAnalysis);
+}
diff --git a/llvm/lib/Target/EZH/MCTargetDesc/EZHMCTargetDesc.h b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCTargetDesc.h
new file mode 100644
index 0000000000000..0eba0be1c0a80
--- /dev/null
+++ b/llvm/lib/Target/EZH/MCTargetDesc/EZHMCTargetDesc.h
@@ -0,0 +1,51 @@
+//===-- EZHMCTargetDesc.h - EZH Target Descriptions ---------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file provides EZH specific target descriptions.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHMCTARGETDESC_H
+#define LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHMCTARGETDESC_H
+
+#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/MC/MCTargetOptions.h"
+#include "llvm/Support/DataTypes.h"
+
+namespace llvm {
+class MCAsmBackend;
+class MCCodeEmitter;
+class MCContext;
+class MCInstrInfo;
+class MCObjectTargetWriter;
+class MCSubtargetInfo;
+class Target;
+
+MCCodeEmitter *createEZHMCCodeEmitter(const MCInstrInfo &MCII, MCContext &Ctx);
+
+MCAsmBackend *createEZHAsmBackend(const Target &T, const MCSubtargetInfo &STI,
+                                  const MCRegisterInfo &MRI,
+                                  const MCTargetOptions &Options);
+
+std::unique_ptr<MCObjectTargetWriter> createEZHELFObjectWriter(uint8_t OSABI);
+} // namespace llvm
+
+// Defines symbolic names for EZH registers.  This defines a mapping from
+// register name to register number.
+#define GET_REGINFO_ENUM
+#include "EZHGenRegisterInfo.inc"
+
+// Defines symbolic names for the EZH instructions.
+#define GET_INSTRINFO_ENUM
+#define GET_INSTRINFO_MC_HELPER_DECLS
+#include "EZHGenInstrInfo.inc"
+
+#define GET_SUBTARGETINFO_ENUM
+#include "EZHGenSubtargetInfo.inc"
+
+#endif // LLVM_LIB_TARGET_EZH_MCTARGETDESC_EZHMCTARGETDESC_H
diff --git a/llvm/lib/Target/EZH/TargetInfo/CMakeLists.txt b/llvm/lib/Target/EZH/TargetInfo/CMakeLists.txt
new file mode 100644
index 0000000000000..88fb6375dfc7e
--- /dev/null
+++ b/llvm/lib/Target/EZH/TargetInfo/CMakeLists.txt
@@ -0,0 +1,10 @@
+add_llvm_component_library(LLVMEZHInfo
+  EZHTargetInfo.cpp
+
+  LINK_COMPONENTS
+  MC
+  Support
+
+  ADD_TO_COMPONENT
+  EZH
+  )
diff --git a/llvm/lib/Target/EZH/TargetInfo/EZHTargetInfo.cpp b/llvm/lib/Target/EZH/TargetInfo/EZHTargetInfo.cpp
new file mode 100644
index 0000000000000..b2458d4d9f321
--- /dev/null
+++ b/llvm/lib/Target/EZH/TargetInfo/EZHTargetInfo.cpp
@@ -0,0 +1,23 @@
+//===-- EZHTargetInfo.cpp - EZH Target Implementation -----------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "TargetInfo/EZHTargetInfo.h"
+#include "llvm/MC/TargetRegistry.h"
+#include "llvm/Support/Compiler.h"
+
+using namespace llvm;
+
+Target &llvm::getTheEZHTarget() {
+  static Target TheEZHTarget;
+  return TheEZHTarget;
+}
+
+extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void
+LLVMInitializeEZHTargetInfo() {
+  RegisterTarget<Triple::ezh> X(getTheEZHTarget(), "ezh", "EZH", "EZH");
+}
diff --git a/llvm/lib/Target/EZH/TargetInfo/EZHTargetInfo.h b/llvm/lib/Target/EZH/TargetInfo/EZHTargetInfo.h
new file mode 100644
index 0000000000000..853a0608e3d59
--- /dev/null
+++ b/llvm/lib/Target/EZH/TargetInfo/EZHTargetInfo.h
@@ -0,0 +1,20 @@
+//===-- EZHTargetInfo.h - EZH Target Implementation ---------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIB_TARGET_EZH_TARGETINFO_EZHTARGETINFO_H
+#define LLVM_LIB_TARGET_EZH_TARGETINFO_EZHTARGETINFO_H
+
+namespace llvm {
+
+class Target;
+
+Target &getTheEZHTarget();
+
+} // namespace llvm
+
+#endif // LLVM_LIB_TARGET_EZH_TARGETINFO_EZHTARGETINFO_H
diff --git a/llvm/lib/TargetParser/TargetDataLayout.cpp b/llvm/lib/TargetParser/TargetDataLayout.cpp
index a2125eeb82932..8ff0476566105 100644
--- a/llvm/lib/TargetParser/TargetDataLayout.cpp
+++ b/llvm/lib/TargetParser/TargetDataLayout.cpp
@@ -644,6 +644,8 @@ std::string Triple::computeDataLayout(StringRef ABIName) const {
     return computeSPIRVDataLayout(*this);
   case Triple::lanai:
     return computeLanaiDataLayout();
+  case Triple::ezh:
+    return "e-m:e-p:32:32-i64:32-f64:32-n32-S32";
   case Triple::wasm32:
   case Triple::wasm64:
     return computeWebAssemblyDataLayout(*this);
diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp
index c6515425b7eb5..28c23f2d1b970 100644
--- a/llvm/lib/TargetParser/Triple.cpp
+++ b/llvm/lib/TargetParser/Triple.cpp
@@ -150,6 +150,8 @@ StringRef Triple::getArchTypeName(ArchType Kind) {
     return "xcore";
   case xtensa:
     return "xtensa";
+  case ezh:
+    return "ezh";
   }
 
   llvm_unreachable("Invalid ArchType!");
@@ -879,6 +881,7 @@ Triple::ArchType Triple::parseArch(StringRef ArchName) {
                   "dxilv1.9"},
                  Triple::dxil)
           .Case("xtensa", Triple::xtensa)
+          .Case("ezh", Triple::ezh)
           .Default(Triple::UnknownArch);
 
   // Some architectures require special parsing logic just to compute the
@@ -1241,6 +1244,7 @@ static Triple::ObjectFormatType getDefaultFormat(const Triple &T) {
   case Triple::thumbeb:
   case Triple::ve:
   case Triple::xcore:
+  case Triple::ezh:
   case Triple::xtensa:
     return Triple::ELF;
 
@@ -2004,6 +2008,7 @@ unsigned Triple::getArchPointerBitWidth(llvm::Triple::ArchType Arch) {
   case llvm::Triple::wasm32:
   case llvm::Triple::x86:
   case llvm::Triple::xcore:
+  case llvm::Triple::ezh:
   case llvm::Triple::xtensa:
     return 32;
 
@@ -2116,6 +2121,7 @@ Triple Triple::get32BitArchVariant() const {
   case Triple::x86:
   case Triple::xcore:
   case Triple::xtensa:
+  case Triple::ezh:
     // Already 32-bit.
     break;
 
@@ -2200,6 +2206,7 @@ Triple Triple::get64BitArchVariant() const {
   case Triple::tce:
   case Triple::xcore:
   case Triple::xtensa:
+  case Triple::ezh:
     T.setArch(UnknownArch);
     break;
 
@@ -2486,6 +2493,7 @@ bool Triple::isLittleEndian() const {
   case Triple::x86_64:
   case Triple::xcore:
   case Triple::xtensa:
+  case Triple::ezh:
     return true;
   default:
     return false;
@@ -2720,6 +2728,8 @@ ExceptionHandling Triple::getDefaultExceptionHandling() const {
   case Triple::xcore:
   case Triple::xtensa:
     return ExceptionHandling::DwarfCFI;
+  case Triple::ezh:
+    return ExceptionHandling::SjLj;
   default:
     break;
   }
diff --git a/llvm/test/CodeGen/EZH/if-cvt-alu.ll b/llvm/test/CodeGen/EZH/if-cvt-alu.ll
new file mode 100644
index 0000000000000..3b1917d6811ea
--- /dev/null
+++ b/llvm/test/CodeGen/EZH/if-cvt-alu.ll
@@ -0,0 +1,109 @@
+; RUN: llc -mtriple=ezh-none-elf -mattr=-bitslice-interrupts -O3 < %s | FileCheck %s
+
+define i32 @test_select_add(i32 %cond, i32 %a, i32 %b) {
+; CHECK-LABEL: test_select_add:
+; CHECK: e_sub_imms r0, r0, 0
+; CHECK: e_add_ze r1, r1, r2
+; CHECK: e_mov pc, ra
+entry:
+  %tobool = icmp eq i32 %cond, 0
+  br i1 %tobool, label %if.true, label %if.end
+
+if.true:
+  %add = add i32 %a, %b
+  br label %if.end
+
+if.end:
+  %res = phi i32 [ %add, %if.true ], [ %a, %entry ]
+  ret i32 %res
+}
+
+define i32 @test_select_sub(i32 %cond, i32 %a, i32 %b) {
+; CHECK-LABEL: test_select_sub:
+; CHECK: e_sub_imms r0, r0, 0
+; CHECK: e_sub_ze r1, r1, r2
+; CHECK: e_mov pc, ra
+entry:
+  %tobool = icmp eq i32 %cond, 0
+  br i1 %tobool, label %if.true, label %if.end
+
+if.true:
+  %sub = sub i32 %a, %b
+  br label %if.end
+
+if.end:
+  %res = phi i32 [ %sub, %if.true ], [ %a, %entry ]
+  ret i32 %res
+}
+
+define i32 @test_select_and(i32 %cond, i32 %a, i32 %b) {
+; CHECK-LABEL: test_select_and:
+; CHECK: e_sub_imms r0, r0, 0
+; CHECK: e_and_ze r1, r1, r2
+; CHECK: e_mov pc, ra
+entry:
+  %tobool = icmp eq i32 %cond, 0
+  br i1 %tobool, label %if.true, label %if.end
+
+if.true:
+  %and = and i32 %a, %b
+  br label %if.end
+
+if.end:
+  %res = phi i32 [ %and, %if.true ], [ %a, %entry ]
+  ret i32 %res
+}
+
+define i32 @test_select_or(i32 %cond, i32 %a, i32 %b) {
+; CHECK-LABEL: test_select_or:
+; CHECK: e_sub_imms r0, r0, 0
+; CHECK: e_or_ze r1, r1, r2
+; CHECK: e_mov pc, ra
+entry:
+  %tobool = icmp eq i32 %cond, 0
+  br i1 %tobool, label %if.true, label %if.end
+
+if.true:
+  %or = or i32 %a, %b
+  br label %if.end
+
+if.end:
+  %res = phi i32 [ %or, %if.true ], [ %a, %entry ]
+  ret i32 %res
+}
+
+define i32 @test_select_xor(i32 %cond, i32 %a, i32 %b) {
+; CHECK-LABEL: test_select_xor:
+; CHECK: e_sub_imms r0, r0, 0
+; CHECK: e_xor_ze r1, r1, r2
+; CHECK: e_mov pc, ra
+entry:
+  %tobool = icmp eq i32 %cond, 0
+  br i1 %tobool, label %if.true, label %if.end
+
+if.true:
+  %xor = xor i32 %a, %b
+  br label %if.end
+
+if.end:
+  %res = phi i32 [ %xor, %if.true ], [ %a, %entry ]
+  ret i32 %res
+}
+
+define i32 @test_select_shl(i32 %cond, i32 %a) {
+; CHECK-LABEL: test_select_shl:
+; CHECK: e_sub_imms r0, r0, 0
+; CHECK: e_lsl_ze r1, r1, 2
+; CHECK: e_mov pc, ra
+entry:
+  %tobool = icmp eq i32 %cond, 0
+  br i1 %tobool, label %if.true, label %if.end
+
+if.true:
+  %shl = shl i32 %a, 2
+  br label %if.end
+
+if.end:
+  %res = phi i32 [ %shl, %if.true ], [ %a, %entry ]
+  ret i32 %res
+}
diff --git a/llvm/test/MC/EZH/instructions.s b/llvm/test/MC/EZH/instructions.s
new file mode 100644
index 0000000000000..cde519e9aefd2
--- /dev/null
+++ b/llvm/test/MC/EZH/instructions.s
@@ -0,0 +1,60865 @@
+# RUN: llvm-mc -triple ezh-none-elf -show-encoding < %s | FileCheck %s
+
+    e_gosub 0x0
+# CHECK: encoding: [0x03,0x00,0x00,0x00]
+
+    e_gosub 0x20
+# CHECK: encoding: [0x23,0x00,0x00,0x00]
+
+    e_gosub 0x40
+# CHECK: encoding: [0x43,0x00,0x00,0x00]
+
+    e_gosub 0x400
+# CHECK: encoding: [0x03,0x04,0x00,0x00]
+
+    e_gosub 0x8000
+# CHECK: encoding: [0x03,0x80,0x00,0x00]
+
+    e_gosub 0x0
+# CHECK: encoding: [0x03,0x00,0x00,0x00]
+
+    e_gosub 0x20
+# CHECK: encoding: [0x23,0x00,0x00,0x00]
+
+    e_gosub 0x40
+# CHECK: encoding: [0x43,0x00,0x00,0x00]
+
+    e_gosub 0x400
+# CHECK: encoding: [0x03,0x04,0x00,0x00]
+
+    e_gosub 0x8000
+# CHECK: encoding: [0x03,0x80,0x00,0x00]
+
+    e_gosub 0x0
+# CHECK: encoding: [0x03,0x00,0x00,0x00]
+
+    e_gosub 0x20
+# CHECK: encoding: [0x23,0x00,0x00,0x00]
+
+    e_gosub 0x40
+# CHECK: encoding: [0x43,0x00,0x00,0x00]
+
+    e_gosub 0x400
+# CHECK: encoding: [0x03,0x04,0x00,0x00]
+
+    e_gosub 0x8000
+# CHECK: encoding: [0x03,0x80,0x00,0x00]
+
+    e_gosub 0x0
+# CHECK: encoding: [0x03,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_nop
+# CHECK: encoding: [0x12,0x00,0x00,0x00]
+
+    e_int_trigger 0x0
+# CHECK: encoding: [0x14,0x00,0x00,0x00]
+
+    e_int_trigger 0x10000
+# CHECK: encoding: [0x14,0x00,0x00,0x01]
+
+    e_int_trigger 0x100000
+# CHECK: encoding: [0x14,0x00,0x00,0x10]
+
+    e_int_trigger 0xffffff
+# CHECK: encoding: [0x14,0xff,0xff,0xff]
+
+    e_int_trigger 0x4c4b40
+# CHECK: encoding: [0x14,0x40,0x4b,0x4c]
+
+    e_int_trigger 0x0
+# CHECK: encoding: [0x14,0x00,0x00,0x00]
+
+    e_int_trigger 0x10000
+# CHECK: encoding: [0x14,0x00,0x00,0x01]
+
+    e_int_trigger 0x100000
+# CHECK: encoding: [0x14,0x00,0x00,0x10]
+
+    e_int_trigger 0xffffff
+# CHECK: encoding: [0x14,0xff,0xff,0xff]
+
+    e_int_trigger 0x4c4b40
+# CHECK: encoding: [0x14,0x40,0x4b,0x4c]
+
+    e_int_trigger 0x0
+# CHECK: encoding: [0x14,0x00,0x00,0x00]
+
+    e_int_trigger 0x10000
+# CHECK: encoding: [0x14,0x00,0x00,0x01]
+
+    e_int_trigger 0x100000
+# CHECK: encoding: [0x14,0x00,0x00,0x10]
+
+    e_int_trigger 0xffffff
+# CHECK: encoding: [0x14,0xff,0xff,0xff]
+
+    e_int_trigger 0x4c4b40
+# CHECK: encoding: [0x14,0x40,0x4b,0x4c]
+
+    e_int_trigger 0x0
+# CHECK: encoding: [0x14,0x00,0x00,0x00]
+
+    e_goto 0x0
+# CHECK: encoding: [0x15,0x02,0x00,0x00]
+
+    e_goto 0x10000
+# CHECK: encoding: [0x15,0x02,0x00,0x02]
+
+    e_goto 0x20000
+# CHECK: encoding: [0x15,0x02,0x00,0x04]
+
+    e_goto 0x1ffffc
+# CHECK: encoding: [0x15,0xfa,0xff,0x3f]
+
+    e_goto 0x7a120
+# CHECK: encoding: [0x15,0x42,0x42,0x0f]
+
+    e_goto 0x0
+# CHECK: encoding: [0x15,0x02,0x00,0x00]
+
+    e_goto 0x10000
+# CHECK: encoding: [0x15,0x02,0x00,0x02]
+
+    e_goto 0x20000
+# CHECK: encoding: [0x15,0x02,0x00,0x04]
+
+    e_goto 0x1ffffc
+# CHECK: encoding: [0x15,0xfa,0xff,0x3f]
+
+    e_goto 0x7a120
+# CHECK: encoding: [0x15,0x42,0x42,0x0f]
+
+    e_goto 0x0
+# CHECK: encoding: [0x15,0x02,0x00,0x00]
+
+    e_goto 0x10000
+# CHECK: encoding: [0x15,0x02,0x00,0x02]
+
+    e_goto 0x20000
+# CHECK: encoding: [0x15,0x02,0x00,0x04]
+
+    e_goto 0x1ffffc
+# CHECK: encoding: [0x15,0xfa,0xff,0x3f]
+
+    e_goto 0x7a120
+# CHECK: encoding: [0x15,0x42,0x42,0x0f]
+
+    e_goto 0x0
+# CHECK: encoding: [0x15,0x02,0x00,0x00]
+
+    e_goto_reg r0
+# CHECK: encoding: [0x15,0x00,0x00,0x00]
+
+    e_goto_reg r2
+# CHECK: encoding: [0x15,0x80,0x00,0x00]
+
+    e_goto_reg r5
+# CHECK: encoding: [0x15,0x40,0x01,0x00]
+
+    e_goto_reg r7
+# CHECK: encoding: [0x15,0xc0,0x01,0x00]
+
+    e_goto_reg r1
+# CHECK: encoding: [0x15,0x40,0x00,0x00]
+
+    e_goto_reg r0
+# CHECK: encoding: [0x15,0x00,0x00,0x00]
+
+    e_goto_reg r2
+# CHECK: encoding: [0x15,0x80,0x00,0x00]
+
+    e_goto_reg r5
+# CHECK: encoding: [0x15,0x40,0x01,0x00]
+
+    e_goto_reg r7
+# CHECK: encoding: [0x15,0xc0,0x01,0x00]
+
+    e_goto_reg r1
+# CHECK: encoding: [0x15,0x40,0x00,0x00]
+
+    e_goto_reg r0
+# CHECK: encoding: [0x15,0x00,0x00,0x00]
+
+    e_goto_reg r2
+# CHECK: encoding: [0x15,0x80,0x00,0x00]
+
+    e_goto_reg r5
+# CHECK: encoding: [0x15,0x40,0x01,0x00]
+
+    e_goto_reg r7
+# CHECK: encoding: [0x15,0xc0,0x01,0x00]
+
+    e_goto_reg r1
+# CHECK: encoding: [0x15,0x40,0x00,0x00]
+
+    e_goto_reg r0
+# CHECK: encoding: [0x15,0x00,0x00,0x00]
+
+    e_gotol 0x0
+# CHECK: encoding: [0x15,0x06,0x00,0x00]
+
+    e_gotol 0x10000
+# CHECK: encoding: [0x15,0x06,0x00,0x02]
+
+    e_gotol 0x20000
+# CHECK: encoding: [0x15,0x06,0x00,0x04]
+
+    e_gotol 0x1ffffc
+# CHECK: encoding: [0x15,0xfe,0xff,0x3f]
+
+    e_gotol 0x7a120
+# CHECK: encoding: [0x15,0x46,0x42,0x0f]
+
+    e_gotol 0x0
+# CHECK: encoding: [0x15,0x06,0x00,0x00]
+
+    e_gotol 0x10000
+# CHECK: encoding: [0x15,0x06,0x00,0x02]
+
+    e_gotol 0x20000
+# CHECK: encoding: [0x15,0x06,0x00,0x04]
+
+    e_gotol 0x1ffffc
+# CHECK: encoding: [0x15,0xfe,0xff,0x3f]
+
+    e_gotol 0x7a120
+# CHECK: encoding: [0x15,0x46,0x42,0x0f]
+
+    e_gotol 0x0
+# CHECK: encoding: [0x15,0x06,0x00,0x00]
+
+    e_gotol 0x10000
+# CHECK: encoding: [0x15,0x06,0x00,0x02]
+
+    e_gotol 0x20000
+# CHECK: encoding: [0x15,0x06,0x00,0x04]
+
+    e_gotol 0x1ffffc
+# CHECK: encoding: [0x15,0xfe,0xff,0x3f]
+
+    e_gotol 0x7a120
+# CHECK: encoding: [0x15,0x46,0x42,0x0f]
+
+    e_gotol 0x0
+# CHECK: encoding: [0x15,0x06,0x00,0x00]
+
+    e_goto_regl r0
+# CHECK: encoding: [0x15,0x04,0x00,0x00]
+
+    e_goto_regl r2
+# CHECK: encoding: [0x15,0x84,0x00,0x00]
+
+    e_goto_regl r5
+# CHECK: encoding: [0x15,0x44,0x01,0x00]
+
+    e_goto_regl r7
+# CHECK: encoding: [0x15,0xc4,0x01,0x00]
+
+    e_goto_regl r1
+# CHECK: encoding: [0x15,0x44,0x00,0x00]
+
+    e_goto_regl r0
+# CHECK: encoding: [0x15,0x04,0x00,0x00]
+
+    e_goto_regl r2
+# CHECK: encoding: [0x15,0x84,0x00,0x00]
+
+    e_goto_regl r5
+# CHECK: encoding: [0x15,0x44,0x01,0x00]
+
+    e_goto_regl r7
+# CHECK: encoding: [0x15,0xc4,0x01,0x00]
+
+    e_goto_regl r1
+# CHECK: encoding: [0x15,0x44,0x00,0x00]
+
+    e_goto_regl r0
+# CHECK: encoding: [0x15,0x04,0x00,0x00]
+
+    e_goto_regl r2
+# CHECK: encoding: [0x15,0x84,0x00,0x00]
+
+    e_goto_regl r5
+# CHECK: encoding: [0x15,0x44,0x01,0x00]
+
+    e_goto_regl r7
+# CHECK: encoding: [0x15,0xc4,0x01,0x00]
+
+    e_goto_regl r1
+# CHECK: encoding: [0x15,0x44,0x00,0x00]
+
+    e_goto_regl r0
+# CHECK: encoding: [0x15,0x04,0x00,0x00]
+
+    e_goto_ze 0x0
+# CHECK: encoding: [0x35,0x02,0x00,0x00]
+
+    e_goto_nz 0x10000
+# CHECK: encoding: [0x55,0x02,0x00,0x02]
+
+    e_goto_po 0x20000
+# CHECK: encoding: [0x75,0x02,0x00,0x04]
+
+    e_goto_ne 0x1ffffc
+# CHECK: encoding: [0x95,0xfa,0xff,0x3f]
+
+    e_goto 0x7a120
+# CHECK: encoding: [0x15,0x42,0x42,0x0f]
+
+    e_goto_az 0x0
+# CHECK: encoding: [0xb5,0x02,0x00,0x00]
+
+    e_goto_zb 0x10000
+# CHECK: encoding: [0xd5,0x02,0x00,0x02]
+
+    e_goto_ca 0x20000
+# CHECK: encoding: [0xf5,0x02,0x00,0x04]
+
+    e_goto_nc 0x1ffffc
+# CHECK: encoding: [0x15,0xfb,0xff,0x3f]
+
+    e_goto_cz 0x7a120
+# CHECK: encoding: [0x35,0x43,0x42,0x0f]
+
+    e_goto_spo 0x0
+# CHECK: encoding: [0x55,0x03,0x00,0x00]
+
+    e_goto_sne 0x10000
+# CHECK: encoding: [0x75,0x03,0x00,0x02]
+
+    e_goto_nbs 0x20000
+# CHECK: encoding: [0x95,0x03,0x00,0x04]
+
+    e_goto_nex 0x1ffffc
+# CHECK: encoding: [0xb5,0xfb,0xff,0x3f]
+
+    e_goto_bs 0x7a120
+# CHECK: encoding: [0xd5,0x43,0x42,0x0f]
+
+    e_goto_ex 0x0
+# CHECK: encoding: [0xf5,0x03,0x00,0x00]
+
+    e_goto_reg_ze r0
+# CHECK: encoding: [0x35,0x00,0x00,0x00]
+
+    e_goto_reg_nz r2
+# CHECK: encoding: [0x55,0x80,0x00,0x00]
+
+    e_goto_reg_po r5
+# CHECK: encoding: [0x75,0x40,0x01,0x00]
+
+    e_goto_reg_ne r7
+# CHECK: encoding: [0x95,0xc0,0x01,0x00]
+
+    e_goto_reg r1
+# CHECK: encoding: [0x15,0x40,0x00,0x00]
+
+    e_goto_reg_az r0
+# CHECK: encoding: [0xb5,0x00,0x00,0x00]
+
+    e_goto_reg_zb r2
+# CHECK: encoding: [0xd5,0x80,0x00,0x00]
+
+    e_goto_reg_ca r5
+# CHECK: encoding: [0xf5,0x40,0x01,0x00]
+
+    e_goto_reg_nc r7
+# CHECK: encoding: [0x15,0xc1,0x01,0x00]
+
+    e_goto_reg_cz r1
+# CHECK: encoding: [0x35,0x41,0x00,0x00]
+
+    e_goto_reg_spo r0
+# CHECK: encoding: [0x55,0x01,0x00,0x00]
+
+    e_goto_reg_sne r2
+# CHECK: encoding: [0x75,0x81,0x00,0x00]
+
+    e_goto_reg_nbs r5
+# CHECK: encoding: [0x95,0x41,0x01,0x00]
+
+    e_goto_reg_nex r7
+# CHECK: encoding: [0xb5,0xc1,0x01,0x00]
+
+    e_goto_reg_bs r1
+# CHECK: encoding: [0xd5,0x41,0x00,0x00]
+
+    e_goto_reg_ex r0
+# CHECK: encoding: [0xf5,0x01,0x00,0x00]
+
+    e_gotol_ze 0x0
+# CHECK: encoding: [0x35,0x06,0x00,0x00]
+
+    e_gotol_nz 0x10000
+# CHECK: encoding: [0x55,0x06,0x00,0x02]
+
+    e_gotol_po 0x20000
+# CHECK: encoding: [0x75,0x06,0x00,0x04]
+
+    e_gotol_ne 0x1ffffc
+# CHECK: encoding: [0x95,0xfe,0xff,0x3f]
+
+    e_gotol 0x7a120
+# CHECK: encoding: [0x15,0x46,0x42,0x0f]
+
+    e_gotol_az 0x0
+# CHECK: encoding: [0xb5,0x06,0x00,0x00]
+
+    e_gotol_zb 0x10000
+# CHECK: encoding: [0xd5,0x06,0x00,0x02]
+
+    e_gotol_ca 0x20000
+# CHECK: encoding: [0xf5,0x06,0x00,0x04]
+
+    e_gotol_nc 0x1ffffc
+# CHECK: encoding: [0x15,0xff,0xff,0x3f]
+
+    e_gotol_cz 0x7a120
+# CHECK: encoding: [0x35,0x47,0x42,0x0f]
+
+    e_gotol_spo 0x0
+# CHECK: encoding: [0x55,0x07,0x00,0x00]
+
+    e_gotol_sne 0x10000
+# CHECK: encoding: [0x75,0x07,0x00,0x02]
+
+    e_gotol_nbs 0x20000
+# CHECK: encoding: [0x95,0x07,0x00,0x04]
+
+    e_gotol_nex 0x1ffffc
+# CHECK: encoding: [0xb5,0xff,0xff,0x3f]
+
+    e_gotol_bs 0x7a120
+# CHECK: encoding: [0xd5,0x47,0x42,0x0f]
+
+    e_gotol_ex 0x0
+# CHECK: encoding: [0xf5,0x07,0x00,0x00]
+
+    e_goto_regl_ze r0
+# CHECK: encoding: [0x35,0x04,0x00,0x00]
+
+    e_goto_regl_nz r2
+# CHECK: encoding: [0x55,0x84,0x00,0x00]
+
+    e_goto_regl_po r5
+# CHECK: encoding: [0x75,0x44,0x01,0x00]
+
+    e_goto_regl_ne r7
+# CHECK: encoding: [0x95,0xc4,0x01,0x00]
+
+    e_goto_regl r1
+# CHECK: encoding: [0x15,0x44,0x00,0x00]
+
+    e_goto_regl_az r0
+# CHECK: encoding: [0xb5,0x04,0x00,0x00]
+
+    e_goto_regl_zb r2
+# CHECK: encoding: [0xd5,0x84,0x00,0x00]
+
+    e_goto_regl_ca r5
+# CHECK: encoding: [0xf5,0x44,0x01,0x00]
+
+    e_goto_regl_nc r7
+# CHECK: encoding: [0x15,0xc5,0x01,0x00]
+
+    e_goto_regl_cz r1
+# CHECK: encoding: [0x35,0x45,0x00,0x00]
+
+    e_goto_regl_spo r0
+# CHECK: encoding: [0x55,0x05,0x00,0x00]
+
+    e_goto_regl_sne r2
+# CHECK: encoding: [0x75,0x85,0x00,0x00]
+
+    e_goto_regl_nbs r5
+# CHECK: encoding: [0x95,0x45,0x01,0x00]
+
+    e_goto_regl_nex r7
+# CHECK: encoding: [0xb5,0xc5,0x01,0x00]
+
+    e_goto_regl_bs r1
+# CHECK: encoding: [0xd5,0x45,0x00,0x00]
+
+    e_goto_regl_ex r0
+# CHECK: encoding: [0xf5,0x05,0x00,0x00]
+
+    e_mov r0, r0
+# CHECK: encoding: [0x00,0x00,0x00,0x00]
+
+    e_mov r2, r2
+# CHECK: encoding: [0x00,0x88,0x00,0x00]
+
+    e_mov r5, r5
+# CHECK: encoding: [0x00,0x54,0x01,0x00]
+
+    e_mov r7, r7
+# CHECK: encoding: [0x00,0xdc,0x01,0x00]
+
+    e_mov r1, r1
+# CHECK: encoding: [0x00,0x44,0x00,0x00]
+
+    e_mov r0, r0
+# CHECK: encoding: [0x00,0x00,0x00,0x00]
+
+    e_mov r2, r2
+# CHECK: encoding: [0x00,0x88,0x00,0x00]
+
+    e_mov r5, r5
+# CHECK: encoding: [0x00,0x54,0x01,0x00]
+
+    e_mov r7, r7
+# CHECK: encoding: [0x00,0xdc,0x01,0x00]
+
+    e_mov r1, r1
+# CHECK: encoding: [0x00,0x44,0x00,0x00]
+
+    e_mov r0, r0
+# CHECK: encoding: [0x00,0x00,0x00,0x00]
+
+    e_mov r2, r2
+# CHECK: encoding: [0x00,0x88,0x00,0x00]
+
+    e_mov r5, r5
+# CHECK: encoding: [0x00,0x54,0x01,0x00]
+
+    e_mov r7, r7
+# CHECK: encoding: [0x00,0xdc,0x01,0x00]
+
+    e_mov r1, r1
+# CHECK: encoding: [0x00,0x44,0x00,0x00]
+
+    e_mov r0, r0
+# CHECK: encoding: [0x00,0x00,0x00,0x00]
+
+    e_movs r0, r0
+# CHECK: encoding: [0x00,0x02,0x00,0x00]
+
+    e_movs r2, r2
+# CHECK: encoding: [0x00,0x8a,0x00,0x00]
+
+    e_movs r5, r5
+# CHECK: encoding: [0x00,0x56,0x01,0x00]
+
+    e_movs r7, r7
+# CHECK: encoding: [0x00,0xde,0x01,0x00]
+
+    e_movs r1, r1
+# CHECK: encoding: [0x00,0x46,0x00,0x00]
+
+    e_movs r0, r0
+# CHECK: encoding: [0x00,0x02,0x00,0x00]
+
+    e_movs r2, r2
+# CHECK: encoding: [0x00,0x8a,0x00,0x00]
+
+    e_movs r5, r5
+# CHECK: encoding: [0x00,0x56,0x01,0x00]
+
+    e_movs r7, r7
+# CHECK: encoding: [0x00,0xde,0x01,0x00]
+
+    e_movs r1, r1
+# CHECK: encoding: [0x00,0x46,0x00,0x00]
+
+    e_movs r0, r0
+# CHECK: encoding: [0x00,0x02,0x00,0x00]
+
+    e_movs r2, r2
+# CHECK: encoding: [0x00,0x8a,0x00,0x00]
+
+    e_movs r5, r5
+# CHECK: encoding: [0x00,0x56,0x01,0x00]
+
+    e_movs r7, r7
+# CHECK: encoding: [0x00,0xde,0x01,0x00]
+
+    e_movs r1, r1
+# CHECK: encoding: [0x00,0x46,0x00,0x00]
+
+    e_movs r0, r0
+# CHECK: encoding: [0x00,0x02,0x00,0x00]
+
+    e_mov_ze r0, r0
+# CHECK: encoding: [0x20,0x00,0x00,0x00]
+
+    e_mov_nz r2, r2
+# CHECK: encoding: [0x40,0x88,0x00,0x00]
+
+    e_mov_po r5, r5
+# CHECK: encoding: [0x60,0x54,0x01,0x00]
+
+    e_mov_ne r7, r7
+# CHECK: encoding: [0x80,0xdc,0x01,0x00]
+
+    e_mov r1, r1
+# CHECK: encoding: [0x00,0x44,0x00,0x00]
+
+    e_mov_az r0, r0
+# CHECK: encoding: [0xa0,0x00,0x00,0x00]
+
+    e_mov_zb r2, r2
+# CHECK: encoding: [0xc0,0x88,0x00,0x00]
+
+    e_mov_ca r5, r5
+# CHECK: encoding: [0xe0,0x54,0x01,0x00]
+
+    e_mov_nc r7, r7
+# CHECK: encoding: [0x00,0xdd,0x01,0x00]
+
+    e_mov_cz r1, r1
+# CHECK: encoding: [0x20,0x45,0x00,0x00]
+
+    e_mov_spo r0, r0
+# CHECK: encoding: [0x40,0x01,0x00,0x00]
+
+    e_mov_sne r2, r2
+# CHECK: encoding: [0x60,0x89,0x00,0x00]
+
+    e_mov_nbs r5, r5
+# CHECK: encoding: [0x80,0x55,0x01,0x00]
+
+    e_mov_nex r7, r7
+# CHECK: encoding: [0xa0,0xdd,0x01,0x00]
+
+    e_mov_bs r1, r1
+# CHECK: encoding: [0xc0,0x45,0x00,0x00]
+
+    e_mov_ex r0, r0
+# CHECK: encoding: [0xe0,0x01,0x00,0x00]
+
+    e_movs_ze r0, r0
+# CHECK: encoding: [0x20,0x02,0x00,0x00]
+
+    e_movs_nz r2, r2
+# CHECK: encoding: [0x40,0x8a,0x00,0x00]
+
+    e_movs_po r5, r5
+# CHECK: encoding: [0x60,0x56,0x01,0x00]
+
+    e_movs_ne r7, r7
+# CHECK: encoding: [0x80,0xde,0x01,0x00]
+
+    e_movs r1, r1
+# CHECK: encoding: [0x00,0x46,0x00,0x00]
+
+    e_movs_az r0, r0
+# CHECK: encoding: [0xa0,0x02,0x00,0x00]
+
+    e_movs_zb r2, r2
+# CHECK: encoding: [0xc0,0x8a,0x00,0x00]
+
+    e_movs_ca r5, r5
+# CHECK: encoding: [0xe0,0x56,0x01,0x00]
+
+    e_movs_nc r7, r7
+# CHECK: encoding: [0x00,0xdf,0x01,0x00]
+
+    e_movs_cz r1, r1
+# CHECK: encoding: [0x20,0x47,0x00,0x00]
+
+    e_movs_spo r0, r0
+# CHECK: encoding: [0x40,0x03,0x00,0x00]
+
+    e_movs_sne r2, r2
+# CHECK: encoding: [0x60,0x8b,0x00,0x00]
+
+    e_movs_nbs r5, r5
+# CHECK: encoding: [0x80,0x57,0x01,0x00]
+
+    e_movs_nex r7, r7
+# CHECK: encoding: [0xa0,0xdf,0x01,0x00]
+
+    e_movs_bs r1, r1
+# CHECK: encoding: [0xc0,0x47,0x00,0x00]
+
+    e_movs_ex r0, r0
+# CHECK: encoding: [0xe0,0x03,0x00,0x00]
+
+    e_mvn r0, r0
+# CHECK: encoding: [0x00,0x00,0x00,0x80]
+
+    e_mvn r2, r2
+# CHECK: encoding: [0x00,0x88,0x00,0x80]
+
+    e_mvn r5, r5
+# CHECK: encoding: [0x00,0x54,0x01,0x80]
+
+    e_mvn r7, r7
+# CHECK: encoding: [0x00,0xdc,0x01,0x80]
+
+    e_mvn r1, r1
+# CHECK: encoding: [0x00,0x44,0x00,0x80]
+
+    e_mvn r0, r0
+# CHECK: encoding: [0x00,0x00,0x00,0x80]
+
+    e_mvn r2, r2
+# CHECK: encoding: [0x00,0x88,0x00,0x80]
+
+    e_mvn r5, r5
+# CHECK: encoding: [0x00,0x54,0x01,0x80]
+
+    e_mvn r7, r7
+# CHECK: encoding: [0x00,0xdc,0x01,0x80]
+
+    e_mvn r1, r1
+# CHECK: encoding: [0x00,0x44,0x00,0x80]
+
+    e_mvn r0, r0
+# CHECK: encoding: [0x00,0x00,0x00,0x80]
+
+    e_mvn r2, r2
+# CHECK: encoding: [0x00,0x88,0x00,0x80]
+
+    e_mvn r5, r5
+# CHECK: encoding: [0x00,0x54,0x01,0x80]
+
+    e_mvn r7, r7
+# CHECK: encoding: [0x00,0xdc,0x01,0x80]
+
+    e_mvn r1, r1
+# CHECK: encoding: [0x00,0x44,0x00,0x80]
+
+    e_mvn r0, r0
+# CHECK: encoding: [0x00,0x00,0x00,0x80]
+
+    e_mvns r0, r0
+# CHECK: encoding: [0x00,0x02,0x00,0x80]
+
+    e_mvns r2, r2
+# CHECK: encoding: [0x00,0x8a,0x00,0x80]
+
+    e_mvns r5, r5
+# CHECK: encoding: [0x00,0x56,0x01,0x80]
+
+    e_mvns r7, r7
+# CHECK: encoding: [0x00,0xde,0x01,0x80]
+
+    e_mvns r1, r1
+# CHECK: encoding: [0x00,0x46,0x00,0x80]
+
+    e_mvns r0, r0
+# CHECK: encoding: [0x00,0x02,0x00,0x80]
+
+    e_mvns r2, r2
+# CHECK: encoding: [0x00,0x8a,0x00,0x80]
+
+    e_mvns r5, r5
+# CHECK: encoding: [0x00,0x56,0x01,0x80]
+
+    e_mvns r7, r7
+# CHECK: encoding: [0x00,0xde,0x01,0x80]
+
+    e_mvns r1, r1
+# CHECK: encoding: [0x00,0x46,0x00,0x80]
+
+    e_mvns r0, r0
+# CHECK: encoding: [0x00,0x02,0x00,0x80]
+
+    e_mvns r2, r2
+# CHECK: encoding: [0x00,0x8a,0x00,0x80]
+
+    e_mvns r5, r5
+# CHECK: encoding: [0x00,0x56,0x01,0x80]
+
+    e_mvns r7, r7
+# CHECK: encoding: [0x00,0xde,0x01,0x80]
+
+    e_mvns r1, r1
+# CHECK: encoding: [0x00,0x46,0x00,0x80]
+
+    e_mvns r0, r0
+# CHECK: encoding: [0x00,0x02,0x00,0x80]
+
+    e_mvn_ze r0, r0
+# CHECK: encoding: [0x20,0x00,0x00,0x80]
+
+    e_mvn_nz r2, r2
+# CHECK: encoding: [0x40,0x88,0x00,0x80]
+
+    e_mvn_po r5, r5
+# CHECK: encoding: [0x60,0x54,0x01,0x80]
+
+    e_mvn_ne r7, r7
+# CHECK: encoding: [0x80,0xdc,0x01,0x80]
+
+    e_mvn r1, r1
+# CHECK: encoding: [0x00,0x44,0x00,0x80]
+
+    e_mvn_az r0, r0
+# CHECK: encoding: [0xa0,0x00,0x00,0x80]
+
+    e_mvn_zb r2, r2
+# CHECK: encoding: [0xc0,0x88,0x00,0x80]
+
+    e_mvn_ca r5, r5
+# CHECK: encoding: [0xe0,0x54,0x01,0x80]
+
+    e_mvn_nc r7, r7
+# CHECK: encoding: [0x00,0xdd,0x01,0x80]
+
+    e_mvn_cz r1, r1
+# CHECK: encoding: [0x20,0x45,0x00,0x80]
+
+    e_mvn_spo r0, r0
+# CHECK: encoding: [0x40,0x01,0x00,0x80]
+
+    e_mvn_sne r2, r2
+# CHECK: encoding: [0x60,0x89,0x00,0x80]
+
+    e_mvn_nbs r5, r5
+# CHECK: encoding: [0x80,0x55,0x01,0x80]
+
+    e_mvn_nex r7, r7
+# CHECK: encoding: [0xa0,0xdd,0x01,0x80]
+
+    e_mvn_bs r1, r1
+# CHECK: encoding: [0xc0,0x45,0x00,0x80]
+
+    e_mvn_ex r0, r0
+# CHECK: encoding: [0xe0,0x01,0x00,0x80]
+
+    e_mvns_ze r0, r0
+# CHECK: encoding: [0x20,0x02,0x00,0x80]
+
+    e_mvns_nz r2, r2
+# CHECK: encoding: [0x40,0x8a,0x00,0x80]
+
+    e_mvns_po r5, r5
+# CHECK: encoding: [0x60,0x56,0x01,0x80]
+
+    e_mvns_ne r7, r7
+# CHECK: encoding: [0x80,0xde,0x01,0x80]
+
+    e_mvns r1, r1
+# CHECK: encoding: [0x00,0x46,0x00,0x80]
+
+    e_mvns_az r0, r0
+# CHECK: encoding: [0xa0,0x02,0x00,0x80]
+
+    e_mvns_zb r2, r2
+# CHECK: encoding: [0xc0,0x8a,0x00,0x80]
+
+    e_mvns_ca r5, r5
+# CHECK: encoding: [0xe0,0x56,0x01,0x80]
+
+    e_mvns_nc r7, r7
+# CHECK: encoding: [0x00,0xdf,0x01,0x80]
+
+    e_mvns_cz r1, r1
+# CHECK: encoding: [0x20,0x47,0x00,0x80]
+
+    e_mvns_spo r0, r0
+# CHECK: encoding: [0x40,0x03,0x00,0x80]
+
+    e_mvns_sne r2, r2
+# CHECK: encoding: [0x60,0x8b,0x00,0x80]
+
+    e_mvns_nbs r5, r5
+# CHECK: encoding: [0x80,0x57,0x01,0x80]
+
+    e_mvns_nex r7, r7
+# CHECK: encoding: [0xa0,0xdf,0x01,0x80]
+
+    e_mvns_bs r1, r1
+# CHECK: encoding: [0xc0,0x47,0x00,0x80]
+
+    e_mvns_ex r0, r0
+# CHECK: encoding: [0xe0,0x03,0x00,0x80]
+
+    e_load_imm r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0x3f]
+
+    e_load_imm r2, -0x3ff
+# CHECK: encoding: [0x00,0x08,0x14,0x40]
+
+    e_load_imm r5, 0x1ff
+# CHECK: encoding: [0x00,0x14,0xf4,0x1f]
+
+    e_load_imm r7, -0x1ff
+# CHECK: encoding: [0x00,0x1c,0x14,0x60]
+
+    e_load_imm r1, 0x1
+# CHECK: encoding: [0x00,0x04,0x14,0x00]
+
+    e_load_imm r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0x3f]
+
+    e_load_imm r2, -0x3ff
+# CHECK: encoding: [0x00,0x08,0x14,0x40]
+
+    e_load_imm r5, 0x1ff
+# CHECK: encoding: [0x00,0x14,0xf4,0x1f]
+
+    e_load_imm r7, -0x1ff
+# CHECK: encoding: [0x00,0x1c,0x14,0x60]
+
+    e_load_imm r1, 0x1
+# CHECK: encoding: [0x00,0x04,0x14,0x00]
+
+    e_load_imm r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0x3f]
+
+    e_load_imm r2, -0x3ff
+# CHECK: encoding: [0x00,0x08,0x14,0x40]
+
+    e_load_imm r5, 0x1ff
+# CHECK: encoding: [0x00,0x14,0xf4,0x1f]
+
+    e_load_imm r7, -0x1ff
+# CHECK: encoding: [0x00,0x1c,0x14,0x60]
+
+    e_load_imm r1, 0x1
+# CHECK: encoding: [0x00,0x04,0x14,0x00]
+
+    e_load_imm r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0x3f]
+
+    e_load_imms r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0x3f]
+
+    e_load_imms r2, -0x3ff
+# CHECK: encoding: [0x00,0x0a,0x14,0x40]
+
+    e_load_imms r5, 0x1ff
+# CHECK: encoding: [0x00,0x16,0xf4,0x1f]
+
+    e_load_imms r7, -0x1ff
+# CHECK: encoding: [0x00,0x1e,0x14,0x60]
+
+    e_load_imms r1, 0x1
+# CHECK: encoding: [0x00,0x06,0x14,0x00]
+
+    e_load_imms r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0x3f]
+
+    e_load_imms r2, -0x3ff
+# CHECK: encoding: [0x00,0x0a,0x14,0x40]
+
+    e_load_imms r5, 0x1ff
+# CHECK: encoding: [0x00,0x16,0xf4,0x1f]
+
+    e_load_imms r7, -0x1ff
+# CHECK: encoding: [0x00,0x1e,0x14,0x60]
+
+    e_load_imms r1, 0x1
+# CHECK: encoding: [0x00,0x06,0x14,0x00]
+
+    e_load_imms r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0x3f]
+
+    e_load_imms r2, -0x3ff
+# CHECK: encoding: [0x00,0x0a,0x14,0x40]
+
+    e_load_imms r5, 0x1ff
+# CHECK: encoding: [0x00,0x16,0xf4,0x1f]
+
+    e_load_imms r7, -0x1ff
+# CHECK: encoding: [0x00,0x1e,0x14,0x60]
+
+    e_load_imms r1, 0x1
+# CHECK: encoding: [0x00,0x06,0x14,0x00]
+
+    e_load_imms r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0x3f]
+
+    e_load_imm_ze r0, 0x3ff
+# CHECK: encoding: [0x20,0x00,0xf4,0x3f]
+
+    e_load_imm_nz r2, -0x3ff
+# CHECK: encoding: [0x40,0x08,0x14,0x40]
+
+    e_load_imm_po r5, 0x1ff
+# CHECK: encoding: [0x60,0x14,0xf4,0x1f]
+
+    e_load_imm_ne r7, -0x1ff
+# CHECK: encoding: [0x80,0x1c,0x14,0x60]
+
+    e_load_imm r1, 0x1
+# CHECK: encoding: [0x00,0x04,0x14,0x00]
+
+    e_load_imm_az r0, 0x3ff
+# CHECK: encoding: [0xa0,0x00,0xf4,0x3f]
+
+    e_load_imm_zb r2, -0x3ff
+# CHECK: encoding: [0xc0,0x08,0x14,0x40]
+
+    e_load_imm_ca r5, 0x1ff
+# CHECK: encoding: [0xe0,0x14,0xf4,0x1f]
+
+    e_load_imm_nc r7, -0x1ff
+# CHECK: encoding: [0x00,0x1d,0x14,0x60]
+
+    e_load_imm_cz r1, 0x1
+# CHECK: encoding: [0x20,0x05,0x14,0x00]
+
+    e_load_imm_spo r0, 0x3ff
+# CHECK: encoding: [0x40,0x01,0xf4,0x3f]
+
+    e_load_imm_sne r2, -0x3ff
+# CHECK: encoding: [0x60,0x09,0x14,0x40]
+
+    e_load_imm_nbs r5, 0x1ff
+# CHECK: encoding: [0x80,0x15,0xf4,0x1f]
+
+    e_load_imm_nex r7, -0x1ff
+# CHECK: encoding: [0xa0,0x1d,0x14,0x60]
+
+    e_load_imm_bs r1, 0x1
+# CHECK: encoding: [0xc0,0x05,0x14,0x00]
+
+    e_load_imm_ex r0, 0x3ff
+# CHECK: encoding: [0xe0,0x01,0xf4,0x3f]
+
+    e_load_imms_ze r0, 0x3ff
+# CHECK: encoding: [0x20,0x02,0xf4,0x3f]
+
+    e_load_imms_nz r2, -0x3ff
+# CHECK: encoding: [0x40,0x0a,0x14,0x40]
+
+    e_load_imms_po r5, 0x1ff
+# CHECK: encoding: [0x60,0x16,0xf4,0x1f]
+
+    e_load_imms_ne r7, -0x1ff
+# CHECK: encoding: [0x80,0x1e,0x14,0x60]
+
+    e_load_imms r1, 0x1
+# CHECK: encoding: [0x00,0x06,0x14,0x00]
+
+    e_load_imms_az r0, 0x3ff
+# CHECK: encoding: [0xa0,0x02,0xf4,0x3f]
+
+    e_load_imms_zb r2, -0x3ff
+# CHECK: encoding: [0xc0,0x0a,0x14,0x40]
+
+    e_load_imms_ca r5, 0x1ff
+# CHECK: encoding: [0xe0,0x16,0xf4,0x1f]
+
+    e_load_imms_nc r7, -0x1ff
+# CHECK: encoding: [0x00,0x1f,0x14,0x60]
+
+    e_load_imms_cz r1, 0x1
+# CHECK: encoding: [0x20,0x07,0x14,0x00]
+
+    e_load_imms_spo r0, 0x3ff
+# CHECK: encoding: [0x40,0x03,0xf4,0x3f]
+
+    e_load_imms_sne r2, -0x3ff
+# CHECK: encoding: [0x60,0x0b,0x14,0x40]
+
+    e_load_imms_nbs r5, 0x1ff
+# CHECK: encoding: [0x80,0x17,0xf4,0x1f]
+
+    e_load_imms_nex r7, -0x1ff
+# CHECK: encoding: [0xa0,0x1f,0x14,0x60]
+
+    e_load_imms_bs r1, 0x1
+# CHECK: encoding: [0xc0,0x07,0x14,0x00]
+
+    e_load_imms_ex r0, 0x3ff
+# CHECK: encoding: [0xe0,0x03,0xf4,0x3f]
+
+    e_load_simm r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0x3f]
+
+    e_load_simm r2, -0x7fe0
+# CHECK: encoding: [0x00,0x48,0x15,0x40]
+
+    e_load_simm r5, 0xff8000
+# CHECK: encoding: [0x00,0xd4,0xf7,0x1f]
+
+    e_load_simm r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdc,0x1f,0x60]
+
+    e_load_simm r1, 0x400
+# CHECK: encoding: [0x00,0x84,0x16,0x00]
+
+    e_load_simm r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0x3f]
+
+    e_load_simm r2, -0x7fe0
+# CHECK: encoding: [0x00,0x48,0x15,0x40]
+
+    e_load_simm r5, 0xff8000
+# CHECK: encoding: [0x00,0xd4,0xf7,0x1f]
+
+    e_load_simm r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdc,0x1f,0x60]
+
+    e_load_simm r1, 0x400
+# CHECK: encoding: [0x00,0x84,0x16,0x00]
+
+    e_load_simm r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0x3f]
+
+    e_load_simm r2, -0x7fe0
+# CHECK: encoding: [0x00,0x48,0x15,0x40]
+
+    e_load_simm r5, 0xff8000
+# CHECK: encoding: [0x00,0xd4,0xf7,0x1f]
+
+    e_load_simm r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdc,0x1f,0x60]
+
+    e_load_simm r1, 0x400
+# CHECK: encoding: [0x00,0x84,0x16,0x00]
+
+    e_load_simm r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0x3f]
+
+    e_load_simms r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0x3f]
+
+    e_load_simms r2, -0x7fe0
+# CHECK: encoding: [0x00,0x4a,0x15,0x40]
+
+    e_load_simms r5, 0xff8000
+# CHECK: encoding: [0x00,0xd6,0xf7,0x1f]
+
+    e_load_simms r7, -0xff80000000
+# CHECK: encoding: [0x00,0xde,0x1f,0x60]
+
+    e_load_simms r1, 0x400
+# CHECK: encoding: [0x00,0x86,0x16,0x00]
+
+    e_load_simms r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0x3f]
+
+    e_load_simms r2, -0x7fe0
+# CHECK: encoding: [0x00,0x4a,0x15,0x40]
+
+    e_load_simms r5, 0xff8000
+# CHECK: encoding: [0x00,0xd6,0xf7,0x1f]
+
+    e_load_simms r7, -0xff80000000
+# CHECK: encoding: [0x00,0xde,0x1f,0x60]
+
+    e_load_simms r1, 0x400
+# CHECK: encoding: [0x00,0x86,0x16,0x00]
+
+    e_load_simms r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0x3f]
+
+    e_load_simms r2, -0x7fe0
+# CHECK: encoding: [0x00,0x4a,0x15,0x40]
+
+    e_load_simms r5, 0xff8000
+# CHECK: encoding: [0x00,0xd6,0xf7,0x1f]
+
+    e_load_simms r7, -0xff80000000
+# CHECK: encoding: [0x00,0xde,0x1f,0x60]
+
+    e_load_simms r1, 0x400
+# CHECK: encoding: [0x00,0x86,0x16,0x00]
+
+    e_load_simms r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0x3f]
+
+    e_load_simm_ze r0, 0x3ff
+# CHECK: encoding: [0x20,0x00,0xf4,0x3f]
+
+    e_load_simm_nz r2, -0x7fe0
+# CHECK: encoding: [0x40,0x48,0x15,0x40]
+
+    e_load_simm_po r5, 0xff8000
+# CHECK: encoding: [0x60,0xd4,0xf7,0x1f]
+
+    e_load_simm_ne r7, -0xff80000000
+# CHECK: encoding: [0x80,0xdc,0x1f,0x60]
+
+    e_load_simm r1, 0x400
+# CHECK: encoding: [0x00,0x84,0x16,0x00]
+
+    e_load_simm_az r0, 0x3ff
+# CHECK: encoding: [0xa0,0x00,0xf4,0x3f]
+
+    e_load_simm_zb r2, -0x7fe0
+# CHECK: encoding: [0xc0,0x48,0x15,0x40]
+
+    e_load_simm_ca r5, 0xff8000
+# CHECK: encoding: [0xe0,0xd4,0xf7,0x1f]
+
+    e_load_simm_nc r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdd,0x1f,0x60]
+
+    e_load_simm_cz r1, 0x400
+# CHECK: encoding: [0x20,0x85,0x16,0x00]
+
+    e_load_simm_spo r0, 0x3ff
+# CHECK: encoding: [0x40,0x01,0xf4,0x3f]
+
+    e_load_simm_sne r2, -0x7fe0
+# CHECK: encoding: [0x60,0x49,0x15,0x40]
+
+    e_load_simm_nbs r5, 0xff8000
+# CHECK: encoding: [0x80,0xd5,0xf7,0x1f]
+
+    e_load_simm_nex r7, -0xff80000000
+# CHECK: encoding: [0xa0,0xdd,0x1f,0x60]
+
+    e_load_simm_bs r1, 0x400
+# CHECK: encoding: [0xc0,0x85,0x16,0x00]
+
+    e_load_simm_ex r0, 0x3ff
+# CHECK: encoding: [0xe0,0x01,0xf4,0x3f]
+
+    e_load_simms_ze r0, 0x3ff
+# CHECK: encoding: [0x20,0x02,0xf4,0x3f]
+
+    e_load_simms_nz r2, -0x7fe0
+# CHECK: encoding: [0x40,0x4a,0x15,0x40]
+
+    e_load_simms_po r5, 0xff8000
+# CHECK: encoding: [0x60,0xd6,0xf7,0x1f]
+
+    e_load_simms_ne r7, -0xff80000000
+# CHECK: encoding: [0x80,0xde,0x1f,0x60]
+
+    e_load_simms r1, 0x400
+# CHECK: encoding: [0x00,0x86,0x16,0x00]
+
+    e_load_simms_az r0, 0x3ff
+# CHECK: encoding: [0xa0,0x02,0xf4,0x3f]
+
+    e_load_simms_zb r2, -0x7fe0
+# CHECK: encoding: [0xc0,0x4a,0x15,0x40]
+
+    e_load_simms_ca r5, 0xff8000
+# CHECK: encoding: [0xe0,0xd6,0xf7,0x1f]
+
+    e_load_simms_nc r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdf,0x1f,0x60]
+
+    e_load_simms_cz r1, 0x400
+# CHECK: encoding: [0x20,0x87,0x16,0x00]
+
+    e_load_simms_spo r0, 0x3ff
+# CHECK: encoding: [0x40,0x03,0xf4,0x3f]
+
+    e_load_simms_sne r2, -0x7fe0
+# CHECK: encoding: [0x60,0x4b,0x15,0x40]
+
+    e_load_simms_nbs r5, 0xff8000
+# CHECK: encoding: [0x80,0xd7,0xf7,0x1f]
+
+    e_load_simms_nex r7, -0xff80000000
+# CHECK: encoding: [0xa0,0xdf,0x1f,0x60]
+
+    e_load_simms_bs r1, 0x400
+# CHECK: encoding: [0xc0,0x87,0x16,0x00]
+
+    e_load_simms_ex r0, 0x3ff
+# CHECK: encoding: [0xe0,0x03,0xf4,0x3f]
+
+    e_load_immn r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0xbf]
+
+    e_load_immn r2, -0x3ff
+# CHECK: encoding: [0x00,0x08,0x14,0xc0]
+
+    e_load_immn r5, 0x1ff
+# CHECK: encoding: [0x00,0x14,0xf4,0x9f]
+
+    e_load_immn r7, -0x1ff
+# CHECK: encoding: [0x00,0x1c,0x14,0xe0]
+
+    e_load_immn r1, 0x1
+# CHECK: encoding: [0x00,0x04,0x14,0x80]
+
+    e_load_immn r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0xbf]
+
+    e_load_immn r2, -0x3ff
+# CHECK: encoding: [0x00,0x08,0x14,0xc0]
+
+    e_load_immn r5, 0x1ff
+# CHECK: encoding: [0x00,0x14,0xf4,0x9f]
+
+    e_load_immn r7, -0x1ff
+# CHECK: encoding: [0x00,0x1c,0x14,0xe0]
+
+    e_load_immn r1, 0x1
+# CHECK: encoding: [0x00,0x04,0x14,0x80]
+
+    e_load_immn r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0xbf]
+
+    e_load_immn r2, -0x3ff
+# CHECK: encoding: [0x00,0x08,0x14,0xc0]
+
+    e_load_immn r5, 0x1ff
+# CHECK: encoding: [0x00,0x14,0xf4,0x9f]
+
+    e_load_immn r7, -0x1ff
+# CHECK: encoding: [0x00,0x1c,0x14,0xe0]
+
+    e_load_immn r1, 0x1
+# CHECK: encoding: [0x00,0x04,0x14,0x80]
+
+    e_load_immn r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0xbf]
+
+    e_load_immns r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0xbf]
+
+    e_load_immns r2, -0x3ff
+# CHECK: encoding: [0x00,0x0a,0x14,0xc0]
+
+    e_load_immns r5, 0x1ff
+# CHECK: encoding: [0x00,0x16,0xf4,0x9f]
+
+    e_load_immns r7, -0x1ff
+# CHECK: encoding: [0x00,0x1e,0x14,0xe0]
+
+    e_load_immns r1, 0x1
+# CHECK: encoding: [0x00,0x06,0x14,0x80]
+
+    e_load_immns r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0xbf]
+
+    e_load_immns r2, -0x3ff
+# CHECK: encoding: [0x00,0x0a,0x14,0xc0]
+
+    e_load_immns r5, 0x1ff
+# CHECK: encoding: [0x00,0x16,0xf4,0x9f]
+
+    e_load_immns r7, -0x1ff
+# CHECK: encoding: [0x00,0x1e,0x14,0xe0]
+
+    e_load_immns r1, 0x1
+# CHECK: encoding: [0x00,0x06,0x14,0x80]
+
+    e_load_immns r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0xbf]
+
+    e_load_immns r2, -0x3ff
+# CHECK: encoding: [0x00,0x0a,0x14,0xc0]
+
+    e_load_immns r5, 0x1ff
+# CHECK: encoding: [0x00,0x16,0xf4,0x9f]
+
+    e_load_immns r7, -0x1ff
+# CHECK: encoding: [0x00,0x1e,0x14,0xe0]
+
+    e_load_immns r1, 0x1
+# CHECK: encoding: [0x00,0x06,0x14,0x80]
+
+    e_load_immns r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0xbf]
+
+    e_load_immn_ze r0, 0x3ff
+# CHECK: encoding: [0x20,0x00,0xf4,0xbf]
+
+    e_load_immn_nz r2, -0x3ff
+# CHECK: encoding: [0x40,0x08,0x14,0xc0]
+
+    e_load_immn_po r5, 0x1ff
+# CHECK: encoding: [0x60,0x14,0xf4,0x9f]
+
+    e_load_immn_ne r7, -0x1ff
+# CHECK: encoding: [0x80,0x1c,0x14,0xe0]
+
+    e_load_immn r1, 0x1
+# CHECK: encoding: [0x00,0x04,0x14,0x80]
+
+    e_load_immn_az r0, 0x3ff
+# CHECK: encoding: [0xa0,0x00,0xf4,0xbf]
+
+    e_load_immn_zb r2, -0x3ff
+# CHECK: encoding: [0xc0,0x08,0x14,0xc0]
+
+    e_load_immn_ca r5, 0x1ff
+# CHECK: encoding: [0xe0,0x14,0xf4,0x9f]
+
+    e_load_immn_nc r7, -0x1ff
+# CHECK: encoding: [0x00,0x1d,0x14,0xe0]
+
+    e_load_immn_cz r1, 0x1
+# CHECK: encoding: [0x20,0x05,0x14,0x80]
+
+    e_load_immn_spo r0, 0x3ff
+# CHECK: encoding: [0x40,0x01,0xf4,0xbf]
+
+    e_load_immn_sne r2, -0x3ff
+# CHECK: encoding: [0x60,0x09,0x14,0xc0]
+
+    e_load_immn_nbs r5, 0x1ff
+# CHECK: encoding: [0x80,0x15,0xf4,0x9f]
+
+    e_load_immn_nex r7, -0x1ff
+# CHECK: encoding: [0xa0,0x1d,0x14,0xe0]
+
+    e_load_immn_bs r1, 0x1
+# CHECK: encoding: [0xc0,0x05,0x14,0x80]
+
+    e_load_immn_ex r0, 0x3ff
+# CHECK: encoding: [0xe0,0x01,0xf4,0xbf]
+
+    e_load_immns_ze r0, 0x3ff
+# CHECK: encoding: [0x20,0x02,0xf4,0xbf]
+
+    e_load_immns_nz r2, -0x3ff
+# CHECK: encoding: [0x40,0x0a,0x14,0xc0]
+
+    e_load_immns_po r5, 0x1ff
+# CHECK: encoding: [0x60,0x16,0xf4,0x9f]
+
+    e_load_immns_ne r7, -0x1ff
+# CHECK: encoding: [0x80,0x1e,0x14,0xe0]
+
+    e_load_immns r1, 0x1
+# CHECK: encoding: [0x00,0x06,0x14,0x80]
+
+    e_load_immns_az r0, 0x3ff
+# CHECK: encoding: [0xa0,0x02,0xf4,0xbf]
+
+    e_load_immns_zb r2, -0x3ff
+# CHECK: encoding: [0xc0,0x0a,0x14,0xc0]
+
+    e_load_immns_ca r5, 0x1ff
+# CHECK: encoding: [0xe0,0x16,0xf4,0x9f]
+
+    e_load_immns_nc r7, -0x1ff
+# CHECK: encoding: [0x00,0x1f,0x14,0xe0]
+
+    e_load_immns_cz r1, 0x1
+# CHECK: encoding: [0x20,0x07,0x14,0x80]
+
+    e_load_immns_spo r0, 0x3ff
+# CHECK: encoding: [0x40,0x03,0xf4,0xbf]
+
+    e_load_immns_sne r2, -0x3ff
+# CHECK: encoding: [0x60,0x0b,0x14,0xc0]
+
+    e_load_immns_nbs r5, 0x1ff
+# CHECK: encoding: [0x80,0x17,0xf4,0x9f]
+
+    e_load_immns_nex r7, -0x1ff
+# CHECK: encoding: [0xa0,0x1f,0x14,0xe0]
+
+    e_load_immns_bs r1, 0x1
+# CHECK: encoding: [0xc0,0x07,0x14,0x80]
+
+    e_load_immns_ex r0, 0x3ff
+# CHECK: encoding: [0xe0,0x03,0xf4,0xbf]
+
+    e_load_simmn r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0xbf]
+
+    e_load_simmn r2, -0x7fe0
+# CHECK: encoding: [0x00,0x48,0x15,0xc0]
+
+    e_load_simmn r5, 0xff8000
+# CHECK: encoding: [0x00,0xd4,0xf7,0x9f]
+
+    e_load_simmn r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdc,0x1f,0xe0]
+
+    e_load_simmn r1, 0x400
+# CHECK: encoding: [0x00,0x84,0x16,0x80]
+
+    e_load_simmn r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0xbf]
+
+    e_load_simmn r2, -0x7fe0
+# CHECK: encoding: [0x00,0x48,0x15,0xc0]
+
+    e_load_simmn r5, 0xff8000
+# CHECK: encoding: [0x00,0xd4,0xf7,0x9f]
+
+    e_load_simmn r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdc,0x1f,0xe0]
+
+    e_load_simmn r1, 0x400
+# CHECK: encoding: [0x00,0x84,0x16,0x80]
+
+    e_load_simmn r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0xbf]
+
+    e_load_simmn r2, -0x7fe0
+# CHECK: encoding: [0x00,0x48,0x15,0xc0]
+
+    e_load_simmn r5, 0xff8000
+# CHECK: encoding: [0x00,0xd4,0xf7,0x9f]
+
+    e_load_simmn r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdc,0x1f,0xe0]
+
+    e_load_simmn r1, 0x400
+# CHECK: encoding: [0x00,0x84,0x16,0x80]
+
+    e_load_simmn r0, 0x3ff
+# CHECK: encoding: [0x00,0x00,0xf4,0xbf]
+
+    e_load_simmns r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0xbf]
+
+    e_load_simmns r2, -0x7fe0
+# CHECK: encoding: [0x00,0x4a,0x15,0xc0]
+
+    e_load_simmns r5, 0xff8000
+# CHECK: encoding: [0x00,0xd6,0xf7,0x9f]
+
+    e_load_simmns r7, -0xff80000000
+# CHECK: encoding: [0x00,0xde,0x1f,0xe0]
+
+    e_load_simmns r1, 0x400
+# CHECK: encoding: [0x00,0x86,0x16,0x80]
+
+    e_load_simmns r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0xbf]
+
+    e_load_simmns r2, -0x7fe0
+# CHECK: encoding: [0x00,0x4a,0x15,0xc0]
+
+    e_load_simmns r5, 0xff8000
+# CHECK: encoding: [0x00,0xd6,0xf7,0x9f]
+
+    e_load_simmns r7, -0xff80000000
+# CHECK: encoding: [0x00,0xde,0x1f,0xe0]
+
+    e_load_simmns r1, 0x400
+# CHECK: encoding: [0x00,0x86,0x16,0x80]
+
+    e_load_simmns r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0xbf]
+
+    e_load_simmns r2, -0x7fe0
+# CHECK: encoding: [0x00,0x4a,0x15,0xc0]
+
+    e_load_simmns r5, 0xff8000
+# CHECK: encoding: [0x00,0xd6,0xf7,0x9f]
+
+    e_load_simmns r7, -0xff80000000
+# CHECK: encoding: [0x00,0xde,0x1f,0xe0]
+
+    e_load_simmns r1, 0x400
+# CHECK: encoding: [0x00,0x86,0x16,0x80]
+
+    e_load_simmns r0, 0x3ff
+# CHECK: encoding: [0x00,0x02,0xf4,0xbf]
+
+    e_load_simmn_ze r0, 0x3ff
+# CHECK: encoding: [0x20,0x00,0xf4,0xbf]
+
+    e_load_simmn_nz r2, -0x7fe0
+# CHECK: encoding: [0x40,0x48,0x15,0xc0]
+
+    e_load_simmn_po r5, 0xff8000
+# CHECK: encoding: [0x60,0xd4,0xf7,0x9f]
+
+    e_load_simmn_ne r7, -0xff80000000
+# CHECK: encoding: [0x80,0xdc,0x1f,0xe0]
+
+    e_load_simmn r1, 0x400
+# CHECK: encoding: [0x00,0x84,0x16,0x80]
+
+    e_load_simmn_az r0, 0x3ff
+# CHECK: encoding: [0xa0,0x00,0xf4,0xbf]
+
+    e_load_simmn_zb r2, -0x7fe0
+# CHECK: encoding: [0xc0,0x48,0x15,0xc0]
+
+    e_load_simmn_ca r5, 0xff8000
+# CHECK: encoding: [0xe0,0xd4,0xf7,0x9f]
+
+    e_load_simmn_nc r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdd,0x1f,0xe0]
+
+    e_load_simmn_cz r1, 0x400
+# CHECK: encoding: [0x20,0x85,0x16,0x80]
+
+    e_load_simmn_spo r0, 0x3ff
+# CHECK: encoding: [0x40,0x01,0xf4,0xbf]
+
+    e_load_simmn_sne r2, -0x7fe0
+# CHECK: encoding: [0x60,0x49,0x15,0xc0]
+
+    e_load_simmn_nbs r5, 0xff8000
+# CHECK: encoding: [0x80,0xd5,0xf7,0x9f]
+
+    e_load_simmn_nex r7, -0xff80000000
+# CHECK: encoding: [0xa0,0xdd,0x1f,0xe0]
+
+    e_load_simmn_bs r1, 0x400
+# CHECK: encoding: [0xc0,0x85,0x16,0x80]
+
+    e_load_simmn_ex r0, 0x3ff
+# CHECK: encoding: [0xe0,0x01,0xf4,0xbf]
+
+    e_load_simmns_ze r0, 0x3ff
+# CHECK: encoding: [0x20,0x02,0xf4,0xbf]
+
+    e_load_simmns_nz r2, -0x7fe0
+# CHECK: encoding: [0x40,0x4a,0x15,0xc0]
+
+    e_load_simmns_po r5, 0xff8000
+# CHECK: encoding: [0x60,0xd6,0xf7,0x9f]
+
+    e_load_simmns_ne r7, -0xff80000000
+# CHECK: encoding: [0x80,0xde,0x1f,0xe0]
+
+    e_load_simmns r1, 0x400
+# CHECK: encoding: [0x00,0x86,0x16,0x80]
+
+    e_load_simmns_az r0, 0x3ff
+# CHECK: encoding: [0xa0,0x02,0xf4,0xbf]
+
+    e_load_simmns_zb r2, -0x7fe0
+# CHECK: encoding: [0xc0,0x4a,0x15,0xc0]
+
+    e_load_simmns_ca r5, 0xff8000
+# CHECK: encoding: [0xe0,0xd6,0xf7,0x9f]
+
+    e_load_simmns_nc r7, -0xff80000000
+# CHECK: encoding: [0x00,0xdf,0x1f,0xe0]
+
+    e_load_simmns_cz r1, 0x400
+# CHECK: encoding: [0x20,0x87,0x16,0x80]
+
+    e_load_simmns_spo r0, 0x3ff
+# CHECK: encoding: [0x40,0x03,0xf4,0xbf]
+
+    e_load_simmns_sne r2, -0x7fe0
+# CHECK: encoding: [0x60,0x4b,0x15,0xc0]
+
+    e_load_simmns_nbs r5, 0xff8000
+# CHECK: encoding: [0x80,0xd7,0xf7,0x9f]
+
+    e_load_simmns_nex r7, -0xff80000000
+# CHECK: encoding: [0xa0,0xdf,0x1f,0xe0]
+
+    e_load_simmns_bs r1, 0x400
+# CHECK: encoding: [0xc0,0x87,0x16,0x80]
+
+    e_load_simmns_ex r0, 0x3ff
+# CHECK: encoding: [0xe0,0x03,0xf4,0xbf]
+
+    e_ldr r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x04,0x00]
+
+    e_ldr r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x04,0x7f]
+
+    e_ldr r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x05,0xff]
+
+    e_ldr r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x05,0x40]
+
+    e_ldr r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x04,0x0a]
+
+    e_ldr r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x04,0x00]
+
+    e_ldr r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x04,0x7f]
+
+    e_ldr r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x05,0xff]
+
+    e_ldr r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x05,0x40]
+
+    e_ldr r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x04,0x0a]
+
+    e_ldr r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x04,0x00]
+
+    e_ldr r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x04,0x7f]
+
+    e_ldr r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x05,0xff]
+
+    e_ldr r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x05,0x40]
+
+    e_ldr r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x04,0x0a]
+
+    e_ldr r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x04,0x00]
+
+    e_ldrb r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x00,0x00]
+
+    e_ldrb r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x00,0x7f]
+
+    e_ldrb r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x01,0xff]
+
+    e_ldrb r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x01,0x40]
+
+    e_ldrb r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x00,0x0a]
+
+    e_ldrb r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x00,0x00]
+
+    e_ldrb r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x00,0x7f]
+
+    e_ldrb r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x01,0xff]
+
+    e_ldrb r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x01,0x40]
+
+    e_ldrb r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x00,0x0a]
+
+    e_ldrb r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x00,0x00]
+
+    e_ldrb r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x00,0x7f]
+
+    e_ldrb r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x01,0xff]
+
+    e_ldrb r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x01,0x40]
+
+    e_ldrb r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x00,0x0a]
+
+    e_ldrb r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x00,0x00]
+
+    e_ldrbs r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x20,0x00]
+
+    e_ldrbs r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x20,0x7f]
+
+    e_ldrbs r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x21,0xff]
+
+    e_ldrbs r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x21,0x40]
+
+    e_ldrbs r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x20,0x0a]
+
+    e_ldrbs r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x20,0x00]
+
+    e_ldrbs r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x20,0x7f]
+
+    e_ldrbs r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x21,0xff]
+
+    e_ldrbs r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x21,0x40]
+
+    e_ldrbs r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x20,0x0a]
+
+    e_ldrbs r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x20,0x00]
+
+    e_ldrbs r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x20,0x7f]
+
+    e_ldrbs r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x21,0xff]
+
+    e_ldrbs r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x21,0x40]
+
+    e_ldrbs r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x20,0x0a]
+
+    e_ldrbs r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x20,0x00]
+
+    e_ldr_ze r0, r0, 0x0
+# CHECK: encoding: [0x21,0x00,0x04,0x00]
+
+    e_ldr_nz r2, r2, 0x1fc
+# CHECK: encoding: [0x41,0x88,0x04,0x7f]
+
+    e_ldr_po r5, r5, 0x3fc
+# CHECK: encoding: [0x61,0x54,0x05,0xff]
+
+    e_ldr_ne r7, r7, 0x100
+# CHECK: encoding: [0x81,0xdc,0x05,0x40]
+
+    e_ldr r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x04,0x0a]
+
+    e_ldr_az r0, r0, 0x0
+# CHECK: encoding: [0xa1,0x00,0x04,0x00]
+
+    e_ldr_zb r2, r2, 0x1fc
+# CHECK: encoding: [0xc1,0x88,0x04,0x7f]
+
+    e_ldr_ca r5, r5, 0x3fc
+# CHECK: encoding: [0xe1,0x54,0x05,0xff]
+
+    e_ldr_nc r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdd,0x05,0x40]
+
+    e_ldr_cz r1, r1, 0x28
+# CHECK: encoding: [0x21,0x45,0x04,0x0a]
+
+    e_ldr_spo r0, r0, 0x0
+# CHECK: encoding: [0x41,0x01,0x04,0x00]
+
+    e_ldr_sne r2, r2, 0x1fc
+# CHECK: encoding: [0x61,0x89,0x04,0x7f]
+
+    e_ldr_nbs r5, r5, 0x3fc
+# CHECK: encoding: [0x81,0x55,0x05,0xff]
+
+    e_ldr_nex r7, r7, 0x100
+# CHECK: encoding: [0xa1,0xdd,0x05,0x40]
+
+    e_ldr_bs r1, r1, 0x28
+# CHECK: encoding: [0xc1,0x45,0x04,0x0a]
+
+    e_ldr_ex r0, r0, 0x0
+# CHECK: encoding: [0xe1,0x01,0x04,0x00]
+
+    e_ldrb_ze r0, r0, 0
+# CHECK: encoding: [0x21,0x00,0x00,0x00]
+
+    e_ldrb_nz r2, r2, 127
+# CHECK: encoding: [0x41,0x88,0x00,0x7f]
+
+    e_ldrb_po r5, r5, 255
+# CHECK: encoding: [0x61,0x54,0x01,0xff]
+
+    e_ldrb_ne r7, r7, 64
+# CHECK: encoding: [0x81,0xdc,0x01,0x40]
+
+    e_ldrb r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x00,0x0a]
+
+    e_ldrb_az r0, r0, 0
+# CHECK: encoding: [0xa1,0x00,0x00,0x00]
+
+    e_ldrb_zb r2, r2, 127
+# CHECK: encoding: [0xc1,0x88,0x00,0x7f]
+
+    e_ldrb_ca r5, r5, 255
+# CHECK: encoding: [0xe1,0x54,0x01,0xff]
+
+    e_ldrb_nc r7, r7, 64
+# CHECK: encoding: [0x01,0xdd,0x01,0x40]
+
+    e_ldrb_cz r1, r1, 10
+# CHECK: encoding: [0x21,0x45,0x00,0x0a]
+
+    e_ldrb_spo r0, r0, 0
+# CHECK: encoding: [0x41,0x01,0x00,0x00]
+
+    e_ldrb_sne r2, r2, 127
+# CHECK: encoding: [0x61,0x89,0x00,0x7f]
+
+    e_ldrb_nbs r5, r5, 255
+# CHECK: encoding: [0x81,0x55,0x01,0xff]
+
+    e_ldrb_nex r7, r7, 64
+# CHECK: encoding: [0xa1,0xdd,0x01,0x40]
+
+    e_ldrb_bs r1, r1, 10
+# CHECK: encoding: [0xc1,0x45,0x00,0x0a]
+
+    e_ldrb_ex r0, r0, 0
+# CHECK: encoding: [0xe1,0x01,0x00,0x00]
+
+    e_ldrbs_ze r0, r0, 0
+# CHECK: encoding: [0x21,0x00,0x20,0x00]
+
+    e_ldrbs_nz r2, r2, 127
+# CHECK: encoding: [0x41,0x88,0x20,0x7f]
+
+    e_ldrbs_po r5, r5, 255
+# CHECK: encoding: [0x61,0x54,0x21,0xff]
+
+    e_ldrbs_ne r7, r7, 64
+# CHECK: encoding: [0x81,0xdc,0x21,0x40]
+
+    e_ldrbs r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x20,0x0a]
+
+    e_ldrbs_az r0, r0, 0
+# CHECK: encoding: [0xa1,0x00,0x20,0x00]
+
+    e_ldrbs_zb r2, r2, 127
+# CHECK: encoding: [0xc1,0x88,0x20,0x7f]
+
+    e_ldrbs_ca r5, r5, 255
+# CHECK: encoding: [0xe1,0x54,0x21,0xff]
+
+    e_ldrbs_nc r7, r7, 64
+# CHECK: encoding: [0x01,0xdd,0x21,0x40]
+
+    e_ldrbs_cz r1, r1, 10
+# CHECK: encoding: [0x21,0x45,0x20,0x0a]
+
+    e_ldrbs_spo r0, r0, 0
+# CHECK: encoding: [0x41,0x01,0x20,0x00]
+
+    e_ldrbs_sne r2, r2, 127
+# CHECK: encoding: [0x61,0x89,0x20,0x7f]
+
+    e_ldrbs_nbs r5, r5, 255
+# CHECK: encoding: [0x81,0x55,0x21,0xff]
+
+    e_ldrbs_nex r7, r7, 64
+# CHECK: encoding: [0xa1,0xdd,0x21,0x40]
+
+    e_ldrbs_bs r1, r1, 10
+# CHECK: encoding: [0xc1,0x45,0x20,0x0a]
+
+    e_ldrbs_ex r0, r0, 0
+# CHECK: encoding: [0xe1,0x01,0x20,0x00]
+
+    e_ldr_pre r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x14,0x00]
+
+    e_ldr_pre r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x14,0x7f]
+
+    e_ldr_pre r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x15,0xff]
+
+    e_ldr_pre r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x15,0x40]
+
+    e_ldr_pre r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x14,0x0a]
+
+    e_ldr_pre r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x14,0x00]
+
+    e_ldr_pre r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x14,0x7f]
+
+    e_ldr_pre r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x15,0xff]
+
+    e_ldr_pre r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x15,0x40]
+
+    e_ldr_pre r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x14,0x0a]
+
+    e_ldr_pre r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x14,0x00]
+
+    e_ldr_pre r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x14,0x7f]
+
+    e_ldr_pre r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x15,0xff]
+
+    e_ldr_pre r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x15,0x40]
+
+    e_ldr_pre r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x14,0x0a]
+
+    e_ldr_pre r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x14,0x00]
+
+    e_ldrb_pre r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x10,0x00]
+
+    e_ldrb_pre r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x10,0x7f]
+
+    e_ldrb_pre r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x11,0xff]
+
+    e_ldrb_pre r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x11,0x40]
+
+    e_ldrb_pre r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x10,0x0a]
+
+    e_ldrb_pre r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x10,0x00]
+
+    e_ldrb_pre r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x10,0x7f]
+
+    e_ldrb_pre r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x11,0xff]
+
+    e_ldrb_pre r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x11,0x40]
+
+    e_ldrb_pre r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x10,0x0a]
+
+    e_ldrb_pre r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x10,0x00]
+
+    e_ldrb_pre r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x10,0x7f]
+
+    e_ldrb_pre r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x11,0xff]
+
+    e_ldrb_pre r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x11,0x40]
+
+    e_ldrb_pre r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x10,0x0a]
+
+    e_ldrb_pre r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x10,0x00]
+
+    e_ldrbs_pre r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x30,0x00]
+
+    e_ldrbs_pre r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x30,0x7f]
+
+    e_ldrbs_pre r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x31,0xff]
+
+    e_ldrbs_pre r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x31,0x40]
+
+    e_ldrbs_pre r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x30,0x0a]
+
+    e_ldrbs_pre r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x30,0x00]
+
+    e_ldrbs_pre r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x30,0x7f]
+
+    e_ldrbs_pre r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x31,0xff]
+
+    e_ldrbs_pre r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x31,0x40]
+
+    e_ldrbs_pre r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x30,0x0a]
+
+    e_ldrbs_pre r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x30,0x00]
+
+    e_ldrbs_pre r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x30,0x7f]
+
+    e_ldrbs_pre r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x31,0xff]
+
+    e_ldrbs_pre r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x31,0x40]
+
+    e_ldrbs_pre r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x30,0x0a]
+
+    e_ldrbs_pre r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x30,0x00]
+
+    e_ldr_pre_ze r0, r0, 0x0
+# CHECK: encoding: [0x21,0x00,0x14,0x00]
+
+    e_ldr_pre_nz r2, r2, 0x1fc
+# CHECK: encoding: [0x41,0x88,0x14,0x7f]
+
+    e_ldr_pre_po r5, r5, 0x3fc
+# CHECK: encoding: [0x61,0x54,0x15,0xff]
+
+    e_ldr_pre_ne r7, r7, 0x100
+# CHECK: encoding: [0x81,0xdc,0x15,0x40]
+
+    e_ldr_pre r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x14,0x0a]
+
+    e_ldr_pre_az r0, r0, 0x0
+# CHECK: encoding: [0xa1,0x00,0x14,0x00]
+
+    e_ldr_pre_zb r2, r2, 0x1fc
+# CHECK: encoding: [0xc1,0x88,0x14,0x7f]
+
+    e_ldr_pre_ca r5, r5, 0x3fc
+# CHECK: encoding: [0xe1,0x54,0x15,0xff]
+
+    e_ldr_pre_nc r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdd,0x15,0x40]
+
+    e_ldr_pre_cz r1, r1, 0x28
+# CHECK: encoding: [0x21,0x45,0x14,0x0a]
+
+    e_ldr_pre_spo r0, r0, 0x0
+# CHECK: encoding: [0x41,0x01,0x14,0x00]
+
+    e_ldr_pre_sne r2, r2, 0x1fc
+# CHECK: encoding: [0x61,0x89,0x14,0x7f]
+
+    e_ldr_pre_nbs r5, r5, 0x3fc
+# CHECK: encoding: [0x81,0x55,0x15,0xff]
+
+    e_ldr_pre_nex r7, r7, 0x100
+# CHECK: encoding: [0xa1,0xdd,0x15,0x40]
+
+    e_ldr_pre_bs r1, r1, 0x28
+# CHECK: encoding: [0xc1,0x45,0x14,0x0a]
+
+    e_ldr_pre_ex r0, r0, 0x0
+# CHECK: encoding: [0xe1,0x01,0x14,0x00]
+
+    e_ldrb_pre_ze r0, r0, 0
+# CHECK: encoding: [0x21,0x00,0x10,0x00]
+
+    e_ldrb_pre_nz r2, r2, 127
+# CHECK: encoding: [0x41,0x88,0x10,0x7f]
+
+    e_ldrb_pre_po r5, r5, 255
+# CHECK: encoding: [0x61,0x54,0x11,0xff]
+
+    e_ldrb_pre_ne r7, r7, 64
+# CHECK: encoding: [0x81,0xdc,0x11,0x40]
+
+    e_ldrb_pre r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x10,0x0a]
+
+    e_ldrb_pre_az r0, r0, 0
+# CHECK: encoding: [0xa1,0x00,0x10,0x00]
+
+    e_ldrb_pre_zb r2, r2, 127
+# CHECK: encoding: [0xc1,0x88,0x10,0x7f]
+
+    e_ldrb_pre_ca r5, r5, 255
+# CHECK: encoding: [0xe1,0x54,0x11,0xff]
+
+    e_ldrb_pre_nc r7, r7, 64
+# CHECK: encoding: [0x01,0xdd,0x11,0x40]
+
+    e_ldrb_pre_cz r1, r1, 10
+# CHECK: encoding: [0x21,0x45,0x10,0x0a]
+
+    e_ldrb_pre_spo r0, r0, 0
+# CHECK: encoding: [0x41,0x01,0x10,0x00]
+
+    e_ldrb_pre_sne r2, r2, 127
+# CHECK: encoding: [0x61,0x89,0x10,0x7f]
+
+    e_ldrb_pre_nbs r5, r5, 255
+# CHECK: encoding: [0x81,0x55,0x11,0xff]
+
+    e_ldrb_pre_nex r7, r7, 64
+# CHECK: encoding: [0xa1,0xdd,0x11,0x40]
+
+    e_ldrb_pre_bs r1, r1, 10
+# CHECK: encoding: [0xc1,0x45,0x10,0x0a]
+
+    e_ldrb_pre_ex r0, r0, 0
+# CHECK: encoding: [0xe1,0x01,0x10,0x00]
+
+    e_ldrbs_pre_ze r0, r0, 0
+# CHECK: encoding: [0x21,0x00,0x30,0x00]
+
+    e_ldrbs_pre_nz r2, r2, 127
+# CHECK: encoding: [0x41,0x88,0x30,0x7f]
+
+    e_ldrbs_pre_po r5, r5, 255
+# CHECK: encoding: [0x61,0x54,0x31,0xff]
+
+    e_ldrbs_pre_ne r7, r7, 64
+# CHECK: encoding: [0x81,0xdc,0x31,0x40]
+
+    e_ldrbs_pre r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x30,0x0a]
+
+    e_ldrbs_pre_az r0, r0, 0
+# CHECK: encoding: [0xa1,0x00,0x30,0x00]
+
+    e_ldrbs_pre_zb r2, r2, 127
+# CHECK: encoding: [0xc1,0x88,0x30,0x7f]
+
+    e_ldrbs_pre_ca r5, r5, 255
+# CHECK: encoding: [0xe1,0x54,0x31,0xff]
+
+    e_ldrbs_pre_nc r7, r7, 64
+# CHECK: encoding: [0x01,0xdd,0x31,0x40]
+
+    e_ldrbs_pre_cz r1, r1, 10
+# CHECK: encoding: [0x21,0x45,0x30,0x0a]
+
+    e_ldrbs_pre_spo r0, r0, 0
+# CHECK: encoding: [0x41,0x01,0x30,0x00]
+
+    e_ldrbs_pre_sne r2, r2, 127
+# CHECK: encoding: [0x61,0x89,0x30,0x7f]
+
+    e_ldrbs_pre_nbs r5, r5, 255
+# CHECK: encoding: [0x81,0x55,0x31,0xff]
+
+    e_ldrbs_pre_nex r7, r7, 64
+# CHECK: encoding: [0xa1,0xdd,0x31,0x40]
+
+    e_ldrbs_pre_bs r1, r1, 10
+# CHECK: encoding: [0xc1,0x45,0x30,0x0a]
+
+    e_ldrbs_pre_ex r0, r0, 0
+# CHECK: encoding: [0xe1,0x01,0x30,0x00]
+
+    e_ldr_post r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x1c,0x00]
+
+    e_ldr_post r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x1c,0x7f]
+
+    e_ldr_post r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x1d,0xff]
+
+    e_ldr_post r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x1d,0x40]
+
+    e_ldr_post r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x1c,0x0a]
+
+    e_ldr_post r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x1c,0x00]
+
+    e_ldr_post r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x1c,0x7f]
+
+    e_ldr_post r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x1d,0xff]
+
+    e_ldr_post r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x1d,0x40]
+
+    e_ldr_post r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x1c,0x0a]
+
+    e_ldr_post r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x1c,0x00]
+
+    e_ldr_post r2, r2, 0x1fc
+# CHECK: encoding: [0x01,0x88,0x1c,0x7f]
+
+    e_ldr_post r5, r5, 0x3fc
+# CHECK: encoding: [0x01,0x54,0x1d,0xff]
+
+    e_ldr_post r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdc,0x1d,0x40]
+
+    e_ldr_post r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x1c,0x0a]
+
+    e_ldr_post r0, r0, 0x0
+# CHECK: encoding: [0x01,0x00,0x1c,0x00]
+
+    e_ldrb_post r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x18,0x00]
+
+    e_ldrb_post r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x18,0x7f]
+
+    e_ldrb_post r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x19,0xff]
+
+    e_ldrb_post r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x19,0x40]
+
+    e_ldrb_post r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x18,0x0a]
+
+    e_ldrb_post r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x18,0x00]
+
+    e_ldrb_post r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x18,0x7f]
+
+    e_ldrb_post r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x19,0xff]
+
+    e_ldrb_post r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x19,0x40]
+
+    e_ldrb_post r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x18,0x0a]
+
+    e_ldrb_post r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x18,0x00]
+
+    e_ldrb_post r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x18,0x7f]
+
+    e_ldrb_post r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x19,0xff]
+
+    e_ldrb_post r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x19,0x40]
+
+    e_ldrb_post r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x18,0x0a]
+
+    e_ldrb_post r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x18,0x00]
+
+    e_ldrbs_post r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x38,0x00]
+
+    e_ldrbs_post r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x38,0x7f]
+
+    e_ldrbs_post r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x39,0xff]
+
+    e_ldrbs_post r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x39,0x40]
+
+    e_ldrbs_post r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x38,0x0a]
+
+    e_ldrbs_post r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x38,0x00]
+
+    e_ldrbs_post r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x38,0x7f]
+
+    e_ldrbs_post r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x39,0xff]
+
+    e_ldrbs_post r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x39,0x40]
+
+    e_ldrbs_post r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x38,0x0a]
+
+    e_ldrbs_post r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x38,0x00]
+
+    e_ldrbs_post r2, r2, 127
+# CHECK: encoding: [0x01,0x88,0x38,0x7f]
+
+    e_ldrbs_post r5, r5, 255
+# CHECK: encoding: [0x01,0x54,0x39,0xff]
+
+    e_ldrbs_post r7, r7, 64
+# CHECK: encoding: [0x01,0xdc,0x39,0x40]
+
+    e_ldrbs_post r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x38,0x0a]
+
+    e_ldrbs_post r0, r0, 0
+# CHECK: encoding: [0x01,0x00,0x38,0x00]
+
+    e_ldr_post_ze r0, r0, 0x0
+# CHECK: encoding: [0x21,0x00,0x1c,0x00]
+
+    e_ldr_post_nz r2, r2, 0x1fc
+# CHECK: encoding: [0x41,0x88,0x1c,0x7f]
+
+    e_ldr_post_po r5, r5, 0x3fc
+# CHECK: encoding: [0x61,0x54,0x1d,0xff]
+
+    e_ldr_post_ne r7, r7, 0x100
+# CHECK: encoding: [0x81,0xdc,0x1d,0x40]
+
+    e_ldr_post r1, r1, 0x28
+# CHECK: encoding: [0x01,0x44,0x1c,0x0a]
+
+    e_ldr_post_az r0, r0, 0x0
+# CHECK: encoding: [0xa1,0x00,0x1c,0x00]
+
+    e_ldr_post_zb r2, r2, 0x1fc
+# CHECK: encoding: [0xc1,0x88,0x1c,0x7f]
+
+    e_ldr_post_ca r5, r5, 0x3fc
+# CHECK: encoding: [0xe1,0x54,0x1d,0xff]
+
+    e_ldr_post_nc r7, r7, 0x100
+# CHECK: encoding: [0x01,0xdd,0x1d,0x40]
+
+    e_ldr_post_cz r1, r1, 0x28
+# CHECK: encoding: [0x21,0x45,0x1c,0x0a]
+
+    e_ldr_post_spo r0, r0, 0x0
+# CHECK: encoding: [0x41,0x01,0x1c,0x00]
+
+    e_ldr_post_sne r2, r2, 0x1fc
+# CHECK: encoding: [0x61,0x89,0x1c,0x7f]
+
+    e_ldr_post_nbs r5, r5, 0x3fc
+# CHECK: encoding: [0x81,0x55,0x1d,0xff]
+
+    e_ldr_post_nex r7, r7, 0x100
+# CHECK: encoding: [0xa1,0xdd,0x1d,0x40]
+
+    e_ldr_post_bs r1, r1, 0x28
+# CHECK: encoding: [0xc1,0x45,0x1c,0x0a]
+
+    e_ldr_post_ex r0, r0, 0x0
+# CHECK: encoding: [0xe1,0x01,0x1c,0x00]
+
+    e_ldrb_post_ze r0, r0, 0
+# CHECK: encoding: [0x21,0x00,0x18,0x00]
+
+    e_ldrb_post_nz r2, r2, 127
+# CHECK: encoding: [0x41,0x88,0x18,0x7f]
+
+    e_ldrb_post_po r5, r5, 255
+# CHECK: encoding: [0x61,0x54,0x19,0xff]
+
+    e_ldrb_post_ne r7, r7, 64
+# CHECK: encoding: [0x81,0xdc,0x19,0x40]
+
+    e_ldrb_post r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x18,0x0a]
+
+    e_ldrb_post_az r0, r0, 0
+# CHECK: encoding: [0xa1,0x00,0x18,0x00]
+
+    e_ldrb_post_zb r2, r2, 127
+# CHECK: encoding: [0xc1,0x88,0x18,0x7f]
+
+    e_ldrb_post_ca r5, r5, 255
+# CHECK: encoding: [0xe1,0x54,0x19,0xff]
+
+    e_ldrb_post_nc r7, r7, 64
+# CHECK: encoding: [0x01,0xdd,0x19,0x40]
+
+    e_ldrb_post_cz r1, r1, 10
+# CHECK: encoding: [0x21,0x45,0x18,0x0a]
+
+    e_ldrb_post_spo r0, r0, 0
+# CHECK: encoding: [0x41,0x01,0x18,0x00]
+
+    e_ldrb_post_sne r2, r2, 127
+# CHECK: encoding: [0x61,0x89,0x18,0x7f]
+
+    e_ldrb_post_nbs r5, r5, 255
+# CHECK: encoding: [0x81,0x55,0x19,0xff]
+
+    e_ldrb_post_nex r7, r7, 64
+# CHECK: encoding: [0xa1,0xdd,0x19,0x40]
+
+    e_ldrb_post_bs r1, r1, 10
+# CHECK: encoding: [0xc1,0x45,0x18,0x0a]
+
+    e_ldrb_post_ex r0, r0, 0
+# CHECK: encoding: [0xe1,0x01,0x18,0x00]
+
+    e_ldrbs_post_ze r0, r0, 0
+# CHECK: encoding: [0x21,0x00,0x38,0x00]
+
+    e_ldrbs_post_nz r2, r2, 127
+# CHECK: encoding: [0x41,0x88,0x38,0x7f]
+
+    e_ldrbs_post_po r5, r5, 255
+# CHECK: encoding: [0x61,0x54,0x39,0xff]
+
+    e_ldrbs_post_ne r7, r7, 64
+# CHECK: encoding: [0x81,0xdc,0x39,0x40]
+
+    e_ldrbs_post r1, r1, 10
+# CHECK: encoding: [0x01,0x44,0x38,0x0a]
+
+    e_ldrbs_post_az r0, r0, 0
+# CHECK: encoding: [0xa1,0x00,0x38,0x00]
+
+    e_ldrbs_post_zb r2, r2, 127
+# CHECK: encoding: [0xc1,0x88,0x38,0x7f]
+
+    e_ldrbs_post_ca r5, r5, 255
+# CHECK: encoding: [0xe1,0x54,0x39,0xff]
+
+    e_ldrbs_post_nc r7, r7, 64
+# CHECK: encoding: [0x01,0xdd,0x39,0x40]
+
+    e_ldrbs_post_cz r1, r1, 10
+# CHECK: encoding: [0x21,0x45,0x38,0x0a]
+
+    e_ldrbs_post_spo r0, r0, 0
+# CHECK: encoding: [0x41,0x01,0x38,0x00]
+
+    e_ldrbs_post_sne r2, r2, 127
+# CHECK: encoding: [0x61,0x89,0x38,0x7f]
+
+    e_ldrbs_post_nbs r5, r5, 255
+# CHECK: encoding: [0x81,0x55,0x39,0xff]
+
+    e_ldrbs_post_nex r7, r7, 64
+# CHECK: encoding: [0xa1,0xdd,0x39,0x40]
+
+    e_ldrbs_post_bs r1, r1, 10
+# CHECK: encoding: [0xc1,0x45,0x38,0x0a]
+
+    e_ldrbs_post_ex r0, r0, 0
+# CHECK: encoding: [0xe1,0x01,0x38,0x00]
+
+    e_str r0, r0, 0x0
+# CHECK: encoding: [0x02,0x00,0x04,0x00]
+
+    e_str r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x80,0x24,0x7f]
+
+    e_str r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x40,0x55,0xff]
+
+    e_str r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc0,0x75,0x40]
+
+    e_str r1, r1, 0x28
+# CHECK: encoding: [0x02,0x40,0x14,0x0a]
+
+    e_str r0, r0, 0x0
+# CHECK: encoding: [0x02,0x00,0x04,0x00]
+
+    e_str r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x80,0x24,0x7f]
+
+    e_str r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x40,0x55,0xff]
+
+    e_str r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc0,0x75,0x40]
+
+    e_str r1, r1, 0x28
+# CHECK: encoding: [0x02,0x40,0x14,0x0a]
+
+    e_str r0, r0, 0x0
+# CHECK: encoding: [0x02,0x00,0x04,0x00]
+
+    e_str r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x80,0x24,0x7f]
+
+    e_str r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x40,0x55,0xff]
+
+    e_str r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc0,0x75,0x40]
+
+    e_str r1, r1, 0x28
+# CHECK: encoding: [0x02,0x40,0x14,0x0a]
+
+    e_str r0, r0, 0x0
+# CHECK: encoding: [0x02,0x00,0x04,0x00]
+
+    e_strb r0, r0, 0
+# CHECK: encoding: [0x02,0x00,0x00,0x00]
+
+    e_strb r2, r2, 127
+# CHECK: encoding: [0x02,0x80,0x20,0x7f]
+
+    e_strb r5, r5, 255
+# CHECK: encoding: [0x02,0x40,0x51,0xff]
+
+    e_strb r7, r7, 64
+# CHECK: encoding: [0x02,0xc0,0x71,0x40]
+
+    e_strb r1, r1, 10
+# CHECK: encoding: [0x02,0x40,0x10,0x0a]
+
+    e_strb r0, r0, 0
+# CHECK: encoding: [0x02,0x00,0x00,0x00]
+
+    e_strb r2, r2, 127
+# CHECK: encoding: [0x02,0x80,0x20,0x7f]
+
+    e_strb r5, r5, 255
+# CHECK: encoding: [0x02,0x40,0x51,0xff]
+
+    e_strb r7, r7, 64
+# CHECK: encoding: [0x02,0xc0,0x71,0x40]
+
+    e_strb r1, r1, 10
+# CHECK: encoding: [0x02,0x40,0x10,0x0a]
+
+    e_strb r0, r0, 0
+# CHECK: encoding: [0x02,0x00,0x00,0x00]
+
+    e_strb r2, r2, 127
+# CHECK: encoding: [0x02,0x80,0x20,0x7f]
+
+    e_strb r5, r5, 255
+# CHECK: encoding: [0x02,0x40,0x51,0xff]
+
+    e_strb r7, r7, 64
+# CHECK: encoding: [0x02,0xc0,0x71,0x40]
+
+    e_strb r1, r1, 10
+# CHECK: encoding: [0x02,0x40,0x10,0x0a]
+
+    e_strb r0, r0, 0
+# CHECK: encoding: [0x02,0x00,0x00,0x00]
+
+    e_str_ze r0, r0, 0x0
+# CHECK: encoding: [0x22,0x00,0x04,0x00]
+
+    e_str_nz r2, r2, 0x1fc
+# CHECK: encoding: [0x42,0x80,0x24,0x7f]
+
+    e_str_po r5, r5, 0x3fc
+# CHECK: encoding: [0x62,0x40,0x55,0xff]
+
+    e_str_ne r7, r7, 0x100
+# CHECK: encoding: [0x82,0xc0,0x75,0x40]
+
+    e_str r1, r1, 0x28
+# CHECK: encoding: [0x02,0x40,0x14,0x0a]
+
+    e_str_az r0, r0, 0x0
+# CHECK: encoding: [0xa2,0x00,0x04,0x00]
+
+    e_str_zb r2, r2, 0x1fc
+# CHECK: encoding: [0xc2,0x80,0x24,0x7f]
+
+    e_str_ca r5, r5, 0x3fc
+# CHECK: encoding: [0xe2,0x40,0x55,0xff]
+
+    e_str_nc r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc1,0x75,0x40]
+
+    e_str_cz r1, r1, 0x28
+# CHECK: encoding: [0x22,0x41,0x14,0x0a]
+
+    e_str_spo r0, r0, 0x0
+# CHECK: encoding: [0x42,0x01,0x04,0x00]
+
+    e_str_sne r2, r2, 0x1fc
+# CHECK: encoding: [0x62,0x81,0x24,0x7f]
+
+    e_str_nbs r5, r5, 0x3fc
+# CHECK: encoding: [0x82,0x41,0x55,0xff]
+
+    e_str_nex r7, r7, 0x100
+# CHECK: encoding: [0xa2,0xc1,0x75,0x40]
+
+    e_str_bs r1, r1, 0x28
+# CHECK: encoding: [0xc2,0x41,0x14,0x0a]
+
+    e_str_ex r0, r0, 0x0
+# CHECK: encoding: [0xe2,0x01,0x04,0x00]
+
+    e_strb_ze r0, r0, 0
+# CHECK: encoding: [0x22,0x00,0x00,0x00]
+
+    e_strb_nz r2, r2, 127
+# CHECK: encoding: [0x42,0x80,0x20,0x7f]
+
+    e_strb_po r5, r5, 255
+# CHECK: encoding: [0x62,0x40,0x51,0xff]
+
+    e_strb_ne r7, r7, 64
+# CHECK: encoding: [0x82,0xc0,0x71,0x40]
+
+    e_strb r1, r1, 10
+# CHECK: encoding: [0x02,0x40,0x10,0x0a]
+
+    e_strb_az r0, r0, 0
+# CHECK: encoding: [0xa2,0x00,0x00,0x00]
+
+    e_strb_zb r2, r2, 127
+# CHECK: encoding: [0xc2,0x80,0x20,0x7f]
+
+    e_strb_ca r5, r5, 255
+# CHECK: encoding: [0xe2,0x40,0x51,0xff]
+
+    e_strb_nc r7, r7, 64
+# CHECK: encoding: [0x02,0xc1,0x71,0x40]
+
+    e_strb_cz r1, r1, 10
+# CHECK: encoding: [0x22,0x41,0x10,0x0a]
+
+    e_strb_spo r0, r0, 0
+# CHECK: encoding: [0x42,0x01,0x00,0x00]
+
+    e_strb_sne r2, r2, 127
+# CHECK: encoding: [0x62,0x81,0x20,0x7f]
+
+    e_strb_nbs r5, r5, 255
+# CHECK: encoding: [0x82,0x41,0x51,0xff]
+
+    e_strb_nex r7, r7, 64
+# CHECK: encoding: [0xa2,0xc1,0x71,0x40]
+
+    e_strb_bs r1, r1, 10
+# CHECK: encoding: [0xc2,0x41,0x10,0x0a]
+
+    e_strb_ex r0, r0, 0
+# CHECK: encoding: [0xe2,0x01,0x00,0x00]
+
+    e_str_pre r0, r0, 0x0
+# CHECK: encoding: [0x02,0x04,0x04,0x00]
+
+    e_str_pre r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x84,0x24,0x7f]
+
+    e_str_pre r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x44,0x55,0xff]
+
+    e_str_pre r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc4,0x75,0x40]
+
+    e_str_pre r1, r1, 0x28
+# CHECK: encoding: [0x02,0x44,0x14,0x0a]
+
+    e_str_pre r0, r0, 0x0
+# CHECK: encoding: [0x02,0x04,0x04,0x00]
+
+    e_str_pre r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x84,0x24,0x7f]
+
+    e_str_pre r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x44,0x55,0xff]
+
+    e_str_pre r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc4,0x75,0x40]
+
+    e_str_pre r1, r1, 0x28
+# CHECK: encoding: [0x02,0x44,0x14,0x0a]
+
+    e_str_pre r0, r0, 0x0
+# CHECK: encoding: [0x02,0x04,0x04,0x00]
+
+    e_str_pre r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x84,0x24,0x7f]
+
+    e_str_pre r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x44,0x55,0xff]
+
+    e_str_pre r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc4,0x75,0x40]
+
+    e_str_pre r1, r1, 0x28
+# CHECK: encoding: [0x02,0x44,0x14,0x0a]
+
+    e_str_pre r0, r0, 0x0
+# CHECK: encoding: [0x02,0x04,0x04,0x00]
+
+    e_strb_pre r0, r0, 0
+# CHECK: encoding: [0x02,0x04,0x00,0x00]
+
+    e_strb_pre r2, r2, 127
+# CHECK: encoding: [0x02,0x84,0x20,0x7f]
+
+    e_strb_pre r5, r5, 255
+# CHECK: encoding: [0x02,0x44,0x51,0xff]
+
+    e_strb_pre r7, r7, 64
+# CHECK: encoding: [0x02,0xc4,0x71,0x40]
+
+    e_strb_pre r1, r1, 10
+# CHECK: encoding: [0x02,0x44,0x10,0x0a]
+
+    e_strb_pre r0, r0, 0
+# CHECK: encoding: [0x02,0x04,0x00,0x00]
+
+    e_strb_pre r2, r2, 127
+# CHECK: encoding: [0x02,0x84,0x20,0x7f]
+
+    e_strb_pre r5, r5, 255
+# CHECK: encoding: [0x02,0x44,0x51,0xff]
+
+    e_strb_pre r7, r7, 64
+# CHECK: encoding: [0x02,0xc4,0x71,0x40]
+
+    e_strb_pre r1, r1, 10
+# CHECK: encoding: [0x02,0x44,0x10,0x0a]
+
+    e_strb_pre r0, r0, 0
+# CHECK: encoding: [0x02,0x04,0x00,0x00]
+
+    e_strb_pre r2, r2, 127
+# CHECK: encoding: [0x02,0x84,0x20,0x7f]
+
+    e_strb_pre r5, r5, 255
+# CHECK: encoding: [0x02,0x44,0x51,0xff]
+
+    e_strb_pre r7, r7, 64
+# CHECK: encoding: [0x02,0xc4,0x71,0x40]
+
+    e_strb_pre r1, r1, 10
+# CHECK: encoding: [0x02,0x44,0x10,0x0a]
+
+    e_strb_pre r0, r0, 0
+# CHECK: encoding: [0x02,0x04,0x00,0x00]
+
+    e_str_pre_ze r0, r0, 0x0
+# CHECK: encoding: [0x22,0x04,0x04,0x00]
+
+    e_str_pre_nz r2, r2, 0x1fc
+# CHECK: encoding: [0x42,0x84,0x24,0x7f]
+
+    e_str_pre_po r5, r5, 0x3fc
+# CHECK: encoding: [0x62,0x44,0x55,0xff]
+
+    e_str_pre_ne r7, r7, 0x100
+# CHECK: encoding: [0x82,0xc4,0x75,0x40]
+
+    e_str_pre r1, r1, 0x28
+# CHECK: encoding: [0x02,0x44,0x14,0x0a]
+
+    e_str_pre_az r0, r0, 0x0
+# CHECK: encoding: [0xa2,0x04,0x04,0x00]
+
+    e_str_pre_zb r2, r2, 0x1fc
+# CHECK: encoding: [0xc2,0x84,0x24,0x7f]
+
+    e_str_pre_ca r5, r5, 0x3fc
+# CHECK: encoding: [0xe2,0x44,0x55,0xff]
+
+    e_str_pre_nc r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc5,0x75,0x40]
+
+    e_str_pre_cz r1, r1, 0x28
+# CHECK: encoding: [0x22,0x45,0x14,0x0a]
+
+    e_str_pre_spo r0, r0, 0x0
+# CHECK: encoding: [0x42,0x05,0x04,0x00]
+
+    e_str_pre_sne r2, r2, 0x1fc
+# CHECK: encoding: [0x62,0x85,0x24,0x7f]
+
+    e_str_pre_nbs r5, r5, 0x3fc
+# CHECK: encoding: [0x82,0x45,0x55,0xff]
+
+    e_str_pre_nex r7, r7, 0x100
+# CHECK: encoding: [0xa2,0xc5,0x75,0x40]
+
+    e_str_pre_bs r1, r1, 0x28
+# CHECK: encoding: [0xc2,0x45,0x14,0x0a]
+
+    e_str_pre_ex r0, r0, 0x0
+# CHECK: encoding: [0xe2,0x05,0x04,0x00]
+
+    e_strb_pre_ze r0, r0, 0
+# CHECK: encoding: [0x22,0x04,0x00,0x00]
+
+    e_strb_pre_nz r2, r2, 127
+# CHECK: encoding: [0x42,0x84,0x20,0x7f]
+
+    e_strb_pre_po r5, r5, 255
+# CHECK: encoding: [0x62,0x44,0x51,0xff]
+
+    e_strb_pre_ne r7, r7, 64
+# CHECK: encoding: [0x82,0xc4,0x71,0x40]
+
+    e_strb_pre r1, r1, 10
+# CHECK: encoding: [0x02,0x44,0x10,0x0a]
+
+    e_strb_pre_az r0, r0, 0
+# CHECK: encoding: [0xa2,0x04,0x00,0x00]
+
+    e_strb_pre_zb r2, r2, 127
+# CHECK: encoding: [0xc2,0x84,0x20,0x7f]
+
+    e_strb_pre_ca r5, r5, 255
+# CHECK: encoding: [0xe2,0x44,0x51,0xff]
+
+    e_strb_pre_nc r7, r7, 64
+# CHECK: encoding: [0x02,0xc5,0x71,0x40]
+
+    e_strb_pre_cz r1, r1, 10
+# CHECK: encoding: [0x22,0x45,0x10,0x0a]
+
+    e_strb_pre_spo r0, r0, 0
+# CHECK: encoding: [0x42,0x05,0x00,0x00]
+
+    e_strb_pre_sne r2, r2, 127
+# CHECK: encoding: [0x62,0x85,0x20,0x7f]
+
+    e_strb_pre_nbs r5, r5, 255
+# CHECK: encoding: [0x82,0x45,0x51,0xff]
+
+    e_strb_pre_nex r7, r7, 64
+# CHECK: encoding: [0xa2,0xc5,0x71,0x40]
+
+    e_strb_pre_bs r1, r1, 10
+# CHECK: encoding: [0xc2,0x45,0x10,0x0a]
+
+    e_strb_pre_ex r0, r0, 0
+# CHECK: encoding: [0xe2,0x05,0x00,0x00]
+
+    e_str_post r0, r0, 0x0
+# CHECK: encoding: [0x02,0x04,0x0c,0x00]
+
+    e_str_post r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x84,0x2c,0x7f]
+
+    e_str_post r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x44,0x5d,0xff]
+
+    e_str_post r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc4,0x7d,0x40]
+
+    e_str_post r1, r1, 0x28
+# CHECK: encoding: [0x02,0x44,0x1c,0x0a]
+
+    e_str_post r0, r0, 0x0
+# CHECK: encoding: [0x02,0x04,0x0c,0x00]
+
+    e_str_post r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x84,0x2c,0x7f]
+
+    e_str_post r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x44,0x5d,0xff]
+
+    e_str_post r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc4,0x7d,0x40]
+
+    e_str_post r1, r1, 0x28
+# CHECK: encoding: [0x02,0x44,0x1c,0x0a]
+
+    e_str_post r0, r0, 0x0
+# CHECK: encoding: [0x02,0x04,0x0c,0x00]
+
+    e_str_post r2, r2, 0x1fc
+# CHECK: encoding: [0x02,0x84,0x2c,0x7f]
+
+    e_str_post r5, r5, 0x3fc
+# CHECK: encoding: [0x02,0x44,0x5d,0xff]
+
+    e_str_post r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc4,0x7d,0x40]
+
+    e_str_post r1, r1, 0x28
+# CHECK: encoding: [0x02,0x44,0x1c,0x0a]
+
+    e_str_post r0, r0, 0x0
+# CHECK: encoding: [0x02,0x04,0x0c,0x00]
+
+    e_strb_post r0, r0, 0
+# CHECK: encoding: [0x02,0x04,0x08,0x00]
+
+    e_strb_post r2, r2, 127
+# CHECK: encoding: [0x02,0x84,0x28,0x7f]
+
+    e_strb_post r5, r5, 255
+# CHECK: encoding: [0x02,0x44,0x59,0xff]
+
+    e_strb_post r7, r7, 64
+# CHECK: encoding: [0x02,0xc4,0x79,0x40]
+
+    e_strb_post r1, r1, 10
+# CHECK: encoding: [0x02,0x44,0x18,0x0a]
+
+    e_strb_post r0, r0, 0
+# CHECK: encoding: [0x02,0x04,0x08,0x00]
+
+    e_strb_post r2, r2, 127
+# CHECK: encoding: [0x02,0x84,0x28,0x7f]
+
+    e_strb_post r5, r5, 255
+# CHECK: encoding: [0x02,0x44,0x59,0xff]
+
+    e_strb_post r7, r7, 64
+# CHECK: encoding: [0x02,0xc4,0x79,0x40]
+
+    e_strb_post r1, r1, 10
+# CHECK: encoding: [0x02,0x44,0x18,0x0a]
+
+    e_strb_post r0, r0, 0
+# CHECK: encoding: [0x02,0x04,0x08,0x00]
+
+    e_strb_post r2, r2, 127
+# CHECK: encoding: [0x02,0x84,0x28,0x7f]
+
+    e_strb_post r5, r5, 255
+# CHECK: encoding: [0x02,0x44,0x59,0xff]
+
+    e_strb_post r7, r7, 64
+# CHECK: encoding: [0x02,0xc4,0x79,0x40]
+
+    e_strb_post r1, r1, 10
+# CHECK: encoding: [0x02,0x44,0x18,0x0a]
+
+    e_strb_post r0, r0, 0
+# CHECK: encoding: [0x02,0x04,0x08,0x00]
+
+    e_str_post_ze r0, r0, 0x0
+# CHECK: encoding: [0x22,0x04,0x0c,0x00]
+
+    e_str_post_nz r2, r2, 0x1fc
+# CHECK: encoding: [0x42,0x84,0x2c,0x7f]
+
+    e_str_post_po r5, r5, 0x3fc
+# CHECK: encoding: [0x62,0x44,0x5d,0xff]
+
+    e_str_post_ne r7, r7, 0x100
+# CHECK: encoding: [0x82,0xc4,0x7d,0x40]
+
+    e_str_post r1, r1, 0x28
+# CHECK: encoding: [0x02,0x44,0x1c,0x0a]
+
+    e_str_post_az r0, r0, 0x0
+# CHECK: encoding: [0xa2,0x04,0x0c,0x00]
+
+    e_str_post_zb r2, r2, 0x1fc
+# CHECK: encoding: [0xc2,0x84,0x2c,0x7f]
+
+    e_str_post_ca r5, r5, 0x3fc
+# CHECK: encoding: [0xe2,0x44,0x5d,0xff]
+
+    e_str_post_nc r7, r7, 0x100
+# CHECK: encoding: [0x02,0xc5,0x7d,0x40]
+
+    e_str_post_cz r1, r1, 0x28
+# CHECK: encoding: [0x22,0x45,0x1c,0x0a]
+
+    e_str_post_spo r0, r0, 0x0
+# CHECK: encoding: [0x42,0x05,0x0c,0x00]
+
+    e_str_post_sne r2, r2, 0x1fc
+# CHECK: encoding: [0x62,0x85,0x2c,0x7f]
+
+    e_str_post_nbs r5, r5, 0x3fc
+# CHECK: encoding: [0x82,0x45,0x5d,0xff]
+
+    e_str_post_nex r7, r7, 0x100
+# CHECK: encoding: [0xa2,0xc5,0x7d,0x40]
+
+    e_str_post_bs r1, r1, 0x28
+# CHECK: encoding: [0xc2,0x45,0x1c,0x0a]
+
+    e_str_post_ex r0, r0, 0x0
+# CHECK: encoding: [0xe2,0x05,0x0c,0x00]
+
+    e_strb_post_ze r0, r0, 0
+# CHECK: encoding: [0x22,0x04,0x08,0x00]
+
+    e_strb_post_nz r2, r2, 127
+# CHECK: encoding: [0x42,0x84,0x28,0x7f]
+
+    e_strb_post_po r5, r5, 255
+# CHECK: encoding: [0x62,0x44,0x59,0xff]
+
+    e_strb_post_ne r7, r7, 64
+# CHECK: encoding: [0x82,0xc4,0x79,0x40]
+
+    e_strb_post r1, r1, 10
+# CHECK: encoding: [0x02,0x44,0x18,0x0a]
+
+    e_strb_post_az r0, r0, 0
+# CHECK: encoding: [0xa2,0x04,0x08,0x00]
+
+    e_strb_post_zb r2, r2, 127
+# CHECK: encoding: [0xc2,0x84,0x28,0x7f]
+
+    e_strb_post_ca r5, r5, 255
+# CHECK: encoding: [0xe2,0x44,0x59,0xff]
+
+    e_strb_post_nc r7, r7, 64
+# CHECK: encoding: [0x02,0xc5,0x79,0x40]
+
+    e_strb_post_cz r1, r1, 10
+# CHECK: encoding: [0x22,0x45,0x18,0x0a]
+
+    e_strb_post_spo r0, r0, 0
+# CHECK: encoding: [0x42,0x05,0x08,0x00]
+
+    e_strb_post_sne r2, r2, 127
+# CHECK: encoding: [0x62,0x85,0x28,0x7f]
+
+    e_strb_post_nbs r5, r5, 255
+# CHECK: encoding: [0x82,0x45,0x59,0xff]
+
+    e_strb_post_nex r7, r7, 64
+# CHECK: encoding: [0xa2,0xc5,0x79,0x40]
+
+    e_strb_post_bs r1, r1, 10
+# CHECK: encoding: [0xc2,0x45,0x18,0x0a]
+
+    e_strb_post_ex r0, r0, 0
+# CHECK: encoding: [0xe2,0x05,0x08,0x00]
+
+    e_push r0
+# CHECK: encoding: [0x02,0x04,0x0f,0x01]
+
+    e_push r2
+# CHECK: encoding: [0x02,0x04,0x2f,0x01]
+
+    e_push r5
+# CHECK: encoding: [0x02,0x04,0x5f,0x01]
+
+    e_push r7
+# CHECK: encoding: [0x02,0x04,0x7f,0x01]
+
+    e_push r1
+# CHECK: encoding: [0x02,0x04,0x1f,0x01]
+
+    e_push r0
+# CHECK: encoding: [0x02,0x04,0x0f,0x01]
+
+    e_push r2
+# CHECK: encoding: [0x02,0x04,0x2f,0x01]
+
+    e_push r5
+# CHECK: encoding: [0x02,0x04,0x5f,0x01]
+
+    e_push r7
+# CHECK: encoding: [0x02,0x04,0x7f,0x01]
+
+    e_push r1
+# CHECK: encoding: [0x02,0x04,0x1f,0x01]
+
+    e_push r0
+# CHECK: encoding: [0x02,0x04,0x0f,0x01]
+
+    e_push r2
+# CHECK: encoding: [0x02,0x04,0x2f,0x01]
+
+    e_push r5
+# CHECK: encoding: [0x02,0x04,0x5f,0x01]
+
+    e_push r7
+# CHECK: encoding: [0x02,0x04,0x7f,0x01]
+
+    e_push r1
+# CHECK: encoding: [0x02,0x04,0x1f,0x01]
+
+    e_push r0
+# CHECK: encoding: [0x02,0x04,0x0f,0x01]
+
+    e_pop r0
+# CHECK: encoding: [0x01,0x00,0x17,0xff]
+
+    e_pop r2
+# CHECK: encoding: [0x01,0x08,0x17,0xff]
+
+    e_pop r5
+# CHECK: encoding: [0x01,0x14,0x17,0xff]
+
+    e_pop r7
+# CHECK: encoding: [0x01,0x1c,0x17,0xff]
+
+    e_pop r1
+# CHECK: encoding: [0x01,0x04,0x17,0xff]
+
+    e_pop r0
+# CHECK: encoding: [0x01,0x00,0x17,0xff]
+
+    e_pop r2
+# CHECK: encoding: [0x01,0x08,0x17,0xff]
+
+    e_pop r5
+# CHECK: encoding: [0x01,0x14,0x17,0xff]
+
+    e_pop r7
+# CHECK: encoding: [0x01,0x1c,0x17,0xff]
+
+    e_pop r1
+# CHECK: encoding: [0x01,0x04,0x17,0xff]
+
+    e_pop r0
+# CHECK: encoding: [0x01,0x00,0x17,0xff]
+
+    e_pop r2
+# CHECK: encoding: [0x01,0x08,0x17,0xff]
+
+    e_pop r5
+# CHECK: encoding: [0x01,0x14,0x17,0xff]
+
+    e_pop r7
+# CHECK: encoding: [0x01,0x1c,0x17,0xff]
+
+    e_pop r1
+# CHECK: encoding: [0x01,0x04,0x17,0xff]
+
+    e_pop r0
+# CHECK: encoding: [0x01,0x00,0x17,0xff]
+
+    e_pushb r0
+# CHECK: encoding: [0x02,0x04,0x0b,0x01]
+
+    e_pushb r2
+# CHECK: encoding: [0x02,0x04,0x2b,0x01]
+
+    e_pushb r5
+# CHECK: encoding: [0x02,0x04,0x5b,0x01]
+
+    e_pushb r7
+# CHECK: encoding: [0x02,0x04,0x7b,0x01]
+
+    e_pushb r1
+# CHECK: encoding: [0x02,0x04,0x1b,0x01]
+
+    e_pushb r0
+# CHECK: encoding: [0x02,0x04,0x0b,0x01]
+
+    e_pushb r2
+# CHECK: encoding: [0x02,0x04,0x2b,0x01]
+
+    e_pushb r5
+# CHECK: encoding: [0x02,0x04,0x5b,0x01]
+
+    e_pushb r7
+# CHECK: encoding: [0x02,0x04,0x7b,0x01]
+
+    e_pushb r1
+# CHECK: encoding: [0x02,0x04,0x1b,0x01]
+
+    e_pushb r0
+# CHECK: encoding: [0x02,0x04,0x0b,0x01]
+
+    e_pushb r2
+# CHECK: encoding: [0x02,0x04,0x2b,0x01]
+
+    e_pushb r5
+# CHECK: encoding: [0x02,0x04,0x5b,0x01]
+
+    e_pushb r7
+# CHECK: encoding: [0x02,0x04,0x7b,0x01]
+
+    e_pushb r1
+# CHECK: encoding: [0x02,0x04,0x1b,0x01]
+
+    e_pushb r0
+# CHECK: encoding: [0x02,0x04,0x0b,0x01]
+
+    e_popb r0
+# CHECK: encoding: [0x01,0x00,0x13,0xff]
+
+    e_popb r2
+# CHECK: encoding: [0x01,0x08,0x13,0xff]
+
+    e_popb r5
+# CHECK: encoding: [0x01,0x14,0x13,0xff]
+
+    e_popb r7
+# CHECK: encoding: [0x01,0x1c,0x13,0xff]
+
+    e_popb r1
+# CHECK: encoding: [0x01,0x04,0x13,0xff]
+
+    e_popb r0
+# CHECK: encoding: [0x01,0x00,0x13,0xff]
+
+    e_popb r2
+# CHECK: encoding: [0x01,0x08,0x13,0xff]
+
+    e_popb r5
+# CHECK: encoding: [0x01,0x14,0x13,0xff]
+
+    e_popb r7
+# CHECK: encoding: [0x01,0x1c,0x13,0xff]
+
+    e_popb r1
+# CHECK: encoding: [0x01,0x04,0x13,0xff]
+
+    e_popb r0
+# CHECK: encoding: [0x01,0x00,0x13,0xff]
+
+    e_popb r2
+# CHECK: encoding: [0x01,0x08,0x13,0xff]
+
+    e_popb r5
+# CHECK: encoding: [0x01,0x14,0x13,0xff]
+
+    e_popb r7
+# CHECK: encoding: [0x01,0x1c,0x13,0xff]
+
+    e_popb r1
+# CHECK: encoding: [0x01,0x04,0x13,0xff]
+
+    e_popb r0
+# CHECK: encoding: [0x01,0x00,0x13,0xff]
+
+    e_popbs r0
+# CHECK: encoding: [0x01,0x00,0x33,0xff]
+
+    e_popbs r2
+# CHECK: encoding: [0x01,0x08,0x33,0xff]
+
+    e_popbs r5
+# CHECK: encoding: [0x01,0x14,0x33,0xff]
+
+    e_popbs r7
+# CHECK: encoding: [0x01,0x1c,0x33,0xff]
+
+    e_popbs r1
+# CHECK: encoding: [0x01,0x04,0x33,0xff]
+
+    e_popbs r0
+# CHECK: encoding: [0x01,0x00,0x33,0xff]
+
+    e_popbs r2
+# CHECK: encoding: [0x01,0x08,0x33,0xff]
+
+    e_popbs r5
+# CHECK: encoding: [0x01,0x14,0x33,0xff]
+
+    e_popbs r7
+# CHECK: encoding: [0x01,0x1c,0x33,0xff]
+
+    e_popbs r1
+# CHECK: encoding: [0x01,0x04,0x33,0xff]
+
+    e_popbs r0
+# CHECK: encoding: [0x01,0x00,0x33,0xff]
+
+    e_popbs r2
+# CHECK: encoding: [0x01,0x08,0x33,0xff]
+
+    e_popbs r5
+# CHECK: encoding: [0x01,0x14,0x33,0xff]
+
+    e_popbs r7
+# CHECK: encoding: [0x01,0x1c,0x33,0xff]
+
+    e_popbs r1
+# CHECK: encoding: [0x01,0x04,0x33,0xff]
+
+    e_popbs r0
+# CHECK: encoding: [0x01,0x00,0x33,0xff]
+
+    e_push_ze r0
+# CHECK: encoding: [0x22,0x04,0x0f,0x01]
+
+    e_push_nz r2
+# CHECK: encoding: [0x42,0x04,0x2f,0x01]
+
+    e_push_po r5
+# CHECK: encoding: [0x62,0x04,0x5f,0x01]
+
+    e_push_ne r7
+# CHECK: encoding: [0x82,0x04,0x7f,0x01]
+
+    e_push r1
+# CHECK: encoding: [0x02,0x04,0x1f,0x01]
+
+    e_push_az r0
+# CHECK: encoding: [0xa2,0x04,0x0f,0x01]
+
+    e_push_zb r2
+# CHECK: encoding: [0xc2,0x04,0x2f,0x01]
+
+    e_push_ca r5
+# CHECK: encoding: [0xe2,0x04,0x5f,0x01]
+
+    e_push_nc r7
+# CHECK: encoding: [0x02,0x05,0x7f,0x01]
+
+    e_push_cz r1
+# CHECK: encoding: [0x22,0x05,0x1f,0x01]
+
+    e_push_spo r0
+# CHECK: encoding: [0x42,0x05,0x0f,0x01]
+
+    e_push_sne r2
+# CHECK: encoding: [0x62,0x05,0x2f,0x01]
+
+    e_push_nbs r5
+# CHECK: encoding: [0x82,0x05,0x5f,0x01]
+
+    e_push_nex r7
+# CHECK: encoding: [0xa2,0x05,0x7f,0x01]
+
+    e_push_bs r1
+# CHECK: encoding: [0xc2,0x05,0x1f,0x01]
+
+    e_push_ex r0
+# CHECK: encoding: [0xe2,0x05,0x0f,0x01]
+
+    e_pop_ze r0
+# CHECK: encoding: [0x21,0x00,0x17,0xff]
+
+    e_pop_nz r2
+# CHECK: encoding: [0x41,0x08,0x17,0xff]
+
+    e_pop_po r5
+# CHECK: encoding: [0x61,0x14,0x17,0xff]
+
+    e_pop_ne r7
+# CHECK: encoding: [0x81,0x1c,0x17,0xff]
+
+    e_pop r1
+# CHECK: encoding: [0x01,0x04,0x17,0xff]
+
+    e_pop_az r0
+# CHECK: encoding: [0xa1,0x00,0x17,0xff]
+
+    e_pop_zb r2
+# CHECK: encoding: [0xc1,0x08,0x17,0xff]
+
+    e_pop_ca r5
+# CHECK: encoding: [0xe1,0x14,0x17,0xff]
+
+    e_pop_nc r7
+# CHECK: encoding: [0x01,0x1d,0x17,0xff]
+
+    e_pop_cz r1
+# CHECK: encoding: [0x21,0x05,0x17,0xff]
+
+    e_pop_spo r0
+# CHECK: encoding: [0x41,0x01,0x17,0xff]
+
+    e_pop_sne r2
+# CHECK: encoding: [0x61,0x09,0x17,0xff]
+
+    e_pop_nbs r5
+# CHECK: encoding: [0x81,0x15,0x17,0xff]
+
+    e_pop_nex r7
+# CHECK: encoding: [0xa1,0x1d,0x17,0xff]
+
+    e_pop_bs r1
+# CHECK: encoding: [0xc1,0x05,0x17,0xff]
+
+    e_pop_ex r0
+# CHECK: encoding: [0xe1,0x01,0x17,0xff]
+
+    e_pushb_ze r0
+# CHECK: encoding: [0x22,0x04,0x0b,0x01]
+
+    e_pushb_nz r2
+# CHECK: encoding: [0x42,0x04,0x2b,0x01]
+
+    e_pushb_po r5
+# CHECK: encoding: [0x62,0x04,0x5b,0x01]
+
+    e_pushb_ne r7
+# CHECK: encoding: [0x82,0x04,0x7b,0x01]
+
+    e_pushb r1
+# CHECK: encoding: [0x02,0x04,0x1b,0x01]
+
+    e_pushb_az r0
+# CHECK: encoding: [0xa2,0x04,0x0b,0x01]
+
+    e_pushb_zb r2
+# CHECK: encoding: [0xc2,0x04,0x2b,0x01]
+
+    e_pushb_ca r5
+# CHECK: encoding: [0xe2,0x04,0x5b,0x01]
+
+    e_pushb_nc r7
+# CHECK: encoding: [0x02,0x05,0x7b,0x01]
+
+    e_pushb_cz r1
+# CHECK: encoding: [0x22,0x05,0x1b,0x01]
+
+    e_pushb_spo r0
+# CHECK: encoding: [0x42,0x05,0x0b,0x01]
+
+    e_pushb_sne r2
+# CHECK: encoding: [0x62,0x05,0x2b,0x01]
+
+    e_pushb_nbs r5
+# CHECK: encoding: [0x82,0x05,0x5b,0x01]
+
+    e_pushb_nex r7
+# CHECK: encoding: [0xa2,0x05,0x7b,0x01]
+
+    e_pushb_bs r1
+# CHECK: encoding: [0xc2,0x05,0x1b,0x01]
+
+    e_pushb_ex r0
+# CHECK: encoding: [0xe2,0x05,0x0b,0x01]
+
+    e_popb_ze r0
+# CHECK: encoding: [0x21,0x00,0x13,0xff]
+
+    e_popb_nz r2
+# CHECK: encoding: [0x41,0x08,0x13,0xff]
+
+    e_popb_po r5
+# CHECK: encoding: [0x61,0x14,0x13,0xff]
+
+    e_popb_ne r7
+# CHECK: encoding: [0x81,0x1c,0x13,0xff]
+
+    e_popb r1
+# CHECK: encoding: [0x01,0x04,0x13,0xff]
+
+    e_popb_az r0
+# CHECK: encoding: [0xa1,0x00,0x13,0xff]
+
+    e_popb_zb r2
+# CHECK: encoding: [0xc1,0x08,0x13,0xff]
+
+    e_popb_ca r5
+# CHECK: encoding: [0xe1,0x14,0x13,0xff]
+
+    e_popb_nc r7
+# CHECK: encoding: [0x01,0x1d,0x13,0xff]
+
+    e_popb_cz r1
+# CHECK: encoding: [0x21,0x05,0x13,0xff]
+
+    e_popb_spo r0
+# CHECK: encoding: [0x41,0x01,0x13,0xff]
+
+    e_popb_sne r2
+# CHECK: encoding: [0x61,0x09,0x13,0xff]
+
+    e_popb_nbs r5
+# CHECK: encoding: [0x81,0x15,0x13,0xff]
+
+    e_popb_nex r7
+# CHECK: encoding: [0xa1,0x1d,0x13,0xff]
+
+    e_popb_bs r1
+# CHECK: encoding: [0xc1,0x05,0x13,0xff]
+
+    e_popb_ex r0
+# CHECK: encoding: [0xe1,0x01,0x13,0xff]
+
+    e_popbs_ze r0
+# CHECK: encoding: [0x21,0x00,0x33,0xff]
+
+    e_popbs_nz r2
+# CHECK: encoding: [0x41,0x08,0x33,0xff]
+
+    e_popbs_po r5
+# CHECK: encoding: [0x61,0x14,0x33,0xff]
+
+    e_popbs_ne r7
+# CHECK: encoding: [0x81,0x1c,0x33,0xff]
+
+    e_popbs r1
+# CHECK: encoding: [0x01,0x04,0x33,0xff]
+
+    e_popbs_az r0
+# CHECK: encoding: [0xa1,0x00,0x33,0xff]
+
+    e_popbs_zb r2
+# CHECK: encoding: [0xc1,0x08,0x33,0xff]
+
+    e_popbs_ca r5
+# CHECK: encoding: [0xe1,0x14,0x33,0xff]
+
+    e_popbs_nc r7
+# CHECK: encoding: [0x01,0x1d,0x33,0xff]
+
+    e_popbs_cz r1
+# CHECK: encoding: [0x21,0x05,0x33,0xff]
+
+    e_popbs_spo r0
+# CHECK: encoding: [0x41,0x01,0x33,0xff]
+
+    e_popbs_sne r2
+# CHECK: encoding: [0x61,0x09,0x33,0xff]
+
+    e_popbs_nbs r5
+# CHECK: encoding: [0x81,0x15,0x33,0xff]
+
+    e_popbs_nex r7
+# CHECK: encoding: [0xa1,0x1d,0x33,0xff]
+
+    e_popbs_bs r1
+# CHECK: encoding: [0xc1,0x05,0x33,0xff]
+
+    e_popbs_ex r0
+# CHECK: encoding: [0xe1,0x01,0x33,0xff]
+
+    e_pushd r0
+# CHECK: encoding: [0x02,0x04,0x07,0xff]
+
+    e_pushd r2
+# CHECK: encoding: [0x02,0x04,0x27,0xff]
+
+    e_pushd r5
+# CHECK: encoding: [0x02,0x04,0x57,0xff]
+
+    e_pushd r7
+# CHECK: encoding: [0x02,0x04,0x77,0xff]
+
+    e_pushd r1
+# CHECK: encoding: [0x02,0x04,0x17,0xff]
+
+    e_pushd r0
+# CHECK: encoding: [0x02,0x04,0x07,0xff]
+
+    e_pushd r2
+# CHECK: encoding: [0x02,0x04,0x27,0xff]
+
+    e_pushd r5
+# CHECK: encoding: [0x02,0x04,0x57,0xff]
+
+    e_pushd r7
+# CHECK: encoding: [0x02,0x04,0x77,0xff]
+
+    e_pushd r1
+# CHECK: encoding: [0x02,0x04,0x17,0xff]
+
+    e_pushd r0
+# CHECK: encoding: [0x02,0x04,0x07,0xff]
+
+    e_pushd r2
+# CHECK: encoding: [0x02,0x04,0x27,0xff]
+
+    e_pushd r5
+# CHECK: encoding: [0x02,0x04,0x57,0xff]
+
+    e_pushd r7
+# CHECK: encoding: [0x02,0x04,0x77,0xff]
+
+    e_pushd r1
+# CHECK: encoding: [0x02,0x04,0x17,0xff]
+
+    e_pushd r0
+# CHECK: encoding: [0x02,0x04,0x07,0xff]
+
+    e_pushdb r0
+# CHECK: encoding: [0x02,0x04,0x03,0xff]
+
+    e_pushdb r2
+# CHECK: encoding: [0x02,0x04,0x23,0xff]
+
+    e_pushdb r5
+# CHECK: encoding: [0x02,0x04,0x53,0xff]
+
+    e_pushdb r7
+# CHECK: encoding: [0x02,0x04,0x73,0xff]
+
+    e_pushdb r1
+# CHECK: encoding: [0x02,0x04,0x13,0xff]
+
+    e_pushdb r0
+# CHECK: encoding: [0x02,0x04,0x03,0xff]
+
+    e_pushdb r2
+# CHECK: encoding: [0x02,0x04,0x23,0xff]
+
+    e_pushdb r5
+# CHECK: encoding: [0x02,0x04,0x53,0xff]
+
+    e_pushdb r7
+# CHECK: encoding: [0x02,0x04,0x73,0xff]
+
+    e_pushdb r1
+# CHECK: encoding: [0x02,0x04,0x13,0xff]
+
+    e_pushdb r0
+# CHECK: encoding: [0x02,0x04,0x03,0xff]
+
+    e_pushdb r2
+# CHECK: encoding: [0x02,0x04,0x23,0xff]
+
+    e_pushdb r5
+# CHECK: encoding: [0x02,0x04,0x53,0xff]
+
+    e_pushdb r7
+# CHECK: encoding: [0x02,0x04,0x73,0xff]
+
+    e_pushdb r1
+# CHECK: encoding: [0x02,0x04,0x13,0xff]
+
+    e_pushdb r0
+# CHECK: encoding: [0x02,0x04,0x03,0xff]
+
+    e_pushd_ze r0
+# CHECK: encoding: [0x22,0x04,0x07,0xff]
+
+    e_pushd_nz r2
+# CHECK: encoding: [0x42,0x04,0x27,0xff]
+
+    e_pushd_po r5
+# CHECK: encoding: [0x62,0x04,0x57,0xff]
+
+    e_pushd_ne r7
+# CHECK: encoding: [0x82,0x04,0x77,0xff]
+
+    e_pushd r1
+# CHECK: encoding: [0x02,0x04,0x17,0xff]
+
+    e_pushd_az r0
+# CHECK: encoding: [0xa2,0x04,0x07,0xff]
+
+    e_pushd_zb r2
+# CHECK: encoding: [0xc2,0x04,0x27,0xff]
+
+    e_pushd_ca r5
+# CHECK: encoding: [0xe2,0x04,0x57,0xff]
+
+    e_pushd_nc r7
+# CHECK: encoding: [0x02,0x05,0x77,0xff]
+
+    e_pushd_cz r1
+# CHECK: encoding: [0x22,0x05,0x17,0xff]
+
+    e_pushd_spo r0
+# CHECK: encoding: [0x42,0x05,0x07,0xff]
+
+    e_pushd_sne r2
+# CHECK: encoding: [0x62,0x05,0x27,0xff]
+
+    e_pushd_nbs r5
+# CHECK: encoding: [0x82,0x05,0x57,0xff]
+
+    e_pushd_nex r7
+# CHECK: encoding: [0xa2,0x05,0x77,0xff]
+
+    e_pushd_bs r1
+# CHECK: encoding: [0xc2,0x05,0x17,0xff]
+
+    e_pushd_ex r0
+# CHECK: encoding: [0xe2,0x05,0x07,0xff]
+
+    e_pushdb_ze r0
+# CHECK: encoding: [0x22,0x04,0x03,0xff]
+
+    e_pushdb_nz r2
+# CHECK: encoding: [0x42,0x04,0x23,0xff]
+
+    e_pushdb_po r5
+# CHECK: encoding: [0x62,0x04,0x53,0xff]
+
+    e_pushdb_ne r7
+# CHECK: encoding: [0x82,0x04,0x73,0xff]
+
+    e_pushdb r1
+# CHECK: encoding: [0x02,0x04,0x13,0xff]
+
+    e_pushdb_az r0
+# CHECK: encoding: [0xa2,0x04,0x03,0xff]
+
+    e_pushdb_zb r2
+# CHECK: encoding: [0xc2,0x04,0x23,0xff]
+
+    e_pushdb_ca r5
+# CHECK: encoding: [0xe2,0x04,0x53,0xff]
+
+    e_pushdb_nc r7
+# CHECK: encoding: [0x02,0x05,0x73,0xff]
+
+    e_pushdb_cz r1
+# CHECK: encoding: [0x22,0x05,0x13,0xff]
+
+    e_pushdb_spo r0
+# CHECK: encoding: [0x42,0x05,0x03,0xff]
+
+    e_pushdb_sne r2
+# CHECK: encoding: [0x62,0x05,0x23,0xff]
+
+    e_pushdb_nbs r5
+# CHECK: encoding: [0x82,0x05,0x53,0xff]
+
+    e_pushdb_nex r7
+# CHECK: encoding: [0xa2,0x05,0x73,0xff]
+
+    e_pushdb_bs r1
+# CHECK: encoding: [0xc2,0x05,0x13,0xff]
+
+    e_pushdb_ex r0
+# CHECK: encoding: [0xe2,0x05,0x03,0xff]
+
+    e_popd r0
+# CHECK: encoding: [0x01,0x00,0x1f,0x01]
+
+    e_popd r2
+# CHECK: encoding: [0x01,0x08,0x1f,0x01]
+
+    e_popd r5
+# CHECK: encoding: [0x01,0x14,0x1f,0x01]
+
+    e_popd r7
+# CHECK: encoding: [0x01,0x1c,0x1f,0x01]
+
+    e_popd r1
+# CHECK: encoding: [0x01,0x04,0x1f,0x01]
+
+    e_popd r0
+# CHECK: encoding: [0x01,0x00,0x1f,0x01]
+
+    e_popd r2
+# CHECK: encoding: [0x01,0x08,0x1f,0x01]
+
+    e_popd r5
+# CHECK: encoding: [0x01,0x14,0x1f,0x01]
+
+    e_popd r7
+# CHECK: encoding: [0x01,0x1c,0x1f,0x01]
+
+    e_popd r1
+# CHECK: encoding: [0x01,0x04,0x1f,0x01]
+
+    e_popd r0
+# CHECK: encoding: [0x01,0x00,0x1f,0x01]
+
+    e_popd r2
+# CHECK: encoding: [0x01,0x08,0x1f,0x01]
+
+    e_popd r5
+# CHECK: encoding: [0x01,0x14,0x1f,0x01]
+
+    e_popd r7
+# CHECK: encoding: [0x01,0x1c,0x1f,0x01]
+
+    e_popd r1
+# CHECK: encoding: [0x01,0x04,0x1f,0x01]
+
+    e_popd r0
+# CHECK: encoding: [0x01,0x00,0x1f,0x01]
+
+    e_popdb r0
+# CHECK: encoding: [0x01,0x00,0x1b,0x01]
+
+    e_popdb r2
+# CHECK: encoding: [0x01,0x08,0x1b,0x01]
+
+    e_popdb r5
+# CHECK: encoding: [0x01,0x14,0x1b,0x01]
+
+    e_popdb r7
+# CHECK: encoding: [0x01,0x1c,0x1b,0x01]
+
+    e_popdb r1
+# CHECK: encoding: [0x01,0x04,0x1b,0x01]
+
+    e_popdb r0
+# CHECK: encoding: [0x01,0x00,0x1b,0x01]
+
+    e_popdb r2
+# CHECK: encoding: [0x01,0x08,0x1b,0x01]
+
+    e_popdb r5
+# CHECK: encoding: [0x01,0x14,0x1b,0x01]
+
+    e_popdb r7
+# CHECK: encoding: [0x01,0x1c,0x1b,0x01]
+
+    e_popdb r1
+# CHECK: encoding: [0x01,0x04,0x1b,0x01]
+
+    e_popdb r0
+# CHECK: encoding: [0x01,0x00,0x1b,0x01]
+
+    e_popdb r2
+# CHECK: encoding: [0x01,0x08,0x1b,0x01]
+
+    e_popdb r5
+# CHECK: encoding: [0x01,0x14,0x1b,0x01]
+
+    e_popdb r7
+# CHECK: encoding: [0x01,0x1c,0x1b,0x01]
+
+    e_popdb r1
+# CHECK: encoding: [0x01,0x04,0x1b,0x01]
+
+    e_popdb r0
+# CHECK: encoding: [0x01,0x00,0x1b,0x01]
+
+    e_popdbs r0
+# CHECK: encoding: [0x01,0x00,0x3b,0x01]
+
+    e_popdbs r2
+# CHECK: encoding: [0x01,0x08,0x3b,0x01]
+
+    e_popdbs r5
+# CHECK: encoding: [0x01,0x14,0x3b,0x01]
+
+    e_popdbs r7
+# CHECK: encoding: [0x01,0x1c,0x3b,0x01]
+
+    e_popdbs r1
+# CHECK: encoding: [0x01,0x04,0x3b,0x01]
+
+    e_popdbs r0
+# CHECK: encoding: [0x01,0x00,0x3b,0x01]
+
+    e_popdbs r2
+# CHECK: encoding: [0x01,0x08,0x3b,0x01]
+
+    e_popdbs r5
+# CHECK: encoding: [0x01,0x14,0x3b,0x01]
+
+    e_popdbs r7
+# CHECK: encoding: [0x01,0x1c,0x3b,0x01]
+
+    e_popdbs r1
+# CHECK: encoding: [0x01,0x04,0x3b,0x01]
+
+    e_popdbs r0
+# CHECK: encoding: [0x01,0x00,0x3b,0x01]
+
+    e_popdbs r2
+# CHECK: encoding: [0x01,0x08,0x3b,0x01]
+
+    e_popdbs r5
+# CHECK: encoding: [0x01,0x14,0x3b,0x01]
+
+    e_popdbs r7
+# CHECK: encoding: [0x01,0x1c,0x3b,0x01]
+
+    e_popdbs r1
+# CHECK: encoding: [0x01,0x04,0x3b,0x01]
+
+    e_popdbs r0
+# CHECK: encoding: [0x01,0x00,0x3b,0x01]
+
+    e_popd_ze r0
+# CHECK: encoding: [0x21,0x00,0x1f,0x01]
+
+    e_popd_nz r2
+# CHECK: encoding: [0x41,0x08,0x1f,0x01]
+
+    e_popd_po r5
+# CHECK: encoding: [0x61,0x14,0x1f,0x01]
+
+    e_popd_ne r7
+# CHECK: encoding: [0x81,0x1c,0x1f,0x01]
+
+    e_popd r1
+# CHECK: encoding: [0x01,0x04,0x1f,0x01]
+
+    e_popd_az r0
+# CHECK: encoding: [0xa1,0x00,0x1f,0x01]
+
+    e_popd_zb r2
+# CHECK: encoding: [0xc1,0x08,0x1f,0x01]
+
+    e_popd_ca r5
+# CHECK: encoding: [0xe1,0x14,0x1f,0x01]
+
+    e_popd_nc r7
+# CHECK: encoding: [0x01,0x1d,0x1f,0x01]
+
+    e_popd_cz r1
+# CHECK: encoding: [0x21,0x05,0x1f,0x01]
+
+    e_popd_spo r0
+# CHECK: encoding: [0x41,0x01,0x1f,0x01]
+
+    e_popd_sne r2
+# CHECK: encoding: [0x61,0x09,0x1f,0x01]
+
+    e_popd_nbs r5
+# CHECK: encoding: [0x81,0x15,0x1f,0x01]
+
+    e_popd_nex r7
+# CHECK: encoding: [0xa1,0x1d,0x1f,0x01]
+
+    e_popd_bs r1
+# CHECK: encoding: [0xc1,0x05,0x1f,0x01]
+
+    e_popd_ex r0
+# CHECK: encoding: [0xe1,0x01,0x1f,0x01]
+
+    e_popdb_ze r0
+# CHECK: encoding: [0x21,0x00,0x1b,0x01]
+
+    e_popdb_nz r2
+# CHECK: encoding: [0x41,0x08,0x1b,0x01]
+
+    e_popdb_po r5
+# CHECK: encoding: [0x61,0x14,0x1b,0x01]
+
+    e_popdb_ne r7
+# CHECK: encoding: [0x81,0x1c,0x1b,0x01]
+
+    e_popdb r1
+# CHECK: encoding: [0x01,0x04,0x1b,0x01]
+
+    e_popdb_az r0
+# CHECK: encoding: [0xa1,0x00,0x1b,0x01]
+
+    e_popdb_zb r2
+# CHECK: encoding: [0xc1,0x08,0x1b,0x01]
+
+    e_popdb_ca r5
+# CHECK: encoding: [0xe1,0x14,0x1b,0x01]
+
+    e_popdb_nc r7
+# CHECK: encoding: [0x01,0x1d,0x1b,0x01]
+
+    e_popdb_cz r1
+# CHECK: encoding: [0x21,0x05,0x1b,0x01]
+
+    e_popdb_spo r0
+# CHECK: encoding: [0x41,0x01,0x1b,0x01]
+
+    e_popdb_sne r2
+# CHECK: encoding: [0x61,0x09,0x1b,0x01]
+
+    e_popdb_nbs r5
+# CHECK: encoding: [0x81,0x15,0x1b,0x01]
+
+    e_popdb_nex r7
+# CHECK: encoding: [0xa1,0x1d,0x1b,0x01]
+
+    e_popdb_bs r1
+# CHECK: encoding: [0xc1,0x05,0x1b,0x01]
+
+    e_popdb_ex r0
+# CHECK: encoding: [0xe1,0x01,0x1b,0x01]
+
+    e_popdbs_ze r0
+# CHECK: encoding: [0x21,0x00,0x3b,0x01]
+
+    e_popdbs_nz r2
+# CHECK: encoding: [0x41,0x08,0x3b,0x01]
+
+    e_popdbs_po r5
+# CHECK: encoding: [0x61,0x14,0x3b,0x01]
+
+    e_popdbs_ne r7
+# CHECK: encoding: [0x81,0x1c,0x3b,0x01]
+
+    e_popdbs r1
+# CHECK: encoding: [0x01,0x04,0x3b,0x01]
+
+    e_popdbs_az r0
+# CHECK: encoding: [0xa1,0x00,0x3b,0x01]
+
+    e_popdbs_zb r2
+# CHECK: encoding: [0xc1,0x08,0x3b,0x01]
+
+    e_popdbs_ca r5
+# CHECK: encoding: [0xe1,0x14,0x3b,0x01]
+
+    e_popdbs_nc r7
+# CHECK: encoding: [0x01,0x1d,0x3b,0x01]
+
+    e_popdbs_cz r1
+# CHECK: encoding: [0x21,0x05,0x3b,0x01]
+
+    e_popdbs_spo r0
+# CHECK: encoding: [0x41,0x01,0x3b,0x01]
+
+    e_popdbs_sne r2
+# CHECK: encoding: [0x61,0x09,0x3b,0x01]
+
+    e_popdbs_nbs r5
+# CHECK: encoding: [0x81,0x15,0x3b,0x01]
+
+    e_popdbs_nex r7
+# CHECK: encoding: [0xa1,0x1d,0x3b,0x01]
+
+    e_popdbs_bs r1
+# CHECK: encoding: [0xc1,0x05,0x3b,0x01]
+
+    e_popdbs_ex r0
+# CHECK: encoding: [0xe1,0x01,0x3b,0x01]
+
+    e_per_read r0, 0x0
+# CHECK: encoding: [0x04,0x00,0x00,0x00]
+
+    e_per_read r2, 0x10000
+# CHECK: encoding: [0x04,0x08,0x00,0x10]
+
+    e_per_read r5, 0x20000
+# CHECK: encoding: [0x04,0x14,0x00,0x20]
+
+    e_per_read r7, 0x1ffffc
+# CHECK: encoding: [0x04,0xdc,0xff,0xff]
+
+    e_per_read r1, 0x7a120
+# CHECK: encoding: [0x04,0x04,0x12,0x7a]
+
+    e_per_read r0, 0x0
+# CHECK: encoding: [0x04,0x00,0x00,0x00]
+
+    e_per_read r2, 0x10000
+# CHECK: encoding: [0x04,0x08,0x00,0x10]
+
+    e_per_read r5, 0x20000
+# CHECK: encoding: [0x04,0x14,0x00,0x20]
+
+    e_per_read r7, 0x1ffffc
+# CHECK: encoding: [0x04,0xdc,0xff,0xff]
+
+    e_per_read r1, 0x7a120
+# CHECK: encoding: [0x04,0x04,0x12,0x7a]
+
+    e_per_read r0, 0x0
+# CHECK: encoding: [0x04,0x00,0x00,0x00]
+
+    e_per_read r2, 0x10000
+# CHECK: encoding: [0x04,0x08,0x00,0x10]
+
+    e_per_read r5, 0x20000
+# CHECK: encoding: [0x04,0x14,0x00,0x20]
+
+    e_per_read r7, 0x1ffffc
+# CHECK: encoding: [0x04,0xdc,0xff,0xff]
+
+    e_per_read r1, 0x7a120
+# CHECK: encoding: [0x04,0x04,0x12,0x7a]
+
+    e_per_read r0, 0x0
+# CHECK: encoding: [0x04,0x00,0x00,0x00]
+
+    e_per_read_ze r0, 0x0
+# CHECK: encoding: [0x24,0x00,0x00,0x00]
+
+    e_per_read_nz r2, 0x10000
+# CHECK: encoding: [0x44,0x08,0x00,0x10]
+
+    e_per_read_po r5, 0x20000
+# CHECK: encoding: [0x64,0x14,0x00,0x20]
+
+    e_per_read_ne r7, 0x1ffffc
+# CHECK: encoding: [0x84,0xdc,0xff,0xff]
+
+    e_per_read r1, 0x7a120
+# CHECK: encoding: [0x04,0x04,0x12,0x7a]
+
+    e_per_read_az r0, 0x0
+# CHECK: encoding: [0xa4,0x00,0x00,0x00]
+
+    e_per_read_zb r2, 0x10000
+# CHECK: encoding: [0xc4,0x08,0x00,0x10]
+
+    e_per_read_ca r5, 0x20000
+# CHECK: encoding: [0xe4,0x14,0x00,0x20]
+
+    e_per_read_nc r7, 0x1ffffc
+# CHECK: encoding: [0x04,0xdd,0xff,0xff]
+
+    e_per_read_cz r1, 0x7a120
+# CHECK: encoding: [0x24,0x05,0x12,0x7a]
+
+    e_per_read_spo r0, 0x0
+# CHECK: encoding: [0x44,0x01,0x00,0x00]
+
+    e_per_read_sne r2, 0x10000
+# CHECK: encoding: [0x64,0x09,0x00,0x10]
+
+    e_per_read_nbs r5, 0x20000
+# CHECK: encoding: [0x84,0x15,0x00,0x20]
+
+    e_per_read_nex r7, 0x1ffffc
+# CHECK: encoding: [0xa4,0xdd,0xff,0xff]
+
+    e_per_read_bs r1, 0x7a120
+# CHECK: encoding: [0xc4,0x05,0x12,0x7a]
+
+    e_per_read_ex r0, 0x0
+# CHECK: encoding: [0xe4,0x01,0x00,0x00]
+
+    e_per_write r0, 0x0
+# CHECK: encoding: [0x05,0x00,0x00,0x00]
+
+    e_per_write r2, 0x10000
+# CHECK: encoding: [0x05,0x00,0x20,0x10]
+
+    e_per_write r5, 0x20000
+# CHECK: encoding: [0x05,0x00,0x50,0x20]
+
+    e_per_write r7, 0x1ffffc
+# CHECK: encoding: [0x05,0xfc,0x7f,0xff]
+
+    e_per_write r1, 0x7a120
+# CHECK: encoding: [0x05,0x20,0x11,0x7a]
+
+    e_per_write r0, 0x0
+# CHECK: encoding: [0x05,0x00,0x00,0x00]
+
+    e_per_write r2, 0x10000
+# CHECK: encoding: [0x05,0x00,0x20,0x10]
+
+    e_per_write r5, 0x20000
+# CHECK: encoding: [0x05,0x00,0x50,0x20]
+
+    e_per_write r7, 0x1ffffc
+# CHECK: encoding: [0x05,0xfc,0x7f,0xff]
+
+    e_per_write r1, 0x7a120
+# CHECK: encoding: [0x05,0x20,0x11,0x7a]
+
+    e_per_write r0, 0x0
+# CHECK: encoding: [0x05,0x00,0x00,0x00]
+
+    e_per_write r2, 0x10000
+# CHECK: encoding: [0x05,0x00,0x20,0x10]
+
+    e_per_write r5, 0x20000
+# CHECK: encoding: [0x05,0x00,0x50,0x20]
+
+    e_per_write r7, 0x1ffffc
+# CHECK: encoding: [0x05,0xfc,0x7f,0xff]
+
+    e_per_write r1, 0x7a120
+# CHECK: encoding: [0x05,0x20,0x11,0x7a]
+
+    e_per_write r0, 0x0
+# CHECK: encoding: [0x05,0x00,0x00,0x00]
+
+    e_per_write_ze r0, 0x0
+# CHECK: encoding: [0x25,0x00,0x00,0x00]
+
+    e_per_write_nz r2, 0x10000
+# CHECK: encoding: [0x45,0x00,0x20,0x10]
+
+    e_per_write_po r5, 0x20000
+# CHECK: encoding: [0x65,0x00,0x50,0x20]
+
+    e_per_write_ne r7, 0x1ffffc
+# CHECK: encoding: [0x85,0xfc,0x7f,0xff]
+
+    e_per_write r1, 0x7a120
+# CHECK: encoding: [0x05,0x20,0x11,0x7a]
+
+    e_per_write_az r0, 0x0
+# CHECK: encoding: [0xa5,0x00,0x00,0x00]
+
+    e_per_write_zb r2, 0x10000
+# CHECK: encoding: [0xc5,0x00,0x20,0x10]
+
+    e_per_write_ca r5, 0x20000
+# CHECK: encoding: [0xe5,0x00,0x50,0x20]
+
+    e_per_write_nc r7, 0x1ffffc
+# CHECK: encoding: [0x05,0xfd,0x7f,0xff]
+
+    e_per_write_cz r1, 0x7a120
+# CHECK: encoding: [0x25,0x21,0x11,0x7a]
+
+    e_per_write_spo r0, 0x0
+# CHECK: encoding: [0x45,0x01,0x00,0x00]
+
+    e_per_write_sne r2, 0x10000
+# CHECK: encoding: [0x65,0x01,0x20,0x10]
+
+    e_per_write_nbs r5, 0x20000
+# CHECK: encoding: [0x85,0x01,0x50,0x20]
+
+    e_per_write_nex r7, 0x1ffffc
+# CHECK: encoding: [0xa5,0xfd,0x7f,0xff]
+
+    e_per_write_bs r1, 0x7a120
+# CHECK: encoding: [0xc5,0x21,0x11,0x7a]
+
+    e_per_write_ex r0, 0x0
+# CHECK: encoding: [0xe5,0x01,0x00,0x00]
+
+    e_add r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x00,0x00]
+
+    e_add r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x20,0x00]
+
+    e_add r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x51,0x00]
+
+    e_add r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x71,0x00]
+
+    e_add r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x10,0x00]
+
+    e_add r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x00,0x00]
+
+    e_add r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x20,0x00]
+
+    e_add r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x51,0x00]
+
+    e_add r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x71,0x00]
+
+    e_add r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x10,0x00]
+
+    e_add r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x00,0x00]
+
+    e_add r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x20,0x00]
+
+    e_add r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x51,0x00]
+
+    e_add r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x71,0x00]
+
+    e_add r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x10,0x00]
+
+    e_add r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x00,0x00]
+
+    e_adds r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x00,0x00]
+
+    e_adds r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x20,0x00]
+
+    e_adds r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x51,0x00]
+
+    e_adds r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x71,0x00]
+
+    e_adds r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x10,0x00]
+
+    e_adds r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x00,0x00]
+
+    e_adds r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x20,0x00]
+
+    e_adds r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x51,0x00]
+
+    e_adds r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x71,0x00]
+
+    e_adds r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x10,0x00]
+
+    e_adds r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x00,0x00]
+
+    e_adds r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x20,0x00]
+
+    e_adds r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x51,0x00]
+
+    e_adds r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x71,0x00]
+
+    e_adds r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x10,0x00]
+
+    e_adds r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x00,0x00]
+
+    e_add_ze r0, r0, r0
+# CHECK: encoding: [0x26,0x00,0x00,0x00]
+
+    e_add_nz r2, r2, r2
+# CHECK: encoding: [0x46,0x88,0x20,0x00]
+
+    e_add_po r5, r5, r5
+# CHECK: encoding: [0x66,0x54,0x51,0x00]
+
+    e_add_ne r7, r7, r7
+# CHECK: encoding: [0x86,0xdc,0x71,0x00]
+
+    e_add r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x10,0x00]
+
+    e_add_az r0, r0, r0
+# CHECK: encoding: [0xa6,0x00,0x00,0x00]
+
+    e_add_zb r2, r2, r2
+# CHECK: encoding: [0xc6,0x88,0x20,0x00]
+
+    e_add_ca r5, r5, r5
+# CHECK: encoding: [0xe6,0x54,0x51,0x00]
+
+    e_add_nc r7, r7, r7
+# CHECK: encoding: [0x06,0xdd,0x71,0x00]
+
+    e_add_cz r1, r1, r1
+# CHECK: encoding: [0x26,0x45,0x10,0x00]
+
+    e_add_spo r0, r0, r0
+# CHECK: encoding: [0x46,0x01,0x00,0x00]
+
+    e_add_sne r2, r2, r2
+# CHECK: encoding: [0x66,0x89,0x20,0x00]
+
+    e_add_nbs r5, r5, r5
+# CHECK: encoding: [0x86,0x55,0x51,0x00]
+
+    e_add_nex r7, r7, r7
+# CHECK: encoding: [0xa6,0xdd,0x71,0x00]
+
+    e_add_bs r1, r1, r1
+# CHECK: encoding: [0xc6,0x45,0x10,0x00]
+
+    e_add_ex r0, r0, r0
+# CHECK: encoding: [0xe6,0x01,0x00,0x00]
+
+    e_adds_ze r0, r0, r0
+# CHECK: encoding: [0x26,0x02,0x00,0x00]
+
+    e_adds_nz r2, r2, r2
+# CHECK: encoding: [0x46,0x8a,0x20,0x00]
+
+    e_adds_po r5, r5, r5
+# CHECK: encoding: [0x66,0x56,0x51,0x00]
+
+    e_adds_ne r7, r7, r7
+# CHECK: encoding: [0x86,0xde,0x71,0x00]
+
+    e_adds r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x10,0x00]
+
+    e_adds_az r0, r0, r0
+# CHECK: encoding: [0xa6,0x02,0x00,0x00]
+
+    e_adds_zb r2, r2, r2
+# CHECK: encoding: [0xc6,0x8a,0x20,0x00]
+
+    e_adds_ca r5, r5, r5
+# CHECK: encoding: [0xe6,0x56,0x51,0x00]
+
+    e_adds_nc r7, r7, r7
+# CHECK: encoding: [0x06,0xdf,0x71,0x00]
+
+    e_adds_cz r1, r1, r1
+# CHECK: encoding: [0x26,0x47,0x10,0x00]
+
+    e_adds_spo r0, r0, r0
+# CHECK: encoding: [0x46,0x03,0x00,0x00]
+
+    e_adds_sne r2, r2, r2
+# CHECK: encoding: [0x66,0x8b,0x20,0x00]
+
+    e_adds_nbs r5, r5, r5
+# CHECK: encoding: [0x86,0x57,0x51,0x00]
+
+    e_adds_nex r7, r7, r7
+# CHECK: encoding: [0xa6,0xdf,0x71,0x00]
+
+    e_adds_bs r1, r1, r1
+# CHECK: encoding: [0xc6,0x47,0x10,0x00]
+
+    e_adds_ex r0, r0, r0
+# CHECK: encoding: [0xe6,0x03,0x00,0x00]
+
+    e_addn r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x08,0x00]
+
+    e_addn r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x28,0x00]
+
+    e_addn r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x59,0x00]
+
+    e_addn r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x79,0x00]
+
+    e_addn r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x18,0x00]
+
+    e_addn r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x08,0x00]
+
+    e_addn r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x28,0x00]
+
+    e_addn r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x59,0x00]
+
+    e_addn r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x79,0x00]
+
+    e_addn r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x18,0x00]
+
+    e_addn r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x08,0x00]
+
+    e_addn r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x28,0x00]
+
+    e_addn r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x59,0x00]
+
+    e_addn r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x79,0x00]
+
+    e_addn r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x18,0x00]
+
+    e_addn r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x08,0x00]
+
+    e_addns r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x08,0x00]
+
+    e_addns r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x28,0x00]
+
+    e_addns r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x59,0x00]
+
+    e_addns r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x79,0x00]
+
+    e_addns r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x18,0x00]
+
+    e_addns r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x08,0x00]
+
+    e_addns r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x28,0x00]
+
+    e_addns r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x59,0x00]
+
+    e_addns r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x79,0x00]
+
+    e_addns r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x18,0x00]
+
+    e_addns r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x08,0x00]
+
+    e_addns r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x28,0x00]
+
+    e_addns r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x59,0x00]
+
+    e_addns r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x79,0x00]
+
+    e_addns r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x18,0x00]
+
+    e_addns r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x08,0x00]
+
+    e_addn_ze r0, r0, r0
+# CHECK: encoding: [0x26,0x00,0x08,0x00]
+
+    e_addn_nz r2, r2, r2
+# CHECK: encoding: [0x46,0x88,0x28,0x00]
+
+    e_addn_po r5, r5, r5
+# CHECK: encoding: [0x66,0x54,0x59,0x00]
+
+    e_addn_ne r7, r7, r7
+# CHECK: encoding: [0x86,0xdc,0x79,0x00]
+
+    e_addn r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x18,0x00]
+
+    e_addn_az r0, r0, r0
+# CHECK: encoding: [0xa6,0x00,0x08,0x00]
+
+    e_addn_zb r2, r2, r2
+# CHECK: encoding: [0xc6,0x88,0x28,0x00]
+
+    e_addn_ca r5, r5, r5
+# CHECK: encoding: [0xe6,0x54,0x59,0x00]
+
+    e_addn_nc r7, r7, r7
+# CHECK: encoding: [0x06,0xdd,0x79,0x00]
+
+    e_addn_cz r1, r1, r1
+# CHECK: encoding: [0x26,0x45,0x18,0x00]
+
+    e_addn_spo r0, r0, r0
+# CHECK: encoding: [0x46,0x01,0x08,0x00]
+
+    e_addn_sne r2, r2, r2
+# CHECK: encoding: [0x66,0x89,0x28,0x00]
+
+    e_addn_nbs r5, r5, r5
+# CHECK: encoding: [0x86,0x55,0x59,0x00]
+
+    e_addn_nex r7, r7, r7
+# CHECK: encoding: [0xa6,0xdd,0x79,0x00]
+
+    e_addn_bs r1, r1, r1
+# CHECK: encoding: [0xc6,0x45,0x18,0x00]
+
+    e_addn_ex r0, r0, r0
+# CHECK: encoding: [0xe6,0x01,0x08,0x00]
+
+    e_addns_ze r0, r0, r0
+# CHECK: encoding: [0x26,0x02,0x08,0x00]
+
+    e_addns_nz r2, r2, r2
+# CHECK: encoding: [0x46,0x8a,0x28,0x00]
+
+    e_addns_po r5, r5, r5
+# CHECK: encoding: [0x66,0x56,0x59,0x00]
+
+    e_addns_ne r7, r7, r7
+# CHECK: encoding: [0x86,0xde,0x79,0x00]
+
+    e_addns r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x18,0x00]
+
+    e_addns_az r0, r0, r0
+# CHECK: encoding: [0xa6,0x02,0x08,0x00]
+
+    e_addns_zb r2, r2, r2
+# CHECK: encoding: [0xc6,0x8a,0x28,0x00]
+
+    e_addns_ca r5, r5, r5
+# CHECK: encoding: [0xe6,0x56,0x59,0x00]
+
+    e_addns_nc r7, r7, r7
+# CHECK: encoding: [0x06,0xdf,0x79,0x00]
+
+    e_addns_cz r1, r1, r1
+# CHECK: encoding: [0x26,0x47,0x18,0x00]
+
+    e_addns_spo r0, r0, r0
+# CHECK: encoding: [0x46,0x03,0x08,0x00]
+
+    e_addns_sne r2, r2, r2
+# CHECK: encoding: [0x66,0x8b,0x28,0x00]
+
+    e_addns_nbs r5, r5, r5
+# CHECK: encoding: [0x86,0x57,0x59,0x00]
+
+    e_addns_nex r7, r7, r7
+# CHECK: encoding: [0xa6,0xdf,0x79,0x00]
+
+    e_addns_bs r1, r1, r1
+# CHECK: encoding: [0xc6,0x47,0x18,0x00]
+
+    e_addns_ex r0, r0, r0
+# CHECK: encoding: [0xe6,0x03,0x08,0x00]
+
+    e_add_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x00,0xf4,0x3f]
+
+    e_add_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x88,0x14,0xc0]
+
+    e_add_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x54,0xf5,0x1f]
+
+    e_add_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdc,0x15,0xe0]
+
+    e_add_imm r1, r1, 0x1
+# CHECK: encoding: [0x06,0x44,0x14,0x00]
+
+    e_add_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x00,0xf4,0x3f]
+
+    e_add_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x88,0x14,0xc0]
+
+    e_add_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x54,0xf5,0x1f]
+
+    e_add_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdc,0x15,0xe0]
+
+    e_add_imm r1, r1, 0x1
+# CHECK: encoding: [0x06,0x44,0x14,0x00]
+
+    e_add_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x00,0xf4,0x3f]
+
+    e_add_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x88,0x14,0xc0]
+
+    e_add_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x54,0xf5,0x1f]
+
+    e_add_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdc,0x15,0xe0]
+
+    e_add_imm r1, r1, 0x1
+# CHECK: encoding: [0x06,0x44,0x14,0x00]
+
+    e_add_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x00,0xf4,0x3f]
+
+    e_add_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x02,0xf4,0x3f]
+
+    e_add_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x8a,0x14,0xc0]
+
+    e_add_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x56,0xf5,0x1f]
+
+    e_add_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xde,0x15,0xe0]
+
+    e_add_imms r1, r1, 0x1
+# CHECK: encoding: [0x06,0x46,0x14,0x00]
+
+    e_add_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x02,0xf4,0x3f]
+
+    e_add_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x8a,0x14,0xc0]
+
+    e_add_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x56,0xf5,0x1f]
+
+    e_add_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xde,0x15,0xe0]
+
+    e_add_imms r1, r1, 0x1
+# CHECK: encoding: [0x06,0x46,0x14,0x00]
+
+    e_add_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x02,0xf4,0x3f]
+
+    e_add_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x8a,0x14,0xc0]
+
+    e_add_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x56,0xf5,0x1f]
+
+    e_add_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xde,0x15,0xe0]
+
+    e_add_imms r1, r1, 0x1
+# CHECK: encoding: [0x06,0x46,0x14,0x00]
+
+    e_add_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x02,0xf4,0x3f]
+
+    e_add_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x26,0x00,0xf4,0x3f]
+
+    e_add_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x46,0x88,0x14,0xc0]
+
+    e_add_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x66,0x54,0xf5,0x1f]
+
+    e_add_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x86,0xdc,0x15,0xe0]
+
+    e_add_imm r1, r1, 0x1
+# CHECK: encoding: [0x06,0x44,0x14,0x00]
+
+    e_add_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa6,0x00,0xf4,0x3f]
+
+    e_add_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc6,0x88,0x14,0xc0]
+
+    e_add_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe6,0x54,0xf5,0x1f]
+
+    e_add_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdd,0x15,0xe0]
+
+    e_add_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x26,0x45,0x14,0x00]
+
+    e_add_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x46,0x01,0xf4,0x3f]
+
+    e_add_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x66,0x89,0x14,0xc0]
+
+    e_add_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x86,0x55,0xf5,0x1f]
+
+    e_add_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa6,0xdd,0x15,0xe0]
+
+    e_add_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xc6,0x45,0x14,0x00]
+
+    e_add_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe6,0x01,0xf4,0x3f]
+
+    e_add_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x26,0x02,0xf4,0x3f]
+
+    e_add_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x46,0x8a,0x14,0xc0]
+
+    e_add_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x66,0x56,0xf5,0x1f]
+
+    e_add_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x86,0xde,0x15,0xe0]
+
+    e_add_imms r1, r1, 0x1
+# CHECK: encoding: [0x06,0x46,0x14,0x00]
+
+    e_add_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa6,0x02,0xf4,0x3f]
+
+    e_add_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc6,0x8a,0x14,0xc0]
+
+    e_add_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe6,0x56,0xf5,0x1f]
+
+    e_add_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdf,0x15,0xe0]
+
+    e_add_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x26,0x47,0x14,0x00]
+
+    e_add_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x46,0x03,0xf4,0x3f]
+
+    e_add_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x66,0x8b,0x14,0xc0]
+
+    e_add_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x86,0x57,0xf5,0x1f]
+
+    e_add_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa6,0xdf,0x15,0xe0]
+
+    e_add_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xc6,0x47,0x14,0x00]
+
+    e_add_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe6,0x03,0xf4,0x3f]
+
+    e_addn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x00,0xfc,0x3f]
+
+    e_addn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x88,0x1c,0xc0]
+
+    e_addn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x54,0xfd,0x1f]
+
+    e_addn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdc,0x1d,0xe0]
+
+    e_addn_imm r1, r1, 0x1
+# CHECK: encoding: [0x06,0x44,0x1c,0x00]
+
+    e_addn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x00,0xfc,0x3f]
+
+    e_addn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x88,0x1c,0xc0]
+
+    e_addn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x54,0xfd,0x1f]
+
+    e_addn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdc,0x1d,0xe0]
+
+    e_addn_imm r1, r1, 0x1
+# CHECK: encoding: [0x06,0x44,0x1c,0x00]
+
+    e_addn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x00,0xfc,0x3f]
+
+    e_addn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x88,0x1c,0xc0]
+
+    e_addn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x54,0xfd,0x1f]
+
+    e_addn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdc,0x1d,0xe0]
+
+    e_addn_imm r1, r1, 0x1
+# CHECK: encoding: [0x06,0x44,0x1c,0x00]
+
+    e_addn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x00,0xfc,0x3f]
+
+    e_addn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x02,0xfc,0x3f]
+
+    e_addn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x8a,0x1c,0xc0]
+
+    e_addn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x56,0xfd,0x1f]
+
+    e_addn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xde,0x1d,0xe0]
+
+    e_addn_imms r1, r1, 0x1
+# CHECK: encoding: [0x06,0x46,0x1c,0x00]
+
+    e_addn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x02,0xfc,0x3f]
+
+    e_addn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x8a,0x1c,0xc0]
+
+    e_addn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x56,0xfd,0x1f]
+
+    e_addn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xde,0x1d,0xe0]
+
+    e_addn_imms r1, r1, 0x1
+# CHECK: encoding: [0x06,0x46,0x1c,0x00]
+
+    e_addn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x02,0xfc,0x3f]
+
+    e_addn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x06,0x8a,0x1c,0xc0]
+
+    e_addn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x06,0x56,0xfd,0x1f]
+
+    e_addn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xde,0x1d,0xe0]
+
+    e_addn_imms r1, r1, 0x1
+# CHECK: encoding: [0x06,0x46,0x1c,0x00]
+
+    e_addn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x06,0x02,0xfc,0x3f]
+
+    e_addn_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x26,0x00,0xfc,0x3f]
+
+    e_addn_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x46,0x88,0x1c,0xc0]
+
+    e_addn_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x66,0x54,0xfd,0x1f]
+
+    e_addn_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x86,0xdc,0x1d,0xe0]
+
+    e_addn_imm r1, r1, 0x1
+# CHECK: encoding: [0x06,0x44,0x1c,0x00]
+
+    e_addn_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa6,0x00,0xfc,0x3f]
+
+    e_addn_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc6,0x88,0x1c,0xc0]
+
+    e_addn_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe6,0x54,0xfd,0x1f]
+
+    e_addn_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdd,0x1d,0xe0]
+
+    e_addn_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x26,0x45,0x1c,0x00]
+
+    e_addn_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x46,0x01,0xfc,0x3f]
+
+    e_addn_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x66,0x89,0x1c,0xc0]
+
+    e_addn_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x86,0x55,0xfd,0x1f]
+
+    e_addn_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa6,0xdd,0x1d,0xe0]
+
+    e_addn_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xc6,0x45,0x1c,0x00]
+
+    e_addn_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe6,0x01,0xfc,0x3f]
+
+    e_addn_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x26,0x02,0xfc,0x3f]
+
+    e_addn_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x46,0x8a,0x1c,0xc0]
+
+    e_addn_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x66,0x56,0xfd,0x1f]
+
+    e_addn_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x86,0xde,0x1d,0xe0]
+
+    e_addn_imms r1, r1, 0x1
+# CHECK: encoding: [0x06,0x46,0x1c,0x00]
+
+    e_addn_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa6,0x02,0xfc,0x3f]
+
+    e_addn_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc6,0x8a,0x1c,0xc0]
+
+    e_addn_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe6,0x56,0xfd,0x1f]
+
+    e_addn_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x06,0xdf,0x1d,0xe0]
+
+    e_addn_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x26,0x47,0x1c,0x00]
+
+    e_addn_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x46,0x03,0xfc,0x3f]
+
+    e_addn_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x66,0x8b,0x1c,0xc0]
+
+    e_addn_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x86,0x57,0xfd,0x1f]
+
+    e_addn_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa6,0xdf,0x1d,0xe0]
+
+    e_addn_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xc6,0x47,0x1c,0x00]
+
+    e_addn_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe6,0x03,0xfc,0x3f]
+
+    e_add_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x00]
+
+    e_add_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x05]
+
+    e_add_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x0f]
+
+    e_add_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x1f]
+
+    e_add_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x0a]
+
+    e_add_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x00]
+
+    e_add_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x05]
+
+    e_add_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x0f]
+
+    e_add_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x1f]
+
+    e_add_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x0a]
+
+    e_add_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x00]
+
+    e_add_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x05]
+
+    e_add_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x0f]
+
+    e_add_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x1f]
+
+    e_add_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x0a]
+
+    e_add_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x00]
+
+    e_add_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x00]
+
+    e_add_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x05]
+
+    e_add_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x0f]
+
+    e_add_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x1f]
+
+    e_add_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x0a]
+
+    e_add_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x00]
+
+    e_add_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x05]
+
+    e_add_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x0f]
+
+    e_add_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x1f]
+
+    e_add_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x0a]
+
+    e_add_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x00]
+
+    e_add_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x05]
+
+    e_add_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x0f]
+
+    e_add_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x1f]
+
+    e_add_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x0a]
+
+    e_add_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x00]
+
+    e_add_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x00,0x00]
+
+    e_add_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x20,0x05]
+
+    e_add_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x51,0x0f]
+
+    e_add_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x71,0x1f]
+
+    e_add_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x0a]
+
+    e_add_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x00,0x00]
+
+    e_add_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x20,0x05]
+
+    e_add_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x51,0x0f]
+
+    e_add_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x71,0x1f]
+
+    e_add_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x10,0x0a]
+
+    e_add_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x00,0x00]
+
+    e_add_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x20,0x05]
+
+    e_add_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x51,0x0f]
+
+    e_add_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x71,0x1f]
+
+    e_add_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x10,0x0a]
+
+    e_add_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x00,0x00]
+
+    e_add_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x00,0x00]
+
+    e_add_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x20,0x05]
+
+    e_add_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x51,0x0f]
+
+    e_add_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x71,0x1f]
+
+    e_add_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x0a]
+
+    e_add_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x00,0x00]
+
+    e_add_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x20,0x05]
+
+    e_add_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x51,0x0f]
+
+    e_add_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x71,0x1f]
+
+    e_add_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x10,0x0a]
+
+    e_add_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x00,0x00]
+
+    e_add_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x20,0x05]
+
+    e_add_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x51,0x0f]
+
+    e_add_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x71,0x1f]
+
+    e_add_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x10,0x0a]
+
+    e_add_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x00,0x00]
+
+    e_addn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x00]
+
+    e_addn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x05]
+
+    e_addn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x0f]
+
+    e_addn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x1f]
+
+    e_addn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x0a]
+
+    e_addn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x00]
+
+    e_addn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x05]
+
+    e_addn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x0f]
+
+    e_addn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x1f]
+
+    e_addn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x0a]
+
+    e_addn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x00]
+
+    e_addn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x05]
+
+    e_addn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x0f]
+
+    e_addn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x1f]
+
+    e_addn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x0a]
+
+    e_addn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x00]
+
+    e_addn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x00]
+
+    e_addn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x05]
+
+    e_addn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x0f]
+
+    e_addn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x1f]
+
+    e_addn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x0a]
+
+    e_addn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x00]
+
+    e_addn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x05]
+
+    e_addn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x0f]
+
+    e_addn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x1f]
+
+    e_addn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x0a]
+
+    e_addn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x00]
+
+    e_addn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x05]
+
+    e_addn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x0f]
+
+    e_addn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x1f]
+
+    e_addn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x0a]
+
+    e_addn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x00]
+
+    e_addn_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x08,0x00]
+
+    e_addn_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x28,0x05]
+
+    e_addn_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x59,0x0f]
+
+    e_addn_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x79,0x1f]
+
+    e_addn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x0a]
+
+    e_addn_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x08,0x00]
+
+    e_addn_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x28,0x05]
+
+    e_addn_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x59,0x0f]
+
+    e_addn_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x79,0x1f]
+
+    e_addn_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x18,0x0a]
+
+    e_addn_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x08,0x00]
+
+    e_addn_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x28,0x05]
+
+    e_addn_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x59,0x0f]
+
+    e_addn_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x79,0x1f]
+
+    e_addn_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x18,0x0a]
+
+    e_addn_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x08,0x00]
+
+    e_addn_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x08,0x00]
+
+    e_addn_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x28,0x05]
+
+    e_addn_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x59,0x0f]
+
+    e_addn_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x79,0x1f]
+
+    e_addn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x0a]
+
+    e_addn_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x08,0x00]
+
+    e_addn_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x28,0x05]
+
+    e_addn_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x59,0x0f]
+
+    e_addn_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x79,0x1f]
+
+    e_addn_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x18,0x0a]
+
+    e_addn_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x08,0x00]
+
+    e_addn_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x28,0x05]
+
+    e_addn_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x59,0x0f]
+
+    e_addn_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x79,0x1f]
+
+    e_addn_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x18,0x0a]
+
+    e_addn_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x08,0x00]
+
+    e_add_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x40]
+
+    e_add_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x45]
+
+    e_add_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x4f]
+
+    e_add_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x5f]
+
+    e_add_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x4a]
+
+    e_add_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x40]
+
+    e_add_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x45]
+
+    e_add_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x4f]
+
+    e_add_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x5f]
+
+    e_add_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x4a]
+
+    e_add_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x40]
+
+    e_add_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x45]
+
+    e_add_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x4f]
+
+    e_add_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x5f]
+
+    e_add_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x4a]
+
+    e_add_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x40]
+
+    e_add_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x40]
+
+    e_add_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x45]
+
+    e_add_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x4f]
+
+    e_add_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x5f]
+
+    e_add_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x4a]
+
+    e_add_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x40]
+
+    e_add_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x45]
+
+    e_add_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x4f]
+
+    e_add_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x5f]
+
+    e_add_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x4a]
+
+    e_add_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x40]
+
+    e_add_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x45]
+
+    e_add_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x4f]
+
+    e_add_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x5f]
+
+    e_add_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x4a]
+
+    e_add_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x40]
+
+    e_add_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x00,0x40]
+
+    e_add_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x20,0x45]
+
+    e_add_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x51,0x4f]
+
+    e_add_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x71,0x5f]
+
+    e_add_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x4a]
+
+    e_add_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x00,0x40]
+
+    e_add_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x20,0x45]
+
+    e_add_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x51,0x4f]
+
+    e_add_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x71,0x5f]
+
+    e_add_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x10,0x4a]
+
+    e_add_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x00,0x40]
+
+    e_add_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x20,0x45]
+
+    e_add_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x51,0x4f]
+
+    e_add_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x71,0x5f]
+
+    e_add_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x10,0x4a]
+
+    e_add_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x00,0x40]
+
+    e_add_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x00,0x40]
+
+    e_add_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x20,0x45]
+
+    e_add_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x51,0x4f]
+
+    e_add_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x71,0x5f]
+
+    e_add_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x4a]
+
+    e_add_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x00,0x40]
+
+    e_add_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x20,0x45]
+
+    e_add_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x51,0x4f]
+
+    e_add_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x71,0x5f]
+
+    e_add_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x10,0x4a]
+
+    e_add_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x00,0x40]
+
+    e_add_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x20,0x45]
+
+    e_add_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x51,0x4f]
+
+    e_add_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x71,0x5f]
+
+    e_add_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x10,0x4a]
+
+    e_add_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x00,0x40]
+
+    e_addn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x40]
+
+    e_addn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x45]
+
+    e_addn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x4f]
+
+    e_addn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x5f]
+
+    e_addn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x4a]
+
+    e_addn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x40]
+
+    e_addn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x45]
+
+    e_addn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x4f]
+
+    e_addn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x5f]
+
+    e_addn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x4a]
+
+    e_addn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x40]
+
+    e_addn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x45]
+
+    e_addn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x4f]
+
+    e_addn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x5f]
+
+    e_addn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x4a]
+
+    e_addn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x40]
+
+    e_addn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x40]
+
+    e_addn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x45]
+
+    e_addn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x4f]
+
+    e_addn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x5f]
+
+    e_addn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x4a]
+
+    e_addn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x40]
+
+    e_addn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x45]
+
+    e_addn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x4f]
+
+    e_addn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x5f]
+
+    e_addn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x4a]
+
+    e_addn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x40]
+
+    e_addn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x45]
+
+    e_addn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x4f]
+
+    e_addn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x5f]
+
+    e_addn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x4a]
+
+    e_addn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x40]
+
+    e_addn_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x08,0x40]
+
+    e_addn_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x28,0x45]
+
+    e_addn_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x59,0x4f]
+
+    e_addn_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x79,0x5f]
+
+    e_addn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x4a]
+
+    e_addn_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x08,0x40]
+
+    e_addn_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x28,0x45]
+
+    e_addn_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x59,0x4f]
+
+    e_addn_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x79,0x5f]
+
+    e_addn_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x18,0x4a]
+
+    e_addn_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x08,0x40]
+
+    e_addn_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x28,0x45]
+
+    e_addn_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x59,0x4f]
+
+    e_addn_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x79,0x5f]
+
+    e_addn_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x18,0x4a]
+
+    e_addn_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x08,0x40]
+
+    e_addn_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x08,0x40]
+
+    e_addn_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x28,0x45]
+
+    e_addn_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x59,0x4f]
+
+    e_addn_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x79,0x5f]
+
+    e_addn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x4a]
+
+    e_addn_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x08,0x40]
+
+    e_addn_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x28,0x45]
+
+    e_addn_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x59,0x4f]
+
+    e_addn_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x79,0x5f]
+
+    e_addn_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x18,0x4a]
+
+    e_addn_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x08,0x40]
+
+    e_addn_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x28,0x45]
+
+    e_addn_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x59,0x4f]
+
+    e_addn_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x79,0x5f]
+
+    e_addn_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x18,0x4a]
+
+    e_addn_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x08,0x40]
+
+    e_add_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x20]
+
+    e_add_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x25]
+
+    e_add_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x2f]
+
+    e_add_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x3f]
+
+    e_add_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x2a]
+
+    e_add_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x20]
+
+    e_add_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x25]
+
+    e_add_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x2f]
+
+    e_add_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x3f]
+
+    e_add_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x2a]
+
+    e_add_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x20]
+
+    e_add_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x25]
+
+    e_add_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x2f]
+
+    e_add_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x3f]
+
+    e_add_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x2a]
+
+    e_add_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x20]
+
+    e_add_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x20]
+
+    e_add_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x25]
+
+    e_add_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x2f]
+
+    e_add_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x3f]
+
+    e_add_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x2a]
+
+    e_add_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x20]
+
+    e_add_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x25]
+
+    e_add_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x2f]
+
+    e_add_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x3f]
+
+    e_add_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x2a]
+
+    e_add_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x20]
+
+    e_add_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x25]
+
+    e_add_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x2f]
+
+    e_add_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x3f]
+
+    e_add_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x2a]
+
+    e_add_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x20]
+
+    e_add_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x00,0x20]
+
+    e_add_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x20,0x25]
+
+    e_add_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x51,0x2f]
+
+    e_add_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x71,0x3f]
+
+    e_add_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x2a]
+
+    e_add_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x00,0x20]
+
+    e_add_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x20,0x25]
+
+    e_add_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x51,0x2f]
+
+    e_add_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x71,0x3f]
+
+    e_add_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x10,0x2a]
+
+    e_add_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x00,0x20]
+
+    e_add_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x20,0x25]
+
+    e_add_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x51,0x2f]
+
+    e_add_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x71,0x3f]
+
+    e_add_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x10,0x2a]
+
+    e_add_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x00,0x20]
+
+    e_add_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x00,0x20]
+
+    e_add_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x20,0x25]
+
+    e_add_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x51,0x2f]
+
+    e_add_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x71,0x3f]
+
+    e_add_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x2a]
+
+    e_add_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x00,0x20]
+
+    e_add_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x20,0x25]
+
+    e_add_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x51,0x2f]
+
+    e_add_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x71,0x3f]
+
+    e_add_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x10,0x2a]
+
+    e_add_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x00,0x20]
+
+    e_add_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x20,0x25]
+
+    e_add_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x51,0x2f]
+
+    e_add_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x71,0x3f]
+
+    e_add_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x10,0x2a]
+
+    e_add_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x00,0x20]
+
+    e_addn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x20]
+
+    e_addn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x25]
+
+    e_addn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x2f]
+
+    e_addn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x3f]
+
+    e_addn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x2a]
+
+    e_addn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x20]
+
+    e_addn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x25]
+
+    e_addn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x2f]
+
+    e_addn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x3f]
+
+    e_addn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x2a]
+
+    e_addn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x20]
+
+    e_addn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x25]
+
+    e_addn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x2f]
+
+    e_addn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x3f]
+
+    e_addn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x2a]
+
+    e_addn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x20]
+
+    e_addn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x20]
+
+    e_addn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x25]
+
+    e_addn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x2f]
+
+    e_addn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x3f]
+
+    e_addn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x2a]
+
+    e_addn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x20]
+
+    e_addn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x25]
+
+    e_addn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x2f]
+
+    e_addn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x3f]
+
+    e_addn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x2a]
+
+    e_addn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x20]
+
+    e_addn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x25]
+
+    e_addn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x2f]
+
+    e_addn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x3f]
+
+    e_addn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x2a]
+
+    e_addn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x20]
+
+    e_addn_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x08,0x20]
+
+    e_addn_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x28,0x25]
+
+    e_addn_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x59,0x2f]
+
+    e_addn_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x79,0x3f]
+
+    e_addn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x2a]
+
+    e_addn_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x08,0x20]
+
+    e_addn_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x28,0x25]
+
+    e_addn_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x59,0x2f]
+
+    e_addn_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x79,0x3f]
+
+    e_addn_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x18,0x2a]
+
+    e_addn_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x08,0x20]
+
+    e_addn_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x28,0x25]
+
+    e_addn_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x59,0x2f]
+
+    e_addn_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x79,0x3f]
+
+    e_addn_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x18,0x2a]
+
+    e_addn_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x08,0x20]
+
+    e_addn_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x08,0x20]
+
+    e_addn_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x28,0x25]
+
+    e_addn_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x59,0x2f]
+
+    e_addn_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x79,0x3f]
+
+    e_addn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x2a]
+
+    e_addn_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x08,0x20]
+
+    e_addn_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x28,0x25]
+
+    e_addn_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x59,0x2f]
+
+    e_addn_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x79,0x3f]
+
+    e_addn_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x18,0x2a]
+
+    e_addn_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x08,0x20]
+
+    e_addn_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x28,0x25]
+
+    e_addn_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x59,0x2f]
+
+    e_addn_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x79,0x3f]
+
+    e_addn_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x18,0x2a]
+
+    e_addn_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x08,0x20]
+
+    e_add_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x60]
+
+    e_add_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x65]
+
+    e_add_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x6f]
+
+    e_add_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x7f]
+
+    e_add_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x6a]
+
+    e_add_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x60]
+
+    e_add_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x65]
+
+    e_add_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x6f]
+
+    e_add_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x7f]
+
+    e_add_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x6a]
+
+    e_add_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x60]
+
+    e_add_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x65]
+
+    e_add_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x6f]
+
+    e_add_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x7f]
+
+    e_add_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x6a]
+
+    e_add_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x60]
+
+    e_add_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x60]
+
+    e_add_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x65]
+
+    e_add_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x6f]
+
+    e_add_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x7f]
+
+    e_add_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x6a]
+
+    e_add_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x60]
+
+    e_add_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x65]
+
+    e_add_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x6f]
+
+    e_add_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x7f]
+
+    e_add_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x6a]
+
+    e_add_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x60]
+
+    e_add_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x65]
+
+    e_add_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x6f]
+
+    e_add_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x7f]
+
+    e_add_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x6a]
+
+    e_add_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x60]
+
+    e_add_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x00,0x60]
+
+    e_add_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x20,0x65]
+
+    e_add_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x51,0x6f]
+
+    e_add_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x71,0x7f]
+
+    e_add_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x6a]
+
+    e_add_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x00,0x60]
+
+    e_add_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x20,0x65]
+
+    e_add_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x51,0x6f]
+
+    e_add_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x71,0x7f]
+
+    e_add_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x10,0x6a]
+
+    e_add_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x00,0x60]
+
+    e_add_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x20,0x65]
+
+    e_add_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x51,0x6f]
+
+    e_add_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x71,0x7f]
+
+    e_add_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x10,0x6a]
+
+    e_add_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x00,0x60]
+
+    e_add_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x00,0x60]
+
+    e_add_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x20,0x65]
+
+    e_add_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x51,0x6f]
+
+    e_add_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x71,0x7f]
+
+    e_add_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x6a]
+
+    e_add_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x00,0x60]
+
+    e_add_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x20,0x65]
+
+    e_add_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x51,0x6f]
+
+    e_add_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x71,0x7f]
+
+    e_add_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x10,0x6a]
+
+    e_add_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x00,0x60]
+
+    e_add_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x20,0x65]
+
+    e_add_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x51,0x6f]
+
+    e_add_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x71,0x7f]
+
+    e_add_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x10,0x6a]
+
+    e_add_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x00,0x60]
+
+    e_addn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x60]
+
+    e_addn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x65]
+
+    e_addn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x6f]
+
+    e_addn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x7f]
+
+    e_addn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x6a]
+
+    e_addn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x60]
+
+    e_addn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x65]
+
+    e_addn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x6f]
+
+    e_addn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x7f]
+
+    e_addn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x6a]
+
+    e_addn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x60]
+
+    e_addn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x65]
+
+    e_addn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x6f]
+
+    e_addn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x7f]
+
+    e_addn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x6a]
+
+    e_addn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x60]
+
+    e_addn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x60]
+
+    e_addn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x65]
+
+    e_addn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x6f]
+
+    e_addn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x7f]
+
+    e_addn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x6a]
+
+    e_addn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x60]
+
+    e_addn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x65]
+
+    e_addn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x6f]
+
+    e_addn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x7f]
+
+    e_addn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x6a]
+
+    e_addn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x60]
+
+    e_addn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x65]
+
+    e_addn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x6f]
+
+    e_addn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x7f]
+
+    e_addn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x6a]
+
+    e_addn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x60]
+
+    e_addn_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x08,0x60]
+
+    e_addn_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x28,0x65]
+
+    e_addn_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x59,0x6f]
+
+    e_addn_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x79,0x7f]
+
+    e_addn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x6a]
+
+    e_addn_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x08,0x60]
+
+    e_addn_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x28,0x65]
+
+    e_addn_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x59,0x6f]
+
+    e_addn_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x79,0x7f]
+
+    e_addn_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x18,0x6a]
+
+    e_addn_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x08,0x60]
+
+    e_addn_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x28,0x65]
+
+    e_addn_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x59,0x6f]
+
+    e_addn_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x79,0x7f]
+
+    e_addn_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x18,0x6a]
+
+    e_addn_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x08,0x60]
+
+    e_addn_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x08,0x60]
+
+    e_addn_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x28,0x65]
+
+    e_addn_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x59,0x6f]
+
+    e_addn_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x79,0x7f]
+
+    e_addn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x6a]
+
+    e_addn_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x08,0x60]
+
+    e_addn_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x28,0x65]
+
+    e_addn_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x59,0x6f]
+
+    e_addn_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x79,0x7f]
+
+    e_addn_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x18,0x6a]
+
+    e_addn_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x08,0x60]
+
+    e_addn_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x28,0x65]
+
+    e_addn_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x59,0x6f]
+
+    e_addn_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x79,0x7f]
+
+    e_addn_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x18,0x6a]
+
+    e_addn_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x08,0x60]
+
+    e_add_f r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x00,0x80]
+
+    e_add_f r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x20,0x80]
+
+    e_add_f r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x51,0x80]
+
+    e_add_f r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x71,0x80]
+
+    e_add_f r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x10,0x80]
+
+    e_add_f r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x00,0x80]
+
+    e_add_f r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x20,0x80]
+
+    e_add_f r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x51,0x80]
+
+    e_add_f r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x71,0x80]
+
+    e_add_f r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x10,0x80]
+
+    e_add_f r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x00,0x80]
+
+    e_add_f r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x20,0x80]
+
+    e_add_f r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x51,0x80]
+
+    e_add_f r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x71,0x80]
+
+    e_add_f r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x10,0x80]
+
+    e_add_f r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x00,0x80]
+
+    e_add_fs r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x00,0x80]
+
+    e_add_fs r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x20,0x80]
+
+    e_add_fs r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x51,0x80]
+
+    e_add_fs r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x71,0x80]
+
+    e_add_fs r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x10,0x80]
+
+    e_add_fs r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x00,0x80]
+
+    e_add_fs r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x20,0x80]
+
+    e_add_fs r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x51,0x80]
+
+    e_add_fs r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x71,0x80]
+
+    e_add_fs r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x10,0x80]
+
+    e_add_fs r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x00,0x80]
+
+    e_add_fs r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x20,0x80]
+
+    e_add_fs r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x51,0x80]
+
+    e_add_fs r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x71,0x80]
+
+    e_add_fs r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x10,0x80]
+
+    e_add_fs r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x00,0x80]
+
+    e_add_f_ze r0, r0, r0
+# CHECK: encoding: [0x26,0x00,0x00,0x80]
+
+    e_add_f_nz r2, r2, r2
+# CHECK: encoding: [0x46,0x88,0x20,0x80]
+
+    e_add_f_po r5, r5, r5
+# CHECK: encoding: [0x66,0x54,0x51,0x80]
+
+    e_add_f_ne r7, r7, r7
+# CHECK: encoding: [0x86,0xdc,0x71,0x80]
+
+    e_add_f r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x10,0x80]
+
+    e_add_f_az r0, r0, r0
+# CHECK: encoding: [0xa6,0x00,0x00,0x80]
+
+    e_add_f_zb r2, r2, r2
+# CHECK: encoding: [0xc6,0x88,0x20,0x80]
+
+    e_add_f_ca r5, r5, r5
+# CHECK: encoding: [0xe6,0x54,0x51,0x80]
+
+    e_add_f_nc r7, r7, r7
+# CHECK: encoding: [0x06,0xdd,0x71,0x80]
+
+    e_add_f_cz r1, r1, r1
+# CHECK: encoding: [0x26,0x45,0x10,0x80]
+
+    e_add_f_spo r0, r0, r0
+# CHECK: encoding: [0x46,0x01,0x00,0x80]
+
+    e_add_f_sne r2, r2, r2
+# CHECK: encoding: [0x66,0x89,0x20,0x80]
+
+    e_add_f_nbs r5, r5, r5
+# CHECK: encoding: [0x86,0x55,0x51,0x80]
+
+    e_add_f_nex r7, r7, r7
+# CHECK: encoding: [0xa6,0xdd,0x71,0x80]
+
+    e_add_f_bs r1, r1, r1
+# CHECK: encoding: [0xc6,0x45,0x10,0x80]
+
+    e_add_f_ex r0, r0, r0
+# CHECK: encoding: [0xe6,0x01,0x00,0x80]
+
+    e_add_fs_ze r0, r0, r0
+# CHECK: encoding: [0x26,0x02,0x00,0x80]
+
+    e_add_fs_nz r2, r2, r2
+# CHECK: encoding: [0x46,0x8a,0x20,0x80]
+
+    e_add_fs_po r5, r5, r5
+# CHECK: encoding: [0x66,0x56,0x51,0x80]
+
+    e_add_fs_ne r7, r7, r7
+# CHECK: encoding: [0x86,0xde,0x71,0x80]
+
+    e_add_fs r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x10,0x80]
+
+    e_add_fs_az r0, r0, r0
+# CHECK: encoding: [0xa6,0x02,0x00,0x80]
+
+    e_add_fs_zb r2, r2, r2
+# CHECK: encoding: [0xc6,0x8a,0x20,0x80]
+
+    e_add_fs_ca r5, r5, r5
+# CHECK: encoding: [0xe6,0x56,0x51,0x80]
+
+    e_add_fs_nc r7, r7, r7
+# CHECK: encoding: [0x06,0xdf,0x71,0x80]
+
+    e_add_fs_cz r1, r1, r1
+# CHECK: encoding: [0x26,0x47,0x10,0x80]
+
+    e_add_fs_spo r0, r0, r0
+# CHECK: encoding: [0x46,0x03,0x00,0x80]
+
+    e_add_fs_sne r2, r2, r2
+# CHECK: encoding: [0x66,0x8b,0x20,0x80]
+
+    e_add_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x86,0x57,0x51,0x80]
+
+    e_add_fs_nex r7, r7, r7
+# CHECK: encoding: [0xa6,0xdf,0x71,0x80]
+
+    e_add_fs_bs r1, r1, r1
+# CHECK: encoding: [0xc6,0x47,0x10,0x80]
+
+    e_add_fs_ex r0, r0, r0
+# CHECK: encoding: [0xe6,0x03,0x00,0x80]
+
+    e_addn_f r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x08,0x80]
+
+    e_addn_f r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x28,0x80]
+
+    e_addn_f r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x59,0x80]
+
+    e_addn_f r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x79,0x80]
+
+    e_addn_f r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x18,0x80]
+
+    e_addn_f r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x08,0x80]
+
+    e_addn_f r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x28,0x80]
+
+    e_addn_f r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x59,0x80]
+
+    e_addn_f r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x79,0x80]
+
+    e_addn_f r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x18,0x80]
+
+    e_addn_f r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x08,0x80]
+
+    e_addn_f r2, r2, r2
+# CHECK: encoding: [0x06,0x88,0x28,0x80]
+
+    e_addn_f r5, r5, r5
+# CHECK: encoding: [0x06,0x54,0x59,0x80]
+
+    e_addn_f r7, r7, r7
+# CHECK: encoding: [0x06,0xdc,0x79,0x80]
+
+    e_addn_f r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x18,0x80]
+
+    e_addn_f r0, r0, r0
+# CHECK: encoding: [0x06,0x00,0x08,0x80]
+
+    e_addn_fs r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x08,0x80]
+
+    e_addn_fs r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x28,0x80]
+
+    e_addn_fs r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x59,0x80]
+
+    e_addn_fs r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x79,0x80]
+
+    e_addn_fs r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x18,0x80]
+
+    e_addn_fs r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x08,0x80]
+
+    e_addn_fs r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x28,0x80]
+
+    e_addn_fs r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x59,0x80]
+
+    e_addn_fs r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x79,0x80]
+
+    e_addn_fs r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x18,0x80]
+
+    e_addn_fs r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x08,0x80]
+
+    e_addn_fs r2, r2, r2
+# CHECK: encoding: [0x06,0x8a,0x28,0x80]
+
+    e_addn_fs r5, r5, r5
+# CHECK: encoding: [0x06,0x56,0x59,0x80]
+
+    e_addn_fs r7, r7, r7
+# CHECK: encoding: [0x06,0xde,0x79,0x80]
+
+    e_addn_fs r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x18,0x80]
+
+    e_addn_fs r0, r0, r0
+# CHECK: encoding: [0x06,0x02,0x08,0x80]
+
+    e_addn_f_ze r0, r0, r0
+# CHECK: encoding: [0x26,0x00,0x08,0x80]
+
+    e_addn_f_nz r2, r2, r2
+# CHECK: encoding: [0x46,0x88,0x28,0x80]
+
+    e_addn_f_po r5, r5, r5
+# CHECK: encoding: [0x66,0x54,0x59,0x80]
+
+    e_addn_f_ne r7, r7, r7
+# CHECK: encoding: [0x86,0xdc,0x79,0x80]
+
+    e_addn_f r1, r1, r1
+# CHECK: encoding: [0x06,0x44,0x18,0x80]
+
+    e_addn_f_az r0, r0, r0
+# CHECK: encoding: [0xa6,0x00,0x08,0x80]
+
+    e_addn_f_zb r2, r2, r2
+# CHECK: encoding: [0xc6,0x88,0x28,0x80]
+
+    e_addn_f_ca r5, r5, r5
+# CHECK: encoding: [0xe6,0x54,0x59,0x80]
+
+    e_addn_f_nc r7, r7, r7
+# CHECK: encoding: [0x06,0xdd,0x79,0x80]
+
+    e_addn_f_cz r1, r1, r1
+# CHECK: encoding: [0x26,0x45,0x18,0x80]
+
+    e_addn_f_spo r0, r0, r0
+# CHECK: encoding: [0x46,0x01,0x08,0x80]
+
+    e_addn_f_sne r2, r2, r2
+# CHECK: encoding: [0x66,0x89,0x28,0x80]
+
+    e_addn_f_nbs r5, r5, r5
+# CHECK: encoding: [0x86,0x55,0x59,0x80]
+
+    e_addn_f_nex r7, r7, r7
+# CHECK: encoding: [0xa6,0xdd,0x79,0x80]
+
+    e_addn_f_bs r1, r1, r1
+# CHECK: encoding: [0xc6,0x45,0x18,0x80]
+
+    e_addn_f_ex r0, r0, r0
+# CHECK: encoding: [0xe6,0x01,0x08,0x80]
+
+    e_addn_fs_ze r0, r0, r0
+# CHECK: encoding: [0x26,0x02,0x08,0x80]
+
+    e_addn_fs_nz r2, r2, r2
+# CHECK: encoding: [0x46,0x8a,0x28,0x80]
+
+    e_addn_fs_po r5, r5, r5
+# CHECK: encoding: [0x66,0x56,0x59,0x80]
+
+    e_addn_fs_ne r7, r7, r7
+# CHECK: encoding: [0x86,0xde,0x79,0x80]
+
+    e_addn_fs r1, r1, r1
+# CHECK: encoding: [0x06,0x46,0x18,0x80]
+
+    e_addn_fs_az r0, r0, r0
+# CHECK: encoding: [0xa6,0x02,0x08,0x80]
+
+    e_addn_fs_zb r2, r2, r2
+# CHECK: encoding: [0xc6,0x8a,0x28,0x80]
+
+    e_addn_fs_ca r5, r5, r5
+# CHECK: encoding: [0xe6,0x56,0x59,0x80]
+
+    e_addn_fs_nc r7, r7, r7
+# CHECK: encoding: [0x06,0xdf,0x79,0x80]
+
+    e_addn_fs_cz r1, r1, r1
+# CHECK: encoding: [0x26,0x47,0x18,0x80]
+
+    e_addn_fs_spo r0, r0, r0
+# CHECK: encoding: [0x46,0x03,0x08,0x80]
+
+    e_addn_fs_sne r2, r2, r2
+# CHECK: encoding: [0x66,0x8b,0x28,0x80]
+
+    e_addn_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x86,0x57,0x59,0x80]
+
+    e_addn_fs_nex r7, r7, r7
+# CHECK: encoding: [0xa6,0xdf,0x79,0x80]
+
+    e_addn_fs_bs r1, r1, r1
+# CHECK: encoding: [0xc6,0x47,0x18,0x80]
+
+    e_addn_fs_ex r0, r0, r0
+# CHECK: encoding: [0xe6,0x03,0x08,0x80]
+
+    e_add_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x80]
+
+    e_add_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x85]
+
+    e_add_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x8f]
+
+    e_add_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x9f]
+
+    e_add_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x8a]
+
+    e_add_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x80]
+
+    e_add_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x85]
+
+    e_add_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x8f]
+
+    e_add_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x9f]
+
+    e_add_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x8a]
+
+    e_add_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x80]
+
+    e_add_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0x85]
+
+    e_add_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0x8f]
+
+    e_add_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0x9f]
+
+    e_add_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x8a]
+
+    e_add_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0x80]
+
+    e_add_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x80]
+
+    e_add_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x85]
+
+    e_add_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x8f]
+
+    e_add_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x9f]
+
+    e_add_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x8a]
+
+    e_add_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x80]
+
+    e_add_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x85]
+
+    e_add_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x8f]
+
+    e_add_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x9f]
+
+    e_add_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x8a]
+
+    e_add_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x80]
+
+    e_add_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0x85]
+
+    e_add_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0x8f]
+
+    e_add_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0x9f]
+
+    e_add_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x8a]
+
+    e_add_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0x80]
+
+    e_add_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x00,0x80]
+
+    e_add_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x20,0x85]
+
+    e_add_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x51,0x8f]
+
+    e_add_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x71,0x9f]
+
+    e_add_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0x8a]
+
+    e_add_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x00,0x80]
+
+    e_add_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x20,0x85]
+
+    e_add_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x51,0x8f]
+
+    e_add_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x71,0x9f]
+
+    e_add_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x10,0x8a]
+
+    e_add_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x00,0x80]
+
+    e_add_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x20,0x85]
+
+    e_add_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x51,0x8f]
+
+    e_add_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x71,0x9f]
+
+    e_add_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x10,0x8a]
+
+    e_add_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x00,0x80]
+
+    e_add_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x00,0x80]
+
+    e_add_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x20,0x85]
+
+    e_add_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x51,0x8f]
+
+    e_add_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x71,0x9f]
+
+    e_add_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0x8a]
+
+    e_add_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x00,0x80]
+
+    e_add_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x20,0x85]
+
+    e_add_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x51,0x8f]
+
+    e_add_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x71,0x9f]
+
+    e_add_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x10,0x8a]
+
+    e_add_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x00,0x80]
+
+    e_add_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x20,0x85]
+
+    e_add_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x51,0x8f]
+
+    e_add_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x71,0x9f]
+
+    e_add_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x10,0x8a]
+
+    e_add_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x00,0x80]
+
+    e_addn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x80]
+
+    e_addn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x85]
+
+    e_addn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x8f]
+
+    e_addn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x9f]
+
+    e_addn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x8a]
+
+    e_addn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x80]
+
+    e_addn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x85]
+
+    e_addn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x8f]
+
+    e_addn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x9f]
+
+    e_addn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x8a]
+
+    e_addn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x80]
+
+    e_addn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0x85]
+
+    e_addn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0x8f]
+
+    e_addn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0x9f]
+
+    e_addn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x8a]
+
+    e_addn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0x80]
+
+    e_addn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x80]
+
+    e_addn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x85]
+
+    e_addn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x8f]
+
+    e_addn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x9f]
+
+    e_addn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x8a]
+
+    e_addn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x80]
+
+    e_addn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x85]
+
+    e_addn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x8f]
+
+    e_addn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x9f]
+
+    e_addn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x8a]
+
+    e_addn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x80]
+
+    e_addn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0x85]
+
+    e_addn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0x8f]
+
+    e_addn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0x9f]
+
+    e_addn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x8a]
+
+    e_addn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0x80]
+
+    e_addn_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x08,0x80]
+
+    e_addn_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x28,0x85]
+
+    e_addn_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x59,0x8f]
+
+    e_addn_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x79,0x9f]
+
+    e_addn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0x8a]
+
+    e_addn_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x08,0x80]
+
+    e_addn_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x28,0x85]
+
+    e_addn_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x59,0x8f]
+
+    e_addn_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x79,0x9f]
+
+    e_addn_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x18,0x8a]
+
+    e_addn_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x08,0x80]
+
+    e_addn_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x28,0x85]
+
+    e_addn_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x59,0x8f]
+
+    e_addn_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x79,0x9f]
+
+    e_addn_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x18,0x8a]
+
+    e_addn_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x08,0x80]
+
+    e_addn_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x08,0x80]
+
+    e_addn_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x28,0x85]
+
+    e_addn_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x59,0x8f]
+
+    e_addn_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x79,0x9f]
+
+    e_addn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0x8a]
+
+    e_addn_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x08,0x80]
+
+    e_addn_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x28,0x85]
+
+    e_addn_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x59,0x8f]
+
+    e_addn_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x79,0x9f]
+
+    e_addn_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x18,0x8a]
+
+    e_addn_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x08,0x80]
+
+    e_addn_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x28,0x85]
+
+    e_addn_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x59,0x8f]
+
+    e_addn_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x79,0x9f]
+
+    e_addn_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x18,0x8a]
+
+    e_addn_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x08,0x80]
+
+    e_add_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xc0]
+
+    e_add_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xc5]
+
+    e_add_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xcf]
+
+    e_add_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xdf]
+
+    e_add_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xca]
+
+    e_add_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xc0]
+
+    e_add_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xc5]
+
+    e_add_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xcf]
+
+    e_add_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xdf]
+
+    e_add_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xca]
+
+    e_add_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xc0]
+
+    e_add_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xc5]
+
+    e_add_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xcf]
+
+    e_add_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xdf]
+
+    e_add_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xca]
+
+    e_add_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xc0]
+
+    e_add_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xc0]
+
+    e_add_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xc5]
+
+    e_add_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xcf]
+
+    e_add_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xdf]
+
+    e_add_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xca]
+
+    e_add_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xc0]
+
+    e_add_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xc5]
+
+    e_add_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xcf]
+
+    e_add_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xdf]
+
+    e_add_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xca]
+
+    e_add_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xc0]
+
+    e_add_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xc5]
+
+    e_add_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xcf]
+
+    e_add_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xdf]
+
+    e_add_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xca]
+
+    e_add_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xc0]
+
+    e_add_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x00,0xc0]
+
+    e_add_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x20,0xc5]
+
+    e_add_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x51,0xcf]
+
+    e_add_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x71,0xdf]
+
+    e_add_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xca]
+
+    e_add_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x00,0xc0]
+
+    e_add_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x20,0xc5]
+
+    e_add_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x51,0xcf]
+
+    e_add_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x71,0xdf]
+
+    e_add_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x10,0xca]
+
+    e_add_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x00,0xc0]
+
+    e_add_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x20,0xc5]
+
+    e_add_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x51,0xcf]
+
+    e_add_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x71,0xdf]
+
+    e_add_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x10,0xca]
+
+    e_add_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x00,0xc0]
+
+    e_add_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x00,0xc0]
+
+    e_add_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x20,0xc5]
+
+    e_add_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x51,0xcf]
+
+    e_add_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x71,0xdf]
+
+    e_add_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xca]
+
+    e_add_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x00,0xc0]
+
+    e_add_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x20,0xc5]
+
+    e_add_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x51,0xcf]
+
+    e_add_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x71,0xdf]
+
+    e_add_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x10,0xca]
+
+    e_add_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x00,0xc0]
+
+    e_add_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x20,0xc5]
+
+    e_add_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x51,0xcf]
+
+    e_add_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x71,0xdf]
+
+    e_add_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x10,0xca]
+
+    e_add_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x00,0xc0]
+
+    e_addn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xc0]
+
+    e_addn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xc5]
+
+    e_addn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xcf]
+
+    e_addn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xdf]
+
+    e_addn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xca]
+
+    e_addn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xc0]
+
+    e_addn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xc5]
+
+    e_addn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xcf]
+
+    e_addn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xdf]
+
+    e_addn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xca]
+
+    e_addn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xc0]
+
+    e_addn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xc5]
+
+    e_addn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xcf]
+
+    e_addn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xdf]
+
+    e_addn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xca]
+
+    e_addn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xc0]
+
+    e_addn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xc0]
+
+    e_addn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xc5]
+
+    e_addn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xcf]
+
+    e_addn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xdf]
+
+    e_addn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xca]
+
+    e_addn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xc0]
+
+    e_addn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xc5]
+
+    e_addn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xcf]
+
+    e_addn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xdf]
+
+    e_addn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xca]
+
+    e_addn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xc0]
+
+    e_addn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xc5]
+
+    e_addn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xcf]
+
+    e_addn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xdf]
+
+    e_addn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xca]
+
+    e_addn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xc0]
+
+    e_addn_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x08,0xc0]
+
+    e_addn_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x28,0xc5]
+
+    e_addn_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x59,0xcf]
+
+    e_addn_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x79,0xdf]
+
+    e_addn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xca]
+
+    e_addn_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x08,0xc0]
+
+    e_addn_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x28,0xc5]
+
+    e_addn_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x59,0xcf]
+
+    e_addn_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x79,0xdf]
+
+    e_addn_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x18,0xca]
+
+    e_addn_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x08,0xc0]
+
+    e_addn_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x28,0xc5]
+
+    e_addn_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x59,0xcf]
+
+    e_addn_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x79,0xdf]
+
+    e_addn_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x18,0xca]
+
+    e_addn_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x08,0xc0]
+
+    e_addn_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x08,0xc0]
+
+    e_addn_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x28,0xc5]
+
+    e_addn_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x59,0xcf]
+
+    e_addn_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x79,0xdf]
+
+    e_addn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xca]
+
+    e_addn_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x08,0xc0]
+
+    e_addn_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x28,0xc5]
+
+    e_addn_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x59,0xcf]
+
+    e_addn_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x79,0xdf]
+
+    e_addn_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x18,0xca]
+
+    e_addn_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x08,0xc0]
+
+    e_addn_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x28,0xc5]
+
+    e_addn_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x59,0xcf]
+
+    e_addn_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x79,0xdf]
+
+    e_addn_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x18,0xca]
+
+    e_addn_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x08,0xc0]
+
+    e_add_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xa0]
+
+    e_add_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xa5]
+
+    e_add_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xaf]
+
+    e_add_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xbf]
+
+    e_add_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xaa]
+
+    e_add_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xa0]
+
+    e_add_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xa5]
+
+    e_add_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xaf]
+
+    e_add_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xbf]
+
+    e_add_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xaa]
+
+    e_add_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xa0]
+
+    e_add_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xa5]
+
+    e_add_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xaf]
+
+    e_add_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xbf]
+
+    e_add_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xaa]
+
+    e_add_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xa0]
+
+    e_add_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xa0]
+
+    e_add_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xa5]
+
+    e_add_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xaf]
+
+    e_add_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xbf]
+
+    e_add_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xaa]
+
+    e_add_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xa0]
+
+    e_add_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xa5]
+
+    e_add_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xaf]
+
+    e_add_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xbf]
+
+    e_add_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xaa]
+
+    e_add_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xa0]
+
+    e_add_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xa5]
+
+    e_add_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xaf]
+
+    e_add_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xbf]
+
+    e_add_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xaa]
+
+    e_add_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xa0]
+
+    e_add_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x00,0xa0]
+
+    e_add_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x20,0xa5]
+
+    e_add_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x51,0xaf]
+
+    e_add_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x71,0xbf]
+
+    e_add_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xaa]
+
+    e_add_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x00,0xa0]
+
+    e_add_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x20,0xa5]
+
+    e_add_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x51,0xaf]
+
+    e_add_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x71,0xbf]
+
+    e_add_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x10,0xaa]
+
+    e_add_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x00,0xa0]
+
+    e_add_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x20,0xa5]
+
+    e_add_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x51,0xaf]
+
+    e_add_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x71,0xbf]
+
+    e_add_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x10,0xaa]
+
+    e_add_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x00,0xa0]
+
+    e_add_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x00,0xa0]
+
+    e_add_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x20,0xa5]
+
+    e_add_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x51,0xaf]
+
+    e_add_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x71,0xbf]
+
+    e_add_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xaa]
+
+    e_add_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x00,0xa0]
+
+    e_add_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x20,0xa5]
+
+    e_add_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x51,0xaf]
+
+    e_add_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x71,0xbf]
+
+    e_add_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x10,0xaa]
+
+    e_add_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x00,0xa0]
+
+    e_add_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x20,0xa5]
+
+    e_add_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x51,0xaf]
+
+    e_add_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x71,0xbf]
+
+    e_add_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x10,0xaa]
+
+    e_add_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x00,0xa0]
+
+    e_addn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xa0]
+
+    e_addn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xa5]
+
+    e_addn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xaf]
+
+    e_addn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xbf]
+
+    e_addn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xaa]
+
+    e_addn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xa0]
+
+    e_addn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xa5]
+
+    e_addn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xaf]
+
+    e_addn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xbf]
+
+    e_addn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xaa]
+
+    e_addn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xa0]
+
+    e_addn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xa5]
+
+    e_addn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xaf]
+
+    e_addn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xbf]
+
+    e_addn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xaa]
+
+    e_addn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xa0]
+
+    e_addn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xa0]
+
+    e_addn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xa5]
+
+    e_addn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xaf]
+
+    e_addn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xbf]
+
+    e_addn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xaa]
+
+    e_addn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xa0]
+
+    e_addn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xa5]
+
+    e_addn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xaf]
+
+    e_addn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xbf]
+
+    e_addn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xaa]
+
+    e_addn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xa0]
+
+    e_addn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xa5]
+
+    e_addn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xaf]
+
+    e_addn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xbf]
+
+    e_addn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xaa]
+
+    e_addn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xa0]
+
+    e_addn_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x08,0xa0]
+
+    e_addn_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x28,0xa5]
+
+    e_addn_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x59,0xaf]
+
+    e_addn_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x79,0xbf]
+
+    e_addn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xaa]
+
+    e_addn_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x08,0xa0]
+
+    e_addn_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x28,0xa5]
+
+    e_addn_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x59,0xaf]
+
+    e_addn_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x79,0xbf]
+
+    e_addn_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x18,0xaa]
+
+    e_addn_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x08,0xa0]
+
+    e_addn_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x28,0xa5]
+
+    e_addn_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x59,0xaf]
+
+    e_addn_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x79,0xbf]
+
+    e_addn_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x18,0xaa]
+
+    e_addn_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x08,0xa0]
+
+    e_addn_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x08,0xa0]
+
+    e_addn_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x28,0xa5]
+
+    e_addn_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x59,0xaf]
+
+    e_addn_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x79,0xbf]
+
+    e_addn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xaa]
+
+    e_addn_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x08,0xa0]
+
+    e_addn_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x28,0xa5]
+
+    e_addn_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x59,0xaf]
+
+    e_addn_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x79,0xbf]
+
+    e_addn_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x18,0xaa]
+
+    e_addn_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x08,0xa0]
+
+    e_addn_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x28,0xa5]
+
+    e_addn_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x59,0xaf]
+
+    e_addn_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x79,0xbf]
+
+    e_addn_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x18,0xaa]
+
+    e_addn_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x08,0xa0]
+
+    e_add_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xe0]
+
+    e_add_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xe5]
+
+    e_add_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xef]
+
+    e_add_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xff]
+
+    e_add_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xea]
+
+    e_add_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xe0]
+
+    e_add_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xe5]
+
+    e_add_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xef]
+
+    e_add_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xff]
+
+    e_add_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xea]
+
+    e_add_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xe0]
+
+    e_add_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x20,0xe5]
+
+    e_add_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x51,0xef]
+
+    e_add_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x71,0xff]
+
+    e_add_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xea]
+
+    e_add_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x00,0xe0]
+
+    e_add_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xe0]
+
+    e_add_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xe5]
+
+    e_add_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xef]
+
+    e_add_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xff]
+
+    e_add_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xea]
+
+    e_add_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xe0]
+
+    e_add_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xe5]
+
+    e_add_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xef]
+
+    e_add_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xff]
+
+    e_add_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xea]
+
+    e_add_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xe0]
+
+    e_add_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x20,0xe5]
+
+    e_add_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x51,0xef]
+
+    e_add_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x71,0xff]
+
+    e_add_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xea]
+
+    e_add_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x00,0xe0]
+
+    e_add_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x00,0xe0]
+
+    e_add_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x20,0xe5]
+
+    e_add_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x51,0xef]
+
+    e_add_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x71,0xff]
+
+    e_add_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x10,0xea]
+
+    e_add_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x00,0xe0]
+
+    e_add_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x20,0xe5]
+
+    e_add_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x51,0xef]
+
+    e_add_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x71,0xff]
+
+    e_add_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x10,0xea]
+
+    e_add_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x00,0xe0]
+
+    e_add_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x20,0xe5]
+
+    e_add_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x51,0xef]
+
+    e_add_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x71,0xff]
+
+    e_add_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x10,0xea]
+
+    e_add_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x00,0xe0]
+
+    e_add_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x00,0xe0]
+
+    e_add_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x20,0xe5]
+
+    e_add_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x51,0xef]
+
+    e_add_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x71,0xff]
+
+    e_add_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x10,0xea]
+
+    e_add_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x00,0xe0]
+
+    e_add_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x20,0xe5]
+
+    e_add_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x51,0xef]
+
+    e_add_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x71,0xff]
+
+    e_add_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x10,0xea]
+
+    e_add_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x00,0xe0]
+
+    e_add_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x20,0xe5]
+
+    e_add_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x51,0xef]
+
+    e_add_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x71,0xff]
+
+    e_add_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x10,0xea]
+
+    e_add_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x00,0xe0]
+
+    e_addn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xe0]
+
+    e_addn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xe5]
+
+    e_addn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xef]
+
+    e_addn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xff]
+
+    e_addn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xea]
+
+    e_addn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xe0]
+
+    e_addn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xe5]
+
+    e_addn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xef]
+
+    e_addn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xff]
+
+    e_addn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xea]
+
+    e_addn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xe0]
+
+    e_addn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x88,0x28,0xe5]
+
+    e_addn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x54,0x59,0xef]
+
+    e_addn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdc,0x79,0xff]
+
+    e_addn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xea]
+
+    e_addn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x00,0x08,0xe0]
+
+    e_addn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xe0]
+
+    e_addn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xe5]
+
+    e_addn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xef]
+
+    e_addn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xff]
+
+    e_addn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xea]
+
+    e_addn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xe0]
+
+    e_addn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xe5]
+
+    e_addn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xef]
+
+    e_addn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xff]
+
+    e_addn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xea]
+
+    e_addn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xe0]
+
+    e_addn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x06,0x8a,0x28,0xe5]
+
+    e_addn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x06,0x56,0x59,0xef]
+
+    e_addn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xde,0x79,0xff]
+
+    e_addn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xea]
+
+    e_addn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x06,0x02,0x08,0xe0]
+
+    e_addn_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x00,0x08,0xe0]
+
+    e_addn_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x88,0x28,0xe5]
+
+    e_addn_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x54,0x59,0xef]
+
+    e_addn_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xdc,0x79,0xff]
+
+    e_addn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x44,0x18,0xea]
+
+    e_addn_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x00,0x08,0xe0]
+
+    e_addn_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x88,0x28,0xe5]
+
+    e_addn_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x54,0x59,0xef]
+
+    e_addn_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdd,0x79,0xff]
+
+    e_addn_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x45,0x18,0xea]
+
+    e_addn_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x01,0x08,0xe0]
+
+    e_addn_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x89,0x28,0xe5]
+
+    e_addn_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x55,0x59,0xef]
+
+    e_addn_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdd,0x79,0xff]
+
+    e_addn_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x45,0x18,0xea]
+
+    e_addn_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x01,0x08,0xe0]
+
+    e_addn_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x26,0x02,0x08,0xe0]
+
+    e_addn_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x46,0x8a,0x28,0xe5]
+
+    e_addn_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x66,0x56,0x59,0xef]
+
+    e_addn_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x86,0xde,0x79,0xff]
+
+    e_addn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x06,0x46,0x18,0xea]
+
+    e_addn_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa6,0x02,0x08,0xe0]
+
+    e_addn_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc6,0x8a,0x28,0xe5]
+
+    e_addn_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe6,0x56,0x59,0xef]
+
+    e_addn_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x06,0xdf,0x79,0xff]
+
+    e_addn_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x26,0x47,0x18,0xea]
+
+    e_addn_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x46,0x03,0x08,0xe0]
+
+    e_addn_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x66,0x8b,0x28,0xe5]
+
+    e_addn_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x86,0x57,0x59,0xef]
+
+    e_addn_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa6,0xdf,0x79,0xff]
+
+    e_addn_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc6,0x47,0x18,0xea]
+
+    e_addn_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe6,0x03,0x08,0xe0]
+
+    e_sub r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x00,0x00]
+
+    e_sub r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x20,0x00]
+
+    e_sub r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x51,0x00]
+
+    e_sub r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x71,0x00]
+
+    e_sub r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x10,0x00]
+
+    e_sub r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x00,0x00]
+
+    e_sub r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x20,0x00]
+
+    e_sub r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x51,0x00]
+
+    e_sub r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x71,0x00]
+
+    e_sub r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x10,0x00]
+
+    e_sub r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x00,0x00]
+
+    e_sub r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x20,0x00]
+
+    e_sub r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x51,0x00]
+
+    e_sub r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x71,0x00]
+
+    e_sub r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x10,0x00]
+
+    e_sub r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x00,0x00]
+
+    e_subs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x00,0x00]
+
+    e_subs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x20,0x00]
+
+    e_subs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x51,0x00]
+
+    e_subs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x71,0x00]
+
+    e_subs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x10,0x00]
+
+    e_subs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x00,0x00]
+
+    e_subs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x20,0x00]
+
+    e_subs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x51,0x00]
+
+    e_subs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x71,0x00]
+
+    e_subs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x10,0x00]
+
+    e_subs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x00,0x00]
+
+    e_subs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x20,0x00]
+
+    e_subs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x51,0x00]
+
+    e_subs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x71,0x00]
+
+    e_subs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x10,0x00]
+
+    e_subs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x00,0x00]
+
+    e_sub_ze r0, r0, r0
+# CHECK: encoding: [0x28,0x00,0x00,0x00]
+
+    e_sub_nz r2, r2, r2
+# CHECK: encoding: [0x48,0x88,0x20,0x00]
+
+    e_sub_po r5, r5, r5
+# CHECK: encoding: [0x68,0x54,0x51,0x00]
+
+    e_sub_ne r7, r7, r7
+# CHECK: encoding: [0x88,0xdc,0x71,0x00]
+
+    e_sub r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x10,0x00]
+
+    e_sub_az r0, r0, r0
+# CHECK: encoding: [0xa8,0x00,0x00,0x00]
+
+    e_sub_zb r2, r2, r2
+# CHECK: encoding: [0xc8,0x88,0x20,0x00]
+
+    e_sub_ca r5, r5, r5
+# CHECK: encoding: [0xe8,0x54,0x51,0x00]
+
+    e_sub_nc r7, r7, r7
+# CHECK: encoding: [0x08,0xdd,0x71,0x00]
+
+    e_sub_cz r1, r1, r1
+# CHECK: encoding: [0x28,0x45,0x10,0x00]
+
+    e_sub_spo r0, r0, r0
+# CHECK: encoding: [0x48,0x01,0x00,0x00]
+
+    e_sub_sne r2, r2, r2
+# CHECK: encoding: [0x68,0x89,0x20,0x00]
+
+    e_sub_nbs r5, r5, r5
+# CHECK: encoding: [0x88,0x55,0x51,0x00]
+
+    e_sub_nex r7, r7, r7
+# CHECK: encoding: [0xa8,0xdd,0x71,0x00]
+
+    e_sub_bs r1, r1, r1
+# CHECK: encoding: [0xc8,0x45,0x10,0x00]
+
+    e_sub_ex r0, r0, r0
+# CHECK: encoding: [0xe8,0x01,0x00,0x00]
+
+    e_subs_ze r0, r0, r0
+# CHECK: encoding: [0x28,0x02,0x00,0x00]
+
+    e_subs_nz r2, r2, r2
+# CHECK: encoding: [0x48,0x8a,0x20,0x00]
+
+    e_subs_po r5, r5, r5
+# CHECK: encoding: [0x68,0x56,0x51,0x00]
+
+    e_subs_ne r7, r7, r7
+# CHECK: encoding: [0x88,0xde,0x71,0x00]
+
+    e_subs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x10,0x00]
+
+    e_subs_az r0, r0, r0
+# CHECK: encoding: [0xa8,0x02,0x00,0x00]
+
+    e_subs_zb r2, r2, r2
+# CHECK: encoding: [0xc8,0x8a,0x20,0x00]
+
+    e_subs_ca r5, r5, r5
+# CHECK: encoding: [0xe8,0x56,0x51,0x00]
+
+    e_subs_nc r7, r7, r7
+# CHECK: encoding: [0x08,0xdf,0x71,0x00]
+
+    e_subs_cz r1, r1, r1
+# CHECK: encoding: [0x28,0x47,0x10,0x00]
+
+    e_subs_spo r0, r0, r0
+# CHECK: encoding: [0x48,0x03,0x00,0x00]
+
+    e_subs_sne r2, r2, r2
+# CHECK: encoding: [0x68,0x8b,0x20,0x00]
+
+    e_subs_nbs r5, r5, r5
+# CHECK: encoding: [0x88,0x57,0x51,0x00]
+
+    e_subs_nex r7, r7, r7
+# CHECK: encoding: [0xa8,0xdf,0x71,0x00]
+
+    e_subs_bs r1, r1, r1
+# CHECK: encoding: [0xc8,0x47,0x10,0x00]
+
+    e_subs_ex r0, r0, r0
+# CHECK: encoding: [0xe8,0x03,0x00,0x00]
+
+    e_subn r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x08,0x00]
+
+    e_subn r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x28,0x00]
+
+    e_subn r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x59,0x00]
+
+    e_subn r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x79,0x00]
+
+    e_subn r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x18,0x00]
+
+    e_subn r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x08,0x00]
+
+    e_subn r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x28,0x00]
+
+    e_subn r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x59,0x00]
+
+    e_subn r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x79,0x00]
+
+    e_subn r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x18,0x00]
+
+    e_subn r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x08,0x00]
+
+    e_subn r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x28,0x00]
+
+    e_subn r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x59,0x00]
+
+    e_subn r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x79,0x00]
+
+    e_subn r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x18,0x00]
+
+    e_subn r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x08,0x00]
+
+    e_subns r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x08,0x00]
+
+    e_subns r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x28,0x00]
+
+    e_subns r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x59,0x00]
+
+    e_subns r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x79,0x00]
+
+    e_subns r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x18,0x00]
+
+    e_subns r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x08,0x00]
+
+    e_subns r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x28,0x00]
+
+    e_subns r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x59,0x00]
+
+    e_subns r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x79,0x00]
+
+    e_subns r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x18,0x00]
+
+    e_subns r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x08,0x00]
+
+    e_subns r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x28,0x00]
+
+    e_subns r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x59,0x00]
+
+    e_subns r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x79,0x00]
+
+    e_subns r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x18,0x00]
+
+    e_subns r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x08,0x00]
+
+    e_subn_ze r0, r0, r0
+# CHECK: encoding: [0x28,0x00,0x08,0x00]
+
+    e_subn_nz r2, r2, r2
+# CHECK: encoding: [0x48,0x88,0x28,0x00]
+
+    e_subn_po r5, r5, r5
+# CHECK: encoding: [0x68,0x54,0x59,0x00]
+
+    e_subn_ne r7, r7, r7
+# CHECK: encoding: [0x88,0xdc,0x79,0x00]
+
+    e_subn r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x18,0x00]
+
+    e_subn_az r0, r0, r0
+# CHECK: encoding: [0xa8,0x00,0x08,0x00]
+
+    e_subn_zb r2, r2, r2
+# CHECK: encoding: [0xc8,0x88,0x28,0x00]
+
+    e_subn_ca r5, r5, r5
+# CHECK: encoding: [0xe8,0x54,0x59,0x00]
+
+    e_subn_nc r7, r7, r7
+# CHECK: encoding: [0x08,0xdd,0x79,0x00]
+
+    e_subn_cz r1, r1, r1
+# CHECK: encoding: [0x28,0x45,0x18,0x00]
+
+    e_subn_spo r0, r0, r0
+# CHECK: encoding: [0x48,0x01,0x08,0x00]
+
+    e_subn_sne r2, r2, r2
+# CHECK: encoding: [0x68,0x89,0x28,0x00]
+
+    e_subn_nbs r5, r5, r5
+# CHECK: encoding: [0x88,0x55,0x59,0x00]
+
+    e_subn_nex r7, r7, r7
+# CHECK: encoding: [0xa8,0xdd,0x79,0x00]
+
+    e_subn_bs r1, r1, r1
+# CHECK: encoding: [0xc8,0x45,0x18,0x00]
+
+    e_subn_ex r0, r0, r0
+# CHECK: encoding: [0xe8,0x01,0x08,0x00]
+
+    e_subns_ze r0, r0, r0
+# CHECK: encoding: [0x28,0x02,0x08,0x00]
+
+    e_subns_nz r2, r2, r2
+# CHECK: encoding: [0x48,0x8a,0x28,0x00]
+
+    e_subns_po r5, r5, r5
+# CHECK: encoding: [0x68,0x56,0x59,0x00]
+
+    e_subns_ne r7, r7, r7
+# CHECK: encoding: [0x88,0xde,0x79,0x00]
+
+    e_subns r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x18,0x00]
+
+    e_subns_az r0, r0, r0
+# CHECK: encoding: [0xa8,0x02,0x08,0x00]
+
+    e_subns_zb r2, r2, r2
+# CHECK: encoding: [0xc8,0x8a,0x28,0x00]
+
+    e_subns_ca r5, r5, r5
+# CHECK: encoding: [0xe8,0x56,0x59,0x00]
+
+    e_subns_nc r7, r7, r7
+# CHECK: encoding: [0x08,0xdf,0x79,0x00]
+
+    e_subns_cz r1, r1, r1
+# CHECK: encoding: [0x28,0x47,0x18,0x00]
+
+    e_subns_spo r0, r0, r0
+# CHECK: encoding: [0x48,0x03,0x08,0x00]
+
+    e_subns_sne r2, r2, r2
+# CHECK: encoding: [0x68,0x8b,0x28,0x00]
+
+    e_subns_nbs r5, r5, r5
+# CHECK: encoding: [0x88,0x57,0x59,0x00]
+
+    e_subns_nex r7, r7, r7
+# CHECK: encoding: [0xa8,0xdf,0x79,0x00]
+
+    e_subns_bs r1, r1, r1
+# CHECK: encoding: [0xc8,0x47,0x18,0x00]
+
+    e_subns_ex r0, r0, r0
+# CHECK: encoding: [0xe8,0x03,0x08,0x00]
+
+    e_sub_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x00,0xf4,0x3f]
+
+    e_sub_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x88,0x14,0xc0]
+
+    e_sub_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x54,0xf5,0x1f]
+
+    e_sub_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdc,0x15,0xe0]
+
+    e_sub_imm r1, r1, 0x1
+# CHECK: encoding: [0x08,0x44,0x14,0x00]
+
+    e_sub_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x00,0xf4,0x3f]
+
+    e_sub_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x88,0x14,0xc0]
+
+    e_sub_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x54,0xf5,0x1f]
+
+    e_sub_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdc,0x15,0xe0]
+
+    e_sub_imm r1, r1, 0x1
+# CHECK: encoding: [0x08,0x44,0x14,0x00]
+
+    e_sub_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x00,0xf4,0x3f]
+
+    e_sub_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x88,0x14,0xc0]
+
+    e_sub_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x54,0xf5,0x1f]
+
+    e_sub_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdc,0x15,0xe0]
+
+    e_sub_imm r1, r1, 0x1
+# CHECK: encoding: [0x08,0x44,0x14,0x00]
+
+    e_sub_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x00,0xf4,0x3f]
+
+    e_sub_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x02,0xf4,0x3f]
+
+    e_sub_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x8a,0x14,0xc0]
+
+    e_sub_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x56,0xf5,0x1f]
+
+    e_sub_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xde,0x15,0xe0]
+
+    e_sub_imms r1, r1, 0x1
+# CHECK: encoding: [0x08,0x46,0x14,0x00]
+
+    e_sub_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x02,0xf4,0x3f]
+
+    e_sub_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x8a,0x14,0xc0]
+
+    e_sub_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x56,0xf5,0x1f]
+
+    e_sub_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xde,0x15,0xe0]
+
+    e_sub_imms r1, r1, 0x1
+# CHECK: encoding: [0x08,0x46,0x14,0x00]
+
+    e_sub_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x02,0xf4,0x3f]
+
+    e_sub_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x8a,0x14,0xc0]
+
+    e_sub_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x56,0xf5,0x1f]
+
+    e_sub_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xde,0x15,0xe0]
+
+    e_sub_imms r1, r1, 0x1
+# CHECK: encoding: [0x08,0x46,0x14,0x00]
+
+    e_sub_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x02,0xf4,0x3f]
+
+    e_sub_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x28,0x00,0xf4,0x3f]
+
+    e_sub_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x48,0x88,0x14,0xc0]
+
+    e_sub_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x68,0x54,0xf5,0x1f]
+
+    e_sub_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x88,0xdc,0x15,0xe0]
+
+    e_sub_imm r1, r1, 0x1
+# CHECK: encoding: [0x08,0x44,0x14,0x00]
+
+    e_sub_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa8,0x00,0xf4,0x3f]
+
+    e_sub_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc8,0x88,0x14,0xc0]
+
+    e_sub_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe8,0x54,0xf5,0x1f]
+
+    e_sub_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdd,0x15,0xe0]
+
+    e_sub_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x28,0x45,0x14,0x00]
+
+    e_sub_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x48,0x01,0xf4,0x3f]
+
+    e_sub_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x68,0x89,0x14,0xc0]
+
+    e_sub_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x88,0x55,0xf5,0x1f]
+
+    e_sub_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa8,0xdd,0x15,0xe0]
+
+    e_sub_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xc8,0x45,0x14,0x00]
+
+    e_sub_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe8,0x01,0xf4,0x3f]
+
+    e_sub_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x28,0x02,0xf4,0x3f]
+
+    e_sub_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x48,0x8a,0x14,0xc0]
+
+    e_sub_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x68,0x56,0xf5,0x1f]
+
+    e_sub_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x88,0xde,0x15,0xe0]
+
+    e_sub_imms r1, r1, 0x1
+# CHECK: encoding: [0x08,0x46,0x14,0x00]
+
+    e_sub_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa8,0x02,0xf4,0x3f]
+
+    e_sub_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc8,0x8a,0x14,0xc0]
+
+    e_sub_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe8,0x56,0xf5,0x1f]
+
+    e_sub_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdf,0x15,0xe0]
+
+    e_sub_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x28,0x47,0x14,0x00]
+
+    e_sub_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x48,0x03,0xf4,0x3f]
+
+    e_sub_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x68,0x8b,0x14,0xc0]
+
+    e_sub_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x88,0x57,0xf5,0x1f]
+
+    e_sub_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa8,0xdf,0x15,0xe0]
+
+    e_sub_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xc8,0x47,0x14,0x00]
+
+    e_sub_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe8,0x03,0xf4,0x3f]
+
+    e_subn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x00,0xfc,0x3f]
+
+    e_subn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x88,0x1c,0xc0]
+
+    e_subn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x54,0xfd,0x1f]
+
+    e_subn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdc,0x1d,0xe0]
+
+    e_subn_imm r1, r1, 0x1
+# CHECK: encoding: [0x08,0x44,0x1c,0x00]
+
+    e_subn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x00,0xfc,0x3f]
+
+    e_subn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x88,0x1c,0xc0]
+
+    e_subn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x54,0xfd,0x1f]
+
+    e_subn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdc,0x1d,0xe0]
+
+    e_subn_imm r1, r1, 0x1
+# CHECK: encoding: [0x08,0x44,0x1c,0x00]
+
+    e_subn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x00,0xfc,0x3f]
+
+    e_subn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x88,0x1c,0xc0]
+
+    e_subn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x54,0xfd,0x1f]
+
+    e_subn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdc,0x1d,0xe0]
+
+    e_subn_imm r1, r1, 0x1
+# CHECK: encoding: [0x08,0x44,0x1c,0x00]
+
+    e_subn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x00,0xfc,0x3f]
+
+    e_subn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x02,0xfc,0x3f]
+
+    e_subn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x8a,0x1c,0xc0]
+
+    e_subn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x56,0xfd,0x1f]
+
+    e_subn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xde,0x1d,0xe0]
+
+    e_subn_imms r1, r1, 0x1
+# CHECK: encoding: [0x08,0x46,0x1c,0x00]
+
+    e_subn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x02,0xfc,0x3f]
+
+    e_subn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x8a,0x1c,0xc0]
+
+    e_subn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x56,0xfd,0x1f]
+
+    e_subn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xde,0x1d,0xe0]
+
+    e_subn_imms r1, r1, 0x1
+# CHECK: encoding: [0x08,0x46,0x1c,0x00]
+
+    e_subn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x02,0xfc,0x3f]
+
+    e_subn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x08,0x8a,0x1c,0xc0]
+
+    e_subn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x08,0x56,0xfd,0x1f]
+
+    e_subn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xde,0x1d,0xe0]
+
+    e_subn_imms r1, r1, 0x1
+# CHECK: encoding: [0x08,0x46,0x1c,0x00]
+
+    e_subn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x08,0x02,0xfc,0x3f]
+
+    e_subn_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x28,0x00,0xfc,0x3f]
+
+    e_subn_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x48,0x88,0x1c,0xc0]
+
+    e_subn_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x68,0x54,0xfd,0x1f]
+
+    e_subn_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x88,0xdc,0x1d,0xe0]
+
+    e_subn_imm r1, r1, 0x1
+# CHECK: encoding: [0x08,0x44,0x1c,0x00]
+
+    e_subn_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa8,0x00,0xfc,0x3f]
+
+    e_subn_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc8,0x88,0x1c,0xc0]
+
+    e_subn_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe8,0x54,0xfd,0x1f]
+
+    e_subn_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdd,0x1d,0xe0]
+
+    e_subn_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x28,0x45,0x1c,0x00]
+
+    e_subn_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x48,0x01,0xfc,0x3f]
+
+    e_subn_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x68,0x89,0x1c,0xc0]
+
+    e_subn_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x88,0x55,0xfd,0x1f]
+
+    e_subn_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa8,0xdd,0x1d,0xe0]
+
+    e_subn_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xc8,0x45,0x1c,0x00]
+
+    e_subn_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe8,0x01,0xfc,0x3f]
+
+    e_subn_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x28,0x02,0xfc,0x3f]
+
+    e_subn_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x48,0x8a,0x1c,0xc0]
+
+    e_subn_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x68,0x56,0xfd,0x1f]
+
+    e_subn_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x88,0xde,0x1d,0xe0]
+
+    e_subn_imms r1, r1, 0x1
+# CHECK: encoding: [0x08,0x46,0x1c,0x00]
+
+    e_subn_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa8,0x02,0xfc,0x3f]
+
+    e_subn_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc8,0x8a,0x1c,0xc0]
+
+    e_subn_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe8,0x56,0xfd,0x1f]
+
+    e_subn_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x08,0xdf,0x1d,0xe0]
+
+    e_subn_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x28,0x47,0x1c,0x00]
+
+    e_subn_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x48,0x03,0xfc,0x3f]
+
+    e_subn_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x68,0x8b,0x1c,0xc0]
+
+    e_subn_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x88,0x57,0xfd,0x1f]
+
+    e_subn_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa8,0xdf,0x1d,0xe0]
+
+    e_subn_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xc8,0x47,0x1c,0x00]
+
+    e_subn_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe8,0x03,0xfc,0x3f]
+
+    e_sub_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x00]
+
+    e_sub_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x05]
+
+    e_sub_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x0f]
+
+    e_sub_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x1f]
+
+    e_sub_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x0a]
+
+    e_sub_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x00]
+
+    e_sub_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x05]
+
+    e_sub_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x0f]
+
+    e_sub_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x1f]
+
+    e_sub_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x0a]
+
+    e_sub_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x00]
+
+    e_sub_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x05]
+
+    e_sub_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x0f]
+
+    e_sub_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x1f]
+
+    e_sub_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x0a]
+
+    e_sub_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x00]
+
+    e_sub_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x00]
+
+    e_sub_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x05]
+
+    e_sub_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x0f]
+
+    e_sub_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x1f]
+
+    e_sub_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x0a]
+
+    e_sub_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x00]
+
+    e_sub_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x05]
+
+    e_sub_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x0f]
+
+    e_sub_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x1f]
+
+    e_sub_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x0a]
+
+    e_sub_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x00]
+
+    e_sub_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x05]
+
+    e_sub_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x0f]
+
+    e_sub_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x1f]
+
+    e_sub_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x0a]
+
+    e_sub_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x00]
+
+    e_sub_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x00,0x00]
+
+    e_sub_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x20,0x05]
+
+    e_sub_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x51,0x0f]
+
+    e_sub_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x71,0x1f]
+
+    e_sub_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x0a]
+
+    e_sub_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x00,0x00]
+
+    e_sub_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x20,0x05]
+
+    e_sub_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x51,0x0f]
+
+    e_sub_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x71,0x1f]
+
+    e_sub_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x10,0x0a]
+
+    e_sub_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x00,0x00]
+
+    e_sub_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x20,0x05]
+
+    e_sub_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x51,0x0f]
+
+    e_sub_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x71,0x1f]
+
+    e_sub_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x10,0x0a]
+
+    e_sub_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x00,0x00]
+
+    e_sub_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x00,0x00]
+
+    e_sub_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x20,0x05]
+
+    e_sub_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x51,0x0f]
+
+    e_sub_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x71,0x1f]
+
+    e_sub_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x0a]
+
+    e_sub_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x00,0x00]
+
+    e_sub_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x20,0x05]
+
+    e_sub_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x51,0x0f]
+
+    e_sub_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x71,0x1f]
+
+    e_sub_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x10,0x0a]
+
+    e_sub_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x00,0x00]
+
+    e_sub_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x20,0x05]
+
+    e_sub_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x51,0x0f]
+
+    e_sub_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x71,0x1f]
+
+    e_sub_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x10,0x0a]
+
+    e_sub_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x00,0x00]
+
+    e_subn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x00]
+
+    e_subn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x05]
+
+    e_subn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x0f]
+
+    e_subn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x1f]
+
+    e_subn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x0a]
+
+    e_subn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x00]
+
+    e_subn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x05]
+
+    e_subn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x0f]
+
+    e_subn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x1f]
+
+    e_subn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x0a]
+
+    e_subn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x00]
+
+    e_subn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x05]
+
+    e_subn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x0f]
+
+    e_subn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x1f]
+
+    e_subn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x0a]
+
+    e_subn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x00]
+
+    e_subn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x00]
+
+    e_subn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x05]
+
+    e_subn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x0f]
+
+    e_subn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x1f]
+
+    e_subn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x0a]
+
+    e_subn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x00]
+
+    e_subn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x05]
+
+    e_subn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x0f]
+
+    e_subn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x1f]
+
+    e_subn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x0a]
+
+    e_subn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x00]
+
+    e_subn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x05]
+
+    e_subn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x0f]
+
+    e_subn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x1f]
+
+    e_subn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x0a]
+
+    e_subn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x00]
+
+    e_subn_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x08,0x00]
+
+    e_subn_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x28,0x05]
+
+    e_subn_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x59,0x0f]
+
+    e_subn_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x79,0x1f]
+
+    e_subn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x0a]
+
+    e_subn_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x08,0x00]
+
+    e_subn_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x28,0x05]
+
+    e_subn_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x59,0x0f]
+
+    e_subn_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x79,0x1f]
+
+    e_subn_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x18,0x0a]
+
+    e_subn_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x08,0x00]
+
+    e_subn_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x28,0x05]
+
+    e_subn_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x59,0x0f]
+
+    e_subn_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x79,0x1f]
+
+    e_subn_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x18,0x0a]
+
+    e_subn_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x08,0x00]
+
+    e_subn_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x08,0x00]
+
+    e_subn_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x28,0x05]
+
+    e_subn_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x59,0x0f]
+
+    e_subn_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x79,0x1f]
+
+    e_subn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x0a]
+
+    e_subn_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x08,0x00]
+
+    e_subn_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x28,0x05]
+
+    e_subn_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x59,0x0f]
+
+    e_subn_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x79,0x1f]
+
+    e_subn_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x18,0x0a]
+
+    e_subn_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x08,0x00]
+
+    e_subn_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x28,0x05]
+
+    e_subn_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x59,0x0f]
+
+    e_subn_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x79,0x1f]
+
+    e_subn_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x18,0x0a]
+
+    e_subn_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x08,0x00]
+
+    e_sub_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x40]
+
+    e_sub_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x45]
+
+    e_sub_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x4f]
+
+    e_sub_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x5f]
+
+    e_sub_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x4a]
+
+    e_sub_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x40]
+
+    e_sub_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x45]
+
+    e_sub_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x4f]
+
+    e_sub_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x5f]
+
+    e_sub_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x4a]
+
+    e_sub_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x40]
+
+    e_sub_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x45]
+
+    e_sub_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x4f]
+
+    e_sub_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x5f]
+
+    e_sub_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x4a]
+
+    e_sub_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x40]
+
+    e_sub_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x40]
+
+    e_sub_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x45]
+
+    e_sub_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x4f]
+
+    e_sub_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x5f]
+
+    e_sub_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x4a]
+
+    e_sub_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x40]
+
+    e_sub_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x45]
+
+    e_sub_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x4f]
+
+    e_sub_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x5f]
+
+    e_sub_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x4a]
+
+    e_sub_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x40]
+
+    e_sub_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x45]
+
+    e_sub_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x4f]
+
+    e_sub_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x5f]
+
+    e_sub_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x4a]
+
+    e_sub_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x40]
+
+    e_sub_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x00,0x40]
+
+    e_sub_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x20,0x45]
+
+    e_sub_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x51,0x4f]
+
+    e_sub_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x71,0x5f]
+
+    e_sub_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x4a]
+
+    e_sub_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x00,0x40]
+
+    e_sub_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x20,0x45]
+
+    e_sub_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x51,0x4f]
+
+    e_sub_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x71,0x5f]
+
+    e_sub_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x10,0x4a]
+
+    e_sub_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x00,0x40]
+
+    e_sub_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x20,0x45]
+
+    e_sub_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x51,0x4f]
+
+    e_sub_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x71,0x5f]
+
+    e_sub_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x10,0x4a]
+
+    e_sub_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x00,0x40]
+
+    e_sub_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x00,0x40]
+
+    e_sub_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x20,0x45]
+
+    e_sub_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x51,0x4f]
+
+    e_sub_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x71,0x5f]
+
+    e_sub_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x4a]
+
+    e_sub_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x00,0x40]
+
+    e_sub_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x20,0x45]
+
+    e_sub_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x51,0x4f]
+
+    e_sub_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x71,0x5f]
+
+    e_sub_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x10,0x4a]
+
+    e_sub_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x00,0x40]
+
+    e_sub_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x20,0x45]
+
+    e_sub_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x51,0x4f]
+
+    e_sub_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x71,0x5f]
+
+    e_sub_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x10,0x4a]
+
+    e_sub_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x00,0x40]
+
+    e_subn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x40]
+
+    e_subn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x45]
+
+    e_subn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x4f]
+
+    e_subn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x5f]
+
+    e_subn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x4a]
+
+    e_subn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x40]
+
+    e_subn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x45]
+
+    e_subn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x4f]
+
+    e_subn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x5f]
+
+    e_subn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x4a]
+
+    e_subn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x40]
+
+    e_subn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x45]
+
+    e_subn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x4f]
+
+    e_subn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x5f]
+
+    e_subn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x4a]
+
+    e_subn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x40]
+
+    e_subn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x40]
+
+    e_subn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x45]
+
+    e_subn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x4f]
+
+    e_subn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x5f]
+
+    e_subn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x4a]
+
+    e_subn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x40]
+
+    e_subn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x45]
+
+    e_subn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x4f]
+
+    e_subn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x5f]
+
+    e_subn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x4a]
+
+    e_subn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x40]
+
+    e_subn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x45]
+
+    e_subn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x4f]
+
+    e_subn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x5f]
+
+    e_subn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x4a]
+
+    e_subn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x40]
+
+    e_subn_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x08,0x40]
+
+    e_subn_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x28,0x45]
+
+    e_subn_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x59,0x4f]
+
+    e_subn_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x79,0x5f]
+
+    e_subn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x4a]
+
+    e_subn_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x08,0x40]
+
+    e_subn_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x28,0x45]
+
+    e_subn_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x59,0x4f]
+
+    e_subn_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x79,0x5f]
+
+    e_subn_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x18,0x4a]
+
+    e_subn_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x08,0x40]
+
+    e_subn_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x28,0x45]
+
+    e_subn_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x59,0x4f]
+
+    e_subn_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x79,0x5f]
+
+    e_subn_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x18,0x4a]
+
+    e_subn_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x08,0x40]
+
+    e_subn_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x08,0x40]
+
+    e_subn_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x28,0x45]
+
+    e_subn_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x59,0x4f]
+
+    e_subn_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x79,0x5f]
+
+    e_subn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x4a]
+
+    e_subn_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x08,0x40]
+
+    e_subn_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x28,0x45]
+
+    e_subn_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x59,0x4f]
+
+    e_subn_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x79,0x5f]
+
+    e_subn_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x18,0x4a]
+
+    e_subn_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x08,0x40]
+
+    e_subn_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x28,0x45]
+
+    e_subn_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x59,0x4f]
+
+    e_subn_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x79,0x5f]
+
+    e_subn_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x18,0x4a]
+
+    e_subn_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x08,0x40]
+
+    e_sub_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x20]
+
+    e_sub_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x25]
+
+    e_sub_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x2f]
+
+    e_sub_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x3f]
+
+    e_sub_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x2a]
+
+    e_sub_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x20]
+
+    e_sub_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x25]
+
+    e_sub_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x2f]
+
+    e_sub_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x3f]
+
+    e_sub_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x2a]
+
+    e_sub_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x20]
+
+    e_sub_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x25]
+
+    e_sub_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x2f]
+
+    e_sub_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x3f]
+
+    e_sub_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x2a]
+
+    e_sub_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x20]
+
+    e_sub_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x20]
+
+    e_sub_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x25]
+
+    e_sub_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x2f]
+
+    e_sub_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x3f]
+
+    e_sub_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x2a]
+
+    e_sub_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x20]
+
+    e_sub_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x25]
+
+    e_sub_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x2f]
+
+    e_sub_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x3f]
+
+    e_sub_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x2a]
+
+    e_sub_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x20]
+
+    e_sub_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x25]
+
+    e_sub_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x2f]
+
+    e_sub_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x3f]
+
+    e_sub_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x2a]
+
+    e_sub_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x20]
+
+    e_sub_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x00,0x20]
+
+    e_sub_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x20,0x25]
+
+    e_sub_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x51,0x2f]
+
+    e_sub_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x71,0x3f]
+
+    e_sub_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x2a]
+
+    e_sub_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x00,0x20]
+
+    e_sub_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x20,0x25]
+
+    e_sub_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x51,0x2f]
+
+    e_sub_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x71,0x3f]
+
+    e_sub_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x10,0x2a]
+
+    e_sub_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x00,0x20]
+
+    e_sub_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x20,0x25]
+
+    e_sub_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x51,0x2f]
+
+    e_sub_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x71,0x3f]
+
+    e_sub_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x10,0x2a]
+
+    e_sub_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x00,0x20]
+
+    e_sub_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x00,0x20]
+
+    e_sub_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x20,0x25]
+
+    e_sub_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x51,0x2f]
+
+    e_sub_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x71,0x3f]
+
+    e_sub_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x2a]
+
+    e_sub_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x00,0x20]
+
+    e_sub_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x20,0x25]
+
+    e_sub_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x51,0x2f]
+
+    e_sub_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x71,0x3f]
+
+    e_sub_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x10,0x2a]
+
+    e_sub_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x00,0x20]
+
+    e_sub_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x20,0x25]
+
+    e_sub_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x51,0x2f]
+
+    e_sub_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x71,0x3f]
+
+    e_sub_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x10,0x2a]
+
+    e_sub_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x00,0x20]
+
+    e_subn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x20]
+
+    e_subn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x25]
+
+    e_subn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x2f]
+
+    e_subn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x3f]
+
+    e_subn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x2a]
+
+    e_subn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x20]
+
+    e_subn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x25]
+
+    e_subn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x2f]
+
+    e_subn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x3f]
+
+    e_subn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x2a]
+
+    e_subn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x20]
+
+    e_subn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x25]
+
+    e_subn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x2f]
+
+    e_subn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x3f]
+
+    e_subn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x2a]
+
+    e_subn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x20]
+
+    e_subn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x20]
+
+    e_subn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x25]
+
+    e_subn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x2f]
+
+    e_subn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x3f]
+
+    e_subn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x2a]
+
+    e_subn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x20]
+
+    e_subn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x25]
+
+    e_subn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x2f]
+
+    e_subn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x3f]
+
+    e_subn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x2a]
+
+    e_subn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x20]
+
+    e_subn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x25]
+
+    e_subn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x2f]
+
+    e_subn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x3f]
+
+    e_subn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x2a]
+
+    e_subn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x20]
+
+    e_subn_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x08,0x20]
+
+    e_subn_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x28,0x25]
+
+    e_subn_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x59,0x2f]
+
+    e_subn_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x79,0x3f]
+
+    e_subn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x2a]
+
+    e_subn_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x08,0x20]
+
+    e_subn_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x28,0x25]
+
+    e_subn_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x59,0x2f]
+
+    e_subn_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x79,0x3f]
+
+    e_subn_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x18,0x2a]
+
+    e_subn_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x08,0x20]
+
+    e_subn_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x28,0x25]
+
+    e_subn_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x59,0x2f]
+
+    e_subn_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x79,0x3f]
+
+    e_subn_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x18,0x2a]
+
+    e_subn_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x08,0x20]
+
+    e_subn_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x08,0x20]
+
+    e_subn_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x28,0x25]
+
+    e_subn_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x59,0x2f]
+
+    e_subn_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x79,0x3f]
+
+    e_subn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x2a]
+
+    e_subn_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x08,0x20]
+
+    e_subn_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x28,0x25]
+
+    e_subn_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x59,0x2f]
+
+    e_subn_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x79,0x3f]
+
+    e_subn_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x18,0x2a]
+
+    e_subn_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x08,0x20]
+
+    e_subn_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x28,0x25]
+
+    e_subn_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x59,0x2f]
+
+    e_subn_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x79,0x3f]
+
+    e_subn_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x18,0x2a]
+
+    e_subn_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x08,0x20]
+
+    e_sub_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x60]
+
+    e_sub_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x65]
+
+    e_sub_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x6f]
+
+    e_sub_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x7f]
+
+    e_sub_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x6a]
+
+    e_sub_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x60]
+
+    e_sub_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x65]
+
+    e_sub_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x6f]
+
+    e_sub_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x7f]
+
+    e_sub_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x6a]
+
+    e_sub_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x60]
+
+    e_sub_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x65]
+
+    e_sub_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x6f]
+
+    e_sub_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x7f]
+
+    e_sub_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x6a]
+
+    e_sub_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x60]
+
+    e_sub_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x60]
+
+    e_sub_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x65]
+
+    e_sub_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x6f]
+
+    e_sub_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x7f]
+
+    e_sub_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x6a]
+
+    e_sub_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x60]
+
+    e_sub_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x65]
+
+    e_sub_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x6f]
+
+    e_sub_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x7f]
+
+    e_sub_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x6a]
+
+    e_sub_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x60]
+
+    e_sub_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x65]
+
+    e_sub_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x6f]
+
+    e_sub_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x7f]
+
+    e_sub_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x6a]
+
+    e_sub_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x60]
+
+    e_sub_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x00,0x60]
+
+    e_sub_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x20,0x65]
+
+    e_sub_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x51,0x6f]
+
+    e_sub_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x71,0x7f]
+
+    e_sub_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x6a]
+
+    e_sub_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x00,0x60]
+
+    e_sub_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x20,0x65]
+
+    e_sub_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x51,0x6f]
+
+    e_sub_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x71,0x7f]
+
+    e_sub_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x10,0x6a]
+
+    e_sub_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x00,0x60]
+
+    e_sub_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x20,0x65]
+
+    e_sub_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x51,0x6f]
+
+    e_sub_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x71,0x7f]
+
+    e_sub_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x10,0x6a]
+
+    e_sub_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x00,0x60]
+
+    e_sub_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x00,0x60]
+
+    e_sub_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x20,0x65]
+
+    e_sub_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x51,0x6f]
+
+    e_sub_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x71,0x7f]
+
+    e_sub_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x6a]
+
+    e_sub_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x00,0x60]
+
+    e_sub_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x20,0x65]
+
+    e_sub_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x51,0x6f]
+
+    e_sub_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x71,0x7f]
+
+    e_sub_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x10,0x6a]
+
+    e_sub_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x00,0x60]
+
+    e_sub_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x20,0x65]
+
+    e_sub_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x51,0x6f]
+
+    e_sub_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x71,0x7f]
+
+    e_sub_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x10,0x6a]
+
+    e_sub_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x00,0x60]
+
+    e_subn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x60]
+
+    e_subn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x65]
+
+    e_subn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x6f]
+
+    e_subn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x7f]
+
+    e_subn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x6a]
+
+    e_subn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x60]
+
+    e_subn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x65]
+
+    e_subn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x6f]
+
+    e_subn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x7f]
+
+    e_subn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x6a]
+
+    e_subn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x60]
+
+    e_subn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x65]
+
+    e_subn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x6f]
+
+    e_subn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x7f]
+
+    e_subn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x6a]
+
+    e_subn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x60]
+
+    e_subn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x60]
+
+    e_subn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x65]
+
+    e_subn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x6f]
+
+    e_subn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x7f]
+
+    e_subn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x6a]
+
+    e_subn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x60]
+
+    e_subn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x65]
+
+    e_subn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x6f]
+
+    e_subn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x7f]
+
+    e_subn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x6a]
+
+    e_subn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x60]
+
+    e_subn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x65]
+
+    e_subn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x6f]
+
+    e_subn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x7f]
+
+    e_subn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x6a]
+
+    e_subn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x60]
+
+    e_subn_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x08,0x60]
+
+    e_subn_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x28,0x65]
+
+    e_subn_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x59,0x6f]
+
+    e_subn_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x79,0x7f]
+
+    e_subn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x6a]
+
+    e_subn_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x08,0x60]
+
+    e_subn_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x28,0x65]
+
+    e_subn_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x59,0x6f]
+
+    e_subn_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x79,0x7f]
+
+    e_subn_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x18,0x6a]
+
+    e_subn_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x08,0x60]
+
+    e_subn_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x28,0x65]
+
+    e_subn_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x59,0x6f]
+
+    e_subn_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x79,0x7f]
+
+    e_subn_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x18,0x6a]
+
+    e_subn_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x08,0x60]
+
+    e_subn_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x08,0x60]
+
+    e_subn_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x28,0x65]
+
+    e_subn_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x59,0x6f]
+
+    e_subn_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x79,0x7f]
+
+    e_subn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x6a]
+
+    e_subn_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x08,0x60]
+
+    e_subn_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x28,0x65]
+
+    e_subn_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x59,0x6f]
+
+    e_subn_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x79,0x7f]
+
+    e_subn_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x18,0x6a]
+
+    e_subn_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x08,0x60]
+
+    e_subn_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x28,0x65]
+
+    e_subn_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x59,0x6f]
+
+    e_subn_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x79,0x7f]
+
+    e_subn_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x18,0x6a]
+
+    e_subn_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x08,0x60]
+
+    e_sub_f r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x00,0x80]
+
+    e_sub_f r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x20,0x80]
+
+    e_sub_f r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x51,0x80]
+
+    e_sub_f r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x71,0x80]
+
+    e_sub_f r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x10,0x80]
+
+    e_sub_f r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x00,0x80]
+
+    e_sub_f r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x20,0x80]
+
+    e_sub_f r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x51,0x80]
+
+    e_sub_f r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x71,0x80]
+
+    e_sub_f r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x10,0x80]
+
+    e_sub_f r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x00,0x80]
+
+    e_sub_f r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x20,0x80]
+
+    e_sub_f r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x51,0x80]
+
+    e_sub_f r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x71,0x80]
+
+    e_sub_f r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x10,0x80]
+
+    e_sub_f r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x00,0x80]
+
+    e_sub_fs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x00,0x80]
+
+    e_sub_fs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x20,0x80]
+
+    e_sub_fs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x51,0x80]
+
+    e_sub_fs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x71,0x80]
+
+    e_sub_fs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x10,0x80]
+
+    e_sub_fs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x00,0x80]
+
+    e_sub_fs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x20,0x80]
+
+    e_sub_fs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x51,0x80]
+
+    e_sub_fs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x71,0x80]
+
+    e_sub_fs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x10,0x80]
+
+    e_sub_fs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x00,0x80]
+
+    e_sub_fs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x20,0x80]
+
+    e_sub_fs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x51,0x80]
+
+    e_sub_fs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x71,0x80]
+
+    e_sub_fs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x10,0x80]
+
+    e_sub_fs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x00,0x80]
+
+    e_sub_f_ze r0, r0, r0
+# CHECK: encoding: [0x28,0x00,0x00,0x80]
+
+    e_sub_f_nz r2, r2, r2
+# CHECK: encoding: [0x48,0x88,0x20,0x80]
+
+    e_sub_f_po r5, r5, r5
+# CHECK: encoding: [0x68,0x54,0x51,0x80]
+
+    e_sub_f_ne r7, r7, r7
+# CHECK: encoding: [0x88,0xdc,0x71,0x80]
+
+    e_sub_f r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x10,0x80]
+
+    e_sub_f_az r0, r0, r0
+# CHECK: encoding: [0xa8,0x00,0x00,0x80]
+
+    e_sub_f_zb r2, r2, r2
+# CHECK: encoding: [0xc8,0x88,0x20,0x80]
+
+    e_sub_f_ca r5, r5, r5
+# CHECK: encoding: [0xe8,0x54,0x51,0x80]
+
+    e_sub_f_nc r7, r7, r7
+# CHECK: encoding: [0x08,0xdd,0x71,0x80]
+
+    e_sub_f_cz r1, r1, r1
+# CHECK: encoding: [0x28,0x45,0x10,0x80]
+
+    e_sub_f_spo r0, r0, r0
+# CHECK: encoding: [0x48,0x01,0x00,0x80]
+
+    e_sub_f_sne r2, r2, r2
+# CHECK: encoding: [0x68,0x89,0x20,0x80]
+
+    e_sub_f_nbs r5, r5, r5
+# CHECK: encoding: [0x88,0x55,0x51,0x80]
+
+    e_sub_f_nex r7, r7, r7
+# CHECK: encoding: [0xa8,0xdd,0x71,0x80]
+
+    e_sub_f_bs r1, r1, r1
+# CHECK: encoding: [0xc8,0x45,0x10,0x80]
+
+    e_sub_f_ex r0, r0, r0
+# CHECK: encoding: [0xe8,0x01,0x00,0x80]
+
+    e_sub_fs_ze r0, r0, r0
+# CHECK: encoding: [0x28,0x02,0x00,0x80]
+
+    e_sub_fs_nz r2, r2, r2
+# CHECK: encoding: [0x48,0x8a,0x20,0x80]
+
+    e_sub_fs_po r5, r5, r5
+# CHECK: encoding: [0x68,0x56,0x51,0x80]
+
+    e_sub_fs_ne r7, r7, r7
+# CHECK: encoding: [0x88,0xde,0x71,0x80]
+
+    e_sub_fs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x10,0x80]
+
+    e_sub_fs_az r0, r0, r0
+# CHECK: encoding: [0xa8,0x02,0x00,0x80]
+
+    e_sub_fs_zb r2, r2, r2
+# CHECK: encoding: [0xc8,0x8a,0x20,0x80]
+
+    e_sub_fs_ca r5, r5, r5
+# CHECK: encoding: [0xe8,0x56,0x51,0x80]
+
+    e_sub_fs_nc r7, r7, r7
+# CHECK: encoding: [0x08,0xdf,0x71,0x80]
+
+    e_sub_fs_cz r1, r1, r1
+# CHECK: encoding: [0x28,0x47,0x10,0x80]
+
+    e_sub_fs_spo r0, r0, r0
+# CHECK: encoding: [0x48,0x03,0x00,0x80]
+
+    e_sub_fs_sne r2, r2, r2
+# CHECK: encoding: [0x68,0x8b,0x20,0x80]
+
+    e_sub_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x88,0x57,0x51,0x80]
+
+    e_sub_fs_nex r7, r7, r7
+# CHECK: encoding: [0xa8,0xdf,0x71,0x80]
+
+    e_sub_fs_bs r1, r1, r1
+# CHECK: encoding: [0xc8,0x47,0x10,0x80]
+
+    e_sub_fs_ex r0, r0, r0
+# CHECK: encoding: [0xe8,0x03,0x00,0x80]
+
+    e_subn_f r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x08,0x80]
+
+    e_subn_f r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x28,0x80]
+
+    e_subn_f r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x59,0x80]
+
+    e_subn_f r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x79,0x80]
+
+    e_subn_f r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x18,0x80]
+
+    e_subn_f r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x08,0x80]
+
+    e_subn_f r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x28,0x80]
+
+    e_subn_f r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x59,0x80]
+
+    e_subn_f r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x79,0x80]
+
+    e_subn_f r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x18,0x80]
+
+    e_subn_f r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x08,0x80]
+
+    e_subn_f r2, r2, r2
+# CHECK: encoding: [0x08,0x88,0x28,0x80]
+
+    e_subn_f r5, r5, r5
+# CHECK: encoding: [0x08,0x54,0x59,0x80]
+
+    e_subn_f r7, r7, r7
+# CHECK: encoding: [0x08,0xdc,0x79,0x80]
+
+    e_subn_f r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x18,0x80]
+
+    e_subn_f r0, r0, r0
+# CHECK: encoding: [0x08,0x00,0x08,0x80]
+
+    e_subn_fs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x08,0x80]
+
+    e_subn_fs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x28,0x80]
+
+    e_subn_fs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x59,0x80]
+
+    e_subn_fs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x79,0x80]
+
+    e_subn_fs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x18,0x80]
+
+    e_subn_fs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x08,0x80]
+
+    e_subn_fs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x28,0x80]
+
+    e_subn_fs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x59,0x80]
+
+    e_subn_fs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x79,0x80]
+
+    e_subn_fs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x18,0x80]
+
+    e_subn_fs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x08,0x80]
+
+    e_subn_fs r2, r2, r2
+# CHECK: encoding: [0x08,0x8a,0x28,0x80]
+
+    e_subn_fs r5, r5, r5
+# CHECK: encoding: [0x08,0x56,0x59,0x80]
+
+    e_subn_fs r7, r7, r7
+# CHECK: encoding: [0x08,0xde,0x79,0x80]
+
+    e_subn_fs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x18,0x80]
+
+    e_subn_fs r0, r0, r0
+# CHECK: encoding: [0x08,0x02,0x08,0x80]
+
+    e_subn_f_ze r0, r0, r0
+# CHECK: encoding: [0x28,0x00,0x08,0x80]
+
+    e_subn_f_nz r2, r2, r2
+# CHECK: encoding: [0x48,0x88,0x28,0x80]
+
+    e_subn_f_po r5, r5, r5
+# CHECK: encoding: [0x68,0x54,0x59,0x80]
+
+    e_subn_f_ne r7, r7, r7
+# CHECK: encoding: [0x88,0xdc,0x79,0x80]
+
+    e_subn_f r1, r1, r1
+# CHECK: encoding: [0x08,0x44,0x18,0x80]
+
+    e_subn_f_az r0, r0, r0
+# CHECK: encoding: [0xa8,0x00,0x08,0x80]
+
+    e_subn_f_zb r2, r2, r2
+# CHECK: encoding: [0xc8,0x88,0x28,0x80]
+
+    e_subn_f_ca r5, r5, r5
+# CHECK: encoding: [0xe8,0x54,0x59,0x80]
+
+    e_subn_f_nc r7, r7, r7
+# CHECK: encoding: [0x08,0xdd,0x79,0x80]
+
+    e_subn_f_cz r1, r1, r1
+# CHECK: encoding: [0x28,0x45,0x18,0x80]
+
+    e_subn_f_spo r0, r0, r0
+# CHECK: encoding: [0x48,0x01,0x08,0x80]
+
+    e_subn_f_sne r2, r2, r2
+# CHECK: encoding: [0x68,0x89,0x28,0x80]
+
+    e_subn_f_nbs r5, r5, r5
+# CHECK: encoding: [0x88,0x55,0x59,0x80]
+
+    e_subn_f_nex r7, r7, r7
+# CHECK: encoding: [0xa8,0xdd,0x79,0x80]
+
+    e_subn_f_bs r1, r1, r1
+# CHECK: encoding: [0xc8,0x45,0x18,0x80]
+
+    e_subn_f_ex r0, r0, r0
+# CHECK: encoding: [0xe8,0x01,0x08,0x80]
+
+    e_subn_fs_ze r0, r0, r0
+# CHECK: encoding: [0x28,0x02,0x08,0x80]
+
+    e_subn_fs_nz r2, r2, r2
+# CHECK: encoding: [0x48,0x8a,0x28,0x80]
+
+    e_subn_fs_po r5, r5, r5
+# CHECK: encoding: [0x68,0x56,0x59,0x80]
+
+    e_subn_fs_ne r7, r7, r7
+# CHECK: encoding: [0x88,0xde,0x79,0x80]
+
+    e_subn_fs r1, r1, r1
+# CHECK: encoding: [0x08,0x46,0x18,0x80]
+
+    e_subn_fs_az r0, r0, r0
+# CHECK: encoding: [0xa8,0x02,0x08,0x80]
+
+    e_subn_fs_zb r2, r2, r2
+# CHECK: encoding: [0xc8,0x8a,0x28,0x80]
+
+    e_subn_fs_ca r5, r5, r5
+# CHECK: encoding: [0xe8,0x56,0x59,0x80]
+
+    e_subn_fs_nc r7, r7, r7
+# CHECK: encoding: [0x08,0xdf,0x79,0x80]
+
+    e_subn_fs_cz r1, r1, r1
+# CHECK: encoding: [0x28,0x47,0x18,0x80]
+
+    e_subn_fs_spo r0, r0, r0
+# CHECK: encoding: [0x48,0x03,0x08,0x80]
+
+    e_subn_fs_sne r2, r2, r2
+# CHECK: encoding: [0x68,0x8b,0x28,0x80]
+
+    e_subn_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x88,0x57,0x59,0x80]
+
+    e_subn_fs_nex r7, r7, r7
+# CHECK: encoding: [0xa8,0xdf,0x79,0x80]
+
+    e_subn_fs_bs r1, r1, r1
+# CHECK: encoding: [0xc8,0x47,0x18,0x80]
+
+    e_subn_fs_ex r0, r0, r0
+# CHECK: encoding: [0xe8,0x03,0x08,0x80]
+
+    e_sub_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x80]
+
+    e_sub_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x85]
+
+    e_sub_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x8f]
+
+    e_sub_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x9f]
+
+    e_sub_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x8a]
+
+    e_sub_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x80]
+
+    e_sub_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x85]
+
+    e_sub_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x8f]
+
+    e_sub_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x9f]
+
+    e_sub_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x8a]
+
+    e_sub_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x80]
+
+    e_sub_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0x85]
+
+    e_sub_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0x8f]
+
+    e_sub_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0x9f]
+
+    e_sub_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x8a]
+
+    e_sub_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0x80]
+
+    e_sub_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x80]
+
+    e_sub_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x85]
+
+    e_sub_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x8f]
+
+    e_sub_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x9f]
+
+    e_sub_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x8a]
+
+    e_sub_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x80]
+
+    e_sub_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x85]
+
+    e_sub_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x8f]
+
+    e_sub_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x9f]
+
+    e_sub_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x8a]
+
+    e_sub_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x80]
+
+    e_sub_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0x85]
+
+    e_sub_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0x8f]
+
+    e_sub_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0x9f]
+
+    e_sub_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x8a]
+
+    e_sub_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0x80]
+
+    e_sub_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x00,0x80]
+
+    e_sub_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x20,0x85]
+
+    e_sub_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x51,0x8f]
+
+    e_sub_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x71,0x9f]
+
+    e_sub_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0x8a]
+
+    e_sub_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x00,0x80]
+
+    e_sub_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x20,0x85]
+
+    e_sub_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x51,0x8f]
+
+    e_sub_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x71,0x9f]
+
+    e_sub_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x10,0x8a]
+
+    e_sub_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x00,0x80]
+
+    e_sub_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x20,0x85]
+
+    e_sub_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x51,0x8f]
+
+    e_sub_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x71,0x9f]
+
+    e_sub_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x10,0x8a]
+
+    e_sub_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x00,0x80]
+
+    e_sub_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x00,0x80]
+
+    e_sub_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x20,0x85]
+
+    e_sub_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x51,0x8f]
+
+    e_sub_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x71,0x9f]
+
+    e_sub_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0x8a]
+
+    e_sub_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x00,0x80]
+
+    e_sub_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x20,0x85]
+
+    e_sub_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x51,0x8f]
+
+    e_sub_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x71,0x9f]
+
+    e_sub_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x10,0x8a]
+
+    e_sub_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x00,0x80]
+
+    e_sub_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x20,0x85]
+
+    e_sub_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x51,0x8f]
+
+    e_sub_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x71,0x9f]
+
+    e_sub_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x10,0x8a]
+
+    e_sub_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x00,0x80]
+
+    e_subn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x80]
+
+    e_subn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x85]
+
+    e_subn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x8f]
+
+    e_subn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x9f]
+
+    e_subn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x8a]
+
+    e_subn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x80]
+
+    e_subn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x85]
+
+    e_subn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x8f]
+
+    e_subn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x9f]
+
+    e_subn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x8a]
+
+    e_subn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x80]
+
+    e_subn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0x85]
+
+    e_subn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0x8f]
+
+    e_subn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0x9f]
+
+    e_subn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x8a]
+
+    e_subn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0x80]
+
+    e_subn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x80]
+
+    e_subn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x85]
+
+    e_subn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x8f]
+
+    e_subn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x9f]
+
+    e_subn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x8a]
+
+    e_subn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x80]
+
+    e_subn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x85]
+
+    e_subn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x8f]
+
+    e_subn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x9f]
+
+    e_subn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x8a]
+
+    e_subn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x80]
+
+    e_subn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0x85]
+
+    e_subn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0x8f]
+
+    e_subn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0x9f]
+
+    e_subn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x8a]
+
+    e_subn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0x80]
+
+    e_subn_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x08,0x80]
+
+    e_subn_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x28,0x85]
+
+    e_subn_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x59,0x8f]
+
+    e_subn_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x79,0x9f]
+
+    e_subn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0x8a]
+
+    e_subn_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x08,0x80]
+
+    e_subn_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x28,0x85]
+
+    e_subn_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x59,0x8f]
+
+    e_subn_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x79,0x9f]
+
+    e_subn_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x18,0x8a]
+
+    e_subn_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x08,0x80]
+
+    e_subn_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x28,0x85]
+
+    e_subn_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x59,0x8f]
+
+    e_subn_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x79,0x9f]
+
+    e_subn_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x18,0x8a]
+
+    e_subn_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x08,0x80]
+
+    e_subn_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x08,0x80]
+
+    e_subn_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x28,0x85]
+
+    e_subn_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x59,0x8f]
+
+    e_subn_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x79,0x9f]
+
+    e_subn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0x8a]
+
+    e_subn_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x08,0x80]
+
+    e_subn_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x28,0x85]
+
+    e_subn_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x59,0x8f]
+
+    e_subn_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x79,0x9f]
+
+    e_subn_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x18,0x8a]
+
+    e_subn_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x08,0x80]
+
+    e_subn_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x28,0x85]
+
+    e_subn_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x59,0x8f]
+
+    e_subn_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x79,0x9f]
+
+    e_subn_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x18,0x8a]
+
+    e_subn_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x08,0x80]
+
+    e_sub_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xc0]
+
+    e_sub_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xc5]
+
+    e_sub_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xcf]
+
+    e_sub_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xdf]
+
+    e_sub_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xca]
+
+    e_sub_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xc0]
+
+    e_sub_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xc5]
+
+    e_sub_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xcf]
+
+    e_sub_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xdf]
+
+    e_sub_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xca]
+
+    e_sub_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xc0]
+
+    e_sub_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xc5]
+
+    e_sub_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xcf]
+
+    e_sub_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xdf]
+
+    e_sub_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xca]
+
+    e_sub_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xc0]
+
+    e_sub_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xc0]
+
+    e_sub_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xc5]
+
+    e_sub_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xcf]
+
+    e_sub_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xdf]
+
+    e_sub_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xca]
+
+    e_sub_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xc0]
+
+    e_sub_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xc5]
+
+    e_sub_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xcf]
+
+    e_sub_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xdf]
+
+    e_sub_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xca]
+
+    e_sub_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xc0]
+
+    e_sub_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xc5]
+
+    e_sub_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xcf]
+
+    e_sub_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xdf]
+
+    e_sub_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xca]
+
+    e_sub_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xc0]
+
+    e_sub_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x00,0xc0]
+
+    e_sub_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x20,0xc5]
+
+    e_sub_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x51,0xcf]
+
+    e_sub_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x71,0xdf]
+
+    e_sub_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xca]
+
+    e_sub_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x00,0xc0]
+
+    e_sub_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x20,0xc5]
+
+    e_sub_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x51,0xcf]
+
+    e_sub_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x71,0xdf]
+
+    e_sub_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x10,0xca]
+
+    e_sub_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x00,0xc0]
+
+    e_sub_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x20,0xc5]
+
+    e_sub_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x51,0xcf]
+
+    e_sub_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x71,0xdf]
+
+    e_sub_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x10,0xca]
+
+    e_sub_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x00,0xc0]
+
+    e_sub_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x00,0xc0]
+
+    e_sub_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x20,0xc5]
+
+    e_sub_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x51,0xcf]
+
+    e_sub_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x71,0xdf]
+
+    e_sub_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xca]
+
+    e_sub_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x00,0xc0]
+
+    e_sub_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x20,0xc5]
+
+    e_sub_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x51,0xcf]
+
+    e_sub_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x71,0xdf]
+
+    e_sub_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x10,0xca]
+
+    e_sub_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x00,0xc0]
+
+    e_sub_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x20,0xc5]
+
+    e_sub_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x51,0xcf]
+
+    e_sub_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x71,0xdf]
+
+    e_sub_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x10,0xca]
+
+    e_sub_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x00,0xc0]
+
+    e_subn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xc0]
+
+    e_subn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xc5]
+
+    e_subn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xcf]
+
+    e_subn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xdf]
+
+    e_subn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xca]
+
+    e_subn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xc0]
+
+    e_subn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xc5]
+
+    e_subn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xcf]
+
+    e_subn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xdf]
+
+    e_subn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xca]
+
+    e_subn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xc0]
+
+    e_subn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xc5]
+
+    e_subn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xcf]
+
+    e_subn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xdf]
+
+    e_subn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xca]
+
+    e_subn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xc0]
+
+    e_subn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xc0]
+
+    e_subn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xc5]
+
+    e_subn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xcf]
+
+    e_subn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xdf]
+
+    e_subn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xca]
+
+    e_subn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xc0]
+
+    e_subn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xc5]
+
+    e_subn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xcf]
+
+    e_subn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xdf]
+
+    e_subn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xca]
+
+    e_subn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xc0]
+
+    e_subn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xc5]
+
+    e_subn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xcf]
+
+    e_subn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xdf]
+
+    e_subn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xca]
+
+    e_subn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xc0]
+
+    e_subn_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x08,0xc0]
+
+    e_subn_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x28,0xc5]
+
+    e_subn_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x59,0xcf]
+
+    e_subn_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x79,0xdf]
+
+    e_subn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xca]
+
+    e_subn_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x08,0xc0]
+
+    e_subn_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x28,0xc5]
+
+    e_subn_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x59,0xcf]
+
+    e_subn_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x79,0xdf]
+
+    e_subn_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x18,0xca]
+
+    e_subn_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x08,0xc0]
+
+    e_subn_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x28,0xc5]
+
+    e_subn_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x59,0xcf]
+
+    e_subn_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x79,0xdf]
+
+    e_subn_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x18,0xca]
+
+    e_subn_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x08,0xc0]
+
+    e_subn_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x08,0xc0]
+
+    e_subn_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x28,0xc5]
+
+    e_subn_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x59,0xcf]
+
+    e_subn_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x79,0xdf]
+
+    e_subn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xca]
+
+    e_subn_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x08,0xc0]
+
+    e_subn_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x28,0xc5]
+
+    e_subn_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x59,0xcf]
+
+    e_subn_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x79,0xdf]
+
+    e_subn_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x18,0xca]
+
+    e_subn_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x08,0xc0]
+
+    e_subn_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x28,0xc5]
+
+    e_subn_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x59,0xcf]
+
+    e_subn_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x79,0xdf]
+
+    e_subn_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x18,0xca]
+
+    e_subn_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x08,0xc0]
+
+    e_sub_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xa0]
+
+    e_sub_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xa5]
+
+    e_sub_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xaf]
+
+    e_sub_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xbf]
+
+    e_sub_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xaa]
+
+    e_sub_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xa0]
+
+    e_sub_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xa5]
+
+    e_sub_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xaf]
+
+    e_sub_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xbf]
+
+    e_sub_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xaa]
+
+    e_sub_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xa0]
+
+    e_sub_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xa5]
+
+    e_sub_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xaf]
+
+    e_sub_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xbf]
+
+    e_sub_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xaa]
+
+    e_sub_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xa0]
+
+    e_sub_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xa0]
+
+    e_sub_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xa5]
+
+    e_sub_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xaf]
+
+    e_sub_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xbf]
+
+    e_sub_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xaa]
+
+    e_sub_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xa0]
+
+    e_sub_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xa5]
+
+    e_sub_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xaf]
+
+    e_sub_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xbf]
+
+    e_sub_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xaa]
+
+    e_sub_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xa0]
+
+    e_sub_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xa5]
+
+    e_sub_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xaf]
+
+    e_sub_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xbf]
+
+    e_sub_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xaa]
+
+    e_sub_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xa0]
+
+    e_sub_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x00,0xa0]
+
+    e_sub_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x20,0xa5]
+
+    e_sub_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x51,0xaf]
+
+    e_sub_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x71,0xbf]
+
+    e_sub_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xaa]
+
+    e_sub_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x00,0xa0]
+
+    e_sub_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x20,0xa5]
+
+    e_sub_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x51,0xaf]
+
+    e_sub_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x71,0xbf]
+
+    e_sub_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x10,0xaa]
+
+    e_sub_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x00,0xa0]
+
+    e_sub_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x20,0xa5]
+
+    e_sub_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x51,0xaf]
+
+    e_sub_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x71,0xbf]
+
+    e_sub_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x10,0xaa]
+
+    e_sub_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x00,0xa0]
+
+    e_sub_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x00,0xa0]
+
+    e_sub_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x20,0xa5]
+
+    e_sub_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x51,0xaf]
+
+    e_sub_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x71,0xbf]
+
+    e_sub_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xaa]
+
+    e_sub_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x00,0xa0]
+
+    e_sub_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x20,0xa5]
+
+    e_sub_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x51,0xaf]
+
+    e_sub_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x71,0xbf]
+
+    e_sub_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x10,0xaa]
+
+    e_sub_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x00,0xa0]
+
+    e_sub_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x20,0xa5]
+
+    e_sub_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x51,0xaf]
+
+    e_sub_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x71,0xbf]
+
+    e_sub_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x10,0xaa]
+
+    e_sub_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x00,0xa0]
+
+    e_subn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xa0]
+
+    e_subn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xa5]
+
+    e_subn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xaf]
+
+    e_subn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xbf]
+
+    e_subn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xaa]
+
+    e_subn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xa0]
+
+    e_subn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xa5]
+
+    e_subn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xaf]
+
+    e_subn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xbf]
+
+    e_subn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xaa]
+
+    e_subn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xa0]
+
+    e_subn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xa5]
+
+    e_subn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xaf]
+
+    e_subn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xbf]
+
+    e_subn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xaa]
+
+    e_subn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xa0]
+
+    e_subn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xa0]
+
+    e_subn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xa5]
+
+    e_subn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xaf]
+
+    e_subn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xbf]
+
+    e_subn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xaa]
+
+    e_subn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xa0]
+
+    e_subn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xa5]
+
+    e_subn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xaf]
+
+    e_subn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xbf]
+
+    e_subn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xaa]
+
+    e_subn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xa0]
+
+    e_subn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xa5]
+
+    e_subn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xaf]
+
+    e_subn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xbf]
+
+    e_subn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xaa]
+
+    e_subn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xa0]
+
+    e_subn_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x08,0xa0]
+
+    e_subn_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x28,0xa5]
+
+    e_subn_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x59,0xaf]
+
+    e_subn_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x79,0xbf]
+
+    e_subn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xaa]
+
+    e_subn_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x08,0xa0]
+
+    e_subn_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x28,0xa5]
+
+    e_subn_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x59,0xaf]
+
+    e_subn_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x79,0xbf]
+
+    e_subn_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x18,0xaa]
+
+    e_subn_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x08,0xa0]
+
+    e_subn_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x28,0xa5]
+
+    e_subn_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x59,0xaf]
+
+    e_subn_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x79,0xbf]
+
+    e_subn_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x18,0xaa]
+
+    e_subn_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x08,0xa0]
+
+    e_subn_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x08,0xa0]
+
+    e_subn_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x28,0xa5]
+
+    e_subn_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x59,0xaf]
+
+    e_subn_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x79,0xbf]
+
+    e_subn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xaa]
+
+    e_subn_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x08,0xa0]
+
+    e_subn_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x28,0xa5]
+
+    e_subn_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x59,0xaf]
+
+    e_subn_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x79,0xbf]
+
+    e_subn_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x18,0xaa]
+
+    e_subn_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x08,0xa0]
+
+    e_subn_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x28,0xa5]
+
+    e_subn_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x59,0xaf]
+
+    e_subn_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x79,0xbf]
+
+    e_subn_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x18,0xaa]
+
+    e_subn_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x08,0xa0]
+
+    e_sub_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xe0]
+
+    e_sub_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xe5]
+
+    e_sub_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xef]
+
+    e_sub_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xff]
+
+    e_sub_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xea]
+
+    e_sub_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xe0]
+
+    e_sub_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xe5]
+
+    e_sub_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xef]
+
+    e_sub_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xff]
+
+    e_sub_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xea]
+
+    e_sub_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xe0]
+
+    e_sub_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x20,0xe5]
+
+    e_sub_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x51,0xef]
+
+    e_sub_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x71,0xff]
+
+    e_sub_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xea]
+
+    e_sub_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x00,0xe0]
+
+    e_sub_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xe0]
+
+    e_sub_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xe5]
+
+    e_sub_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xef]
+
+    e_sub_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xff]
+
+    e_sub_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xea]
+
+    e_sub_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xe0]
+
+    e_sub_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xe5]
+
+    e_sub_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xef]
+
+    e_sub_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xff]
+
+    e_sub_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xea]
+
+    e_sub_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xe0]
+
+    e_sub_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x20,0xe5]
+
+    e_sub_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x51,0xef]
+
+    e_sub_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x71,0xff]
+
+    e_sub_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xea]
+
+    e_sub_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x00,0xe0]
+
+    e_sub_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x00,0xe0]
+
+    e_sub_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x20,0xe5]
+
+    e_sub_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x51,0xef]
+
+    e_sub_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x71,0xff]
+
+    e_sub_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x10,0xea]
+
+    e_sub_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x00,0xe0]
+
+    e_sub_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x20,0xe5]
+
+    e_sub_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x51,0xef]
+
+    e_sub_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x71,0xff]
+
+    e_sub_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x10,0xea]
+
+    e_sub_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x00,0xe0]
+
+    e_sub_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x20,0xe5]
+
+    e_sub_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x51,0xef]
+
+    e_sub_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x71,0xff]
+
+    e_sub_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x10,0xea]
+
+    e_sub_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x00,0xe0]
+
+    e_sub_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x00,0xe0]
+
+    e_sub_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x20,0xe5]
+
+    e_sub_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x51,0xef]
+
+    e_sub_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x71,0xff]
+
+    e_sub_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x10,0xea]
+
+    e_sub_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x00,0xe0]
+
+    e_sub_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x20,0xe5]
+
+    e_sub_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x51,0xef]
+
+    e_sub_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x71,0xff]
+
+    e_sub_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x10,0xea]
+
+    e_sub_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x00,0xe0]
+
+    e_sub_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x20,0xe5]
+
+    e_sub_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x51,0xef]
+
+    e_sub_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x71,0xff]
+
+    e_sub_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x10,0xea]
+
+    e_sub_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x00,0xe0]
+
+    e_subn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xe0]
+
+    e_subn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xe5]
+
+    e_subn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xef]
+
+    e_subn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xff]
+
+    e_subn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xea]
+
+    e_subn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xe0]
+
+    e_subn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xe5]
+
+    e_subn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xef]
+
+    e_subn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xff]
+
+    e_subn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xea]
+
+    e_subn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xe0]
+
+    e_subn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x88,0x28,0xe5]
+
+    e_subn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x54,0x59,0xef]
+
+    e_subn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdc,0x79,0xff]
+
+    e_subn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xea]
+
+    e_subn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x00,0x08,0xe0]
+
+    e_subn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xe0]
+
+    e_subn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xe5]
+
+    e_subn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xef]
+
+    e_subn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xff]
+
+    e_subn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xea]
+
+    e_subn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xe0]
+
+    e_subn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xe5]
+
+    e_subn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xef]
+
+    e_subn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xff]
+
+    e_subn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xea]
+
+    e_subn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xe0]
+
+    e_subn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x08,0x8a,0x28,0xe5]
+
+    e_subn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x08,0x56,0x59,0xef]
+
+    e_subn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xde,0x79,0xff]
+
+    e_subn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xea]
+
+    e_subn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x08,0x02,0x08,0xe0]
+
+    e_subn_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x00,0x08,0xe0]
+
+    e_subn_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x88,0x28,0xe5]
+
+    e_subn_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x54,0x59,0xef]
+
+    e_subn_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xdc,0x79,0xff]
+
+    e_subn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x44,0x18,0xea]
+
+    e_subn_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x00,0x08,0xe0]
+
+    e_subn_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x88,0x28,0xe5]
+
+    e_subn_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x54,0x59,0xef]
+
+    e_subn_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdd,0x79,0xff]
+
+    e_subn_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x45,0x18,0xea]
+
+    e_subn_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x01,0x08,0xe0]
+
+    e_subn_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x89,0x28,0xe5]
+
+    e_subn_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x55,0x59,0xef]
+
+    e_subn_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdd,0x79,0xff]
+
+    e_subn_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x45,0x18,0xea]
+
+    e_subn_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x01,0x08,0xe0]
+
+    e_subn_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x28,0x02,0x08,0xe0]
+
+    e_subn_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x48,0x8a,0x28,0xe5]
+
+    e_subn_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x68,0x56,0x59,0xef]
+
+    e_subn_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x88,0xde,0x79,0xff]
+
+    e_subn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x08,0x46,0x18,0xea]
+
+    e_subn_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa8,0x02,0x08,0xe0]
+
+    e_subn_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc8,0x8a,0x28,0xe5]
+
+    e_subn_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe8,0x56,0x59,0xef]
+
+    e_subn_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x08,0xdf,0x79,0xff]
+
+    e_subn_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x28,0x47,0x18,0xea]
+
+    e_subn_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x48,0x03,0x08,0xe0]
+
+    e_subn_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x68,0x8b,0x28,0xe5]
+
+    e_subn_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x88,0x57,0x59,0xef]
+
+    e_subn_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa8,0xdf,0x79,0xff]
+
+    e_subn_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc8,0x47,0x18,0xea]
+
+    e_subn_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe8,0x03,0x08,0xe0]
+
+    e_adc r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x00,0x00]
+
+    e_adc r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x20,0x00]
+
+    e_adc r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x51,0x00]
+
+    e_adc r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x71,0x00]
+
+    e_adc r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x10,0x00]
+
+    e_adc r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x00,0x00]
+
+    e_adc r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x20,0x00]
+
+    e_adc r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x51,0x00]
+
+    e_adc r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x71,0x00]
+
+    e_adc r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x10,0x00]
+
+    e_adc r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x00,0x00]
+
+    e_adc r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x20,0x00]
+
+    e_adc r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x51,0x00]
+
+    e_adc r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x71,0x00]
+
+    e_adc r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x10,0x00]
+
+    e_adc r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x00,0x00]
+
+    e_adcs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x00,0x00]
+
+    e_adcs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x20,0x00]
+
+    e_adcs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x51,0x00]
+
+    e_adcs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x71,0x00]
+
+    e_adcs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x10,0x00]
+
+    e_adcs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x00,0x00]
+
+    e_adcs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x20,0x00]
+
+    e_adcs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x51,0x00]
+
+    e_adcs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x71,0x00]
+
+    e_adcs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x10,0x00]
+
+    e_adcs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x00,0x00]
+
+    e_adcs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x20,0x00]
+
+    e_adcs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x51,0x00]
+
+    e_adcs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x71,0x00]
+
+    e_adcs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x10,0x00]
+
+    e_adcs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x00,0x00]
+
+    e_adc_ze r0, r0, r0
+# CHECK: encoding: [0x29,0x00,0x00,0x00]
+
+    e_adc_nz r2, r2, r2
+# CHECK: encoding: [0x49,0x88,0x20,0x00]
+
+    e_adc_po r5, r5, r5
+# CHECK: encoding: [0x69,0x54,0x51,0x00]
+
+    e_adc_ne r7, r7, r7
+# CHECK: encoding: [0x89,0xdc,0x71,0x00]
+
+    e_adc r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x10,0x00]
+
+    e_adc_az r0, r0, r0
+# CHECK: encoding: [0xa9,0x00,0x00,0x00]
+
+    e_adc_zb r2, r2, r2
+# CHECK: encoding: [0xc9,0x88,0x20,0x00]
+
+    e_adc_ca r5, r5, r5
+# CHECK: encoding: [0xe9,0x54,0x51,0x00]
+
+    e_adc_nc r7, r7, r7
+# CHECK: encoding: [0x09,0xdd,0x71,0x00]
+
+    e_adc_cz r1, r1, r1
+# CHECK: encoding: [0x29,0x45,0x10,0x00]
+
+    e_adc_spo r0, r0, r0
+# CHECK: encoding: [0x49,0x01,0x00,0x00]
+
+    e_adc_sne r2, r2, r2
+# CHECK: encoding: [0x69,0x89,0x20,0x00]
+
+    e_adc_nbs r5, r5, r5
+# CHECK: encoding: [0x89,0x55,0x51,0x00]
+
+    e_adc_nex r7, r7, r7
+# CHECK: encoding: [0xa9,0xdd,0x71,0x00]
+
+    e_adc_bs r1, r1, r1
+# CHECK: encoding: [0xc9,0x45,0x10,0x00]
+
+    e_adc_ex r0, r0, r0
+# CHECK: encoding: [0xe9,0x01,0x00,0x00]
+
+    e_adcs_ze r0, r0, r0
+# CHECK: encoding: [0x29,0x02,0x00,0x00]
+
+    e_adcs_nz r2, r2, r2
+# CHECK: encoding: [0x49,0x8a,0x20,0x00]
+
+    e_adcs_po r5, r5, r5
+# CHECK: encoding: [0x69,0x56,0x51,0x00]
+
+    e_adcs_ne r7, r7, r7
+# CHECK: encoding: [0x89,0xde,0x71,0x00]
+
+    e_adcs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x10,0x00]
+
+    e_adcs_az r0, r0, r0
+# CHECK: encoding: [0xa9,0x02,0x00,0x00]
+
+    e_adcs_zb r2, r2, r2
+# CHECK: encoding: [0xc9,0x8a,0x20,0x00]
+
+    e_adcs_ca r5, r5, r5
+# CHECK: encoding: [0xe9,0x56,0x51,0x00]
+
+    e_adcs_nc r7, r7, r7
+# CHECK: encoding: [0x09,0xdf,0x71,0x00]
+
+    e_adcs_cz r1, r1, r1
+# CHECK: encoding: [0x29,0x47,0x10,0x00]
+
+    e_adcs_spo r0, r0, r0
+# CHECK: encoding: [0x49,0x03,0x00,0x00]
+
+    e_adcs_sne r2, r2, r2
+# CHECK: encoding: [0x69,0x8b,0x20,0x00]
+
+    e_adcs_nbs r5, r5, r5
+# CHECK: encoding: [0x89,0x57,0x51,0x00]
+
+    e_adcs_nex r7, r7, r7
+# CHECK: encoding: [0xa9,0xdf,0x71,0x00]
+
+    e_adcs_bs r1, r1, r1
+# CHECK: encoding: [0xc9,0x47,0x10,0x00]
+
+    e_adcs_ex r0, r0, r0
+# CHECK: encoding: [0xe9,0x03,0x00,0x00]
+
+    e_adcn r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x08,0x00]
+
+    e_adcn r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x28,0x00]
+
+    e_adcn r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x59,0x00]
+
+    e_adcn r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x79,0x00]
+
+    e_adcn r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x18,0x00]
+
+    e_adcn r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x08,0x00]
+
+    e_adcn r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x28,0x00]
+
+    e_adcn r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x59,0x00]
+
+    e_adcn r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x79,0x00]
+
+    e_adcn r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x18,0x00]
+
+    e_adcn r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x08,0x00]
+
+    e_adcn r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x28,0x00]
+
+    e_adcn r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x59,0x00]
+
+    e_adcn r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x79,0x00]
+
+    e_adcn r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x18,0x00]
+
+    e_adcn r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x08,0x00]
+
+    e_adcns r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x08,0x00]
+
+    e_adcns r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x28,0x00]
+
+    e_adcns r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x59,0x00]
+
+    e_adcns r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x79,0x00]
+
+    e_adcns r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x18,0x00]
+
+    e_adcns r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x08,0x00]
+
+    e_adcns r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x28,0x00]
+
+    e_adcns r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x59,0x00]
+
+    e_adcns r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x79,0x00]
+
+    e_adcns r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x18,0x00]
+
+    e_adcns r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x08,0x00]
+
+    e_adcns r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x28,0x00]
+
+    e_adcns r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x59,0x00]
+
+    e_adcns r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x79,0x00]
+
+    e_adcns r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x18,0x00]
+
+    e_adcns r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x08,0x00]
+
+    e_adcn_ze r0, r0, r0
+# CHECK: encoding: [0x29,0x00,0x08,0x00]
+
+    e_adcn_nz r2, r2, r2
+# CHECK: encoding: [0x49,0x88,0x28,0x00]
+
+    e_adcn_po r5, r5, r5
+# CHECK: encoding: [0x69,0x54,0x59,0x00]
+
+    e_adcn_ne r7, r7, r7
+# CHECK: encoding: [0x89,0xdc,0x79,0x00]
+
+    e_adcn r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x18,0x00]
+
+    e_adcn_az r0, r0, r0
+# CHECK: encoding: [0xa9,0x00,0x08,0x00]
+
+    e_adcn_zb r2, r2, r2
+# CHECK: encoding: [0xc9,0x88,0x28,0x00]
+
+    e_adcn_ca r5, r5, r5
+# CHECK: encoding: [0xe9,0x54,0x59,0x00]
+
+    e_adcn_nc r7, r7, r7
+# CHECK: encoding: [0x09,0xdd,0x79,0x00]
+
+    e_adcn_cz r1, r1, r1
+# CHECK: encoding: [0x29,0x45,0x18,0x00]
+
+    e_adcn_spo r0, r0, r0
+# CHECK: encoding: [0x49,0x01,0x08,0x00]
+
+    e_adcn_sne r2, r2, r2
+# CHECK: encoding: [0x69,0x89,0x28,0x00]
+
+    e_adcn_nbs r5, r5, r5
+# CHECK: encoding: [0x89,0x55,0x59,0x00]
+
+    e_adcn_nex r7, r7, r7
+# CHECK: encoding: [0xa9,0xdd,0x79,0x00]
+
+    e_adcn_bs r1, r1, r1
+# CHECK: encoding: [0xc9,0x45,0x18,0x00]
+
+    e_adcn_ex r0, r0, r0
+# CHECK: encoding: [0xe9,0x01,0x08,0x00]
+
+    e_adcns_ze r0, r0, r0
+# CHECK: encoding: [0x29,0x02,0x08,0x00]
+
+    e_adcns_nz r2, r2, r2
+# CHECK: encoding: [0x49,0x8a,0x28,0x00]
+
+    e_adcns_po r5, r5, r5
+# CHECK: encoding: [0x69,0x56,0x59,0x00]
+
+    e_adcns_ne r7, r7, r7
+# CHECK: encoding: [0x89,0xde,0x79,0x00]
+
+    e_adcns r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x18,0x00]
+
+    e_adcns_az r0, r0, r0
+# CHECK: encoding: [0xa9,0x02,0x08,0x00]
+
+    e_adcns_zb r2, r2, r2
+# CHECK: encoding: [0xc9,0x8a,0x28,0x00]
+
+    e_adcns_ca r5, r5, r5
+# CHECK: encoding: [0xe9,0x56,0x59,0x00]
+
+    e_adcns_nc r7, r7, r7
+# CHECK: encoding: [0x09,0xdf,0x79,0x00]
+
+    e_adcns_cz r1, r1, r1
+# CHECK: encoding: [0x29,0x47,0x18,0x00]
+
+    e_adcns_spo r0, r0, r0
+# CHECK: encoding: [0x49,0x03,0x08,0x00]
+
+    e_adcns_sne r2, r2, r2
+# CHECK: encoding: [0x69,0x8b,0x28,0x00]
+
+    e_adcns_nbs r5, r5, r5
+# CHECK: encoding: [0x89,0x57,0x59,0x00]
+
+    e_adcns_nex r7, r7, r7
+# CHECK: encoding: [0xa9,0xdf,0x79,0x00]
+
+    e_adcns_bs r1, r1, r1
+# CHECK: encoding: [0xc9,0x47,0x18,0x00]
+
+    e_adcns_ex r0, r0, r0
+# CHECK: encoding: [0xe9,0x03,0x08,0x00]
+
+    e_adc_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x00,0xf4,0x3f]
+
+    e_adc_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x88,0x14,0xc0]
+
+    e_adc_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x54,0xf5,0x1f]
+
+    e_adc_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdc,0x15,0xe0]
+
+    e_adc_imm r1, r1, 0x1
+# CHECK: encoding: [0x09,0x44,0x14,0x00]
+
+    e_adc_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x00,0xf4,0x3f]
+
+    e_adc_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x88,0x14,0xc0]
+
+    e_adc_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x54,0xf5,0x1f]
+
+    e_adc_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdc,0x15,0xe0]
+
+    e_adc_imm r1, r1, 0x1
+# CHECK: encoding: [0x09,0x44,0x14,0x00]
+
+    e_adc_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x00,0xf4,0x3f]
+
+    e_adc_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x88,0x14,0xc0]
+
+    e_adc_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x54,0xf5,0x1f]
+
+    e_adc_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdc,0x15,0xe0]
+
+    e_adc_imm r1, r1, 0x1
+# CHECK: encoding: [0x09,0x44,0x14,0x00]
+
+    e_adc_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x00,0xf4,0x3f]
+
+    e_adc_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x02,0xf4,0x3f]
+
+    e_adc_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x8a,0x14,0xc0]
+
+    e_adc_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x56,0xf5,0x1f]
+
+    e_adc_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xde,0x15,0xe0]
+
+    e_adc_imms r1, r1, 0x1
+# CHECK: encoding: [0x09,0x46,0x14,0x00]
+
+    e_adc_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x02,0xf4,0x3f]
+
+    e_adc_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x8a,0x14,0xc0]
+
+    e_adc_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x56,0xf5,0x1f]
+
+    e_adc_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xde,0x15,0xe0]
+
+    e_adc_imms r1, r1, 0x1
+# CHECK: encoding: [0x09,0x46,0x14,0x00]
+
+    e_adc_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x02,0xf4,0x3f]
+
+    e_adc_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x8a,0x14,0xc0]
+
+    e_adc_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x56,0xf5,0x1f]
+
+    e_adc_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xde,0x15,0xe0]
+
+    e_adc_imms r1, r1, 0x1
+# CHECK: encoding: [0x09,0x46,0x14,0x00]
+
+    e_adc_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x02,0xf4,0x3f]
+
+    e_adc_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x29,0x00,0xf4,0x3f]
+
+    e_adc_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x49,0x88,0x14,0xc0]
+
+    e_adc_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x69,0x54,0xf5,0x1f]
+
+    e_adc_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x89,0xdc,0x15,0xe0]
+
+    e_adc_imm r1, r1, 0x1
+# CHECK: encoding: [0x09,0x44,0x14,0x00]
+
+    e_adc_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa9,0x00,0xf4,0x3f]
+
+    e_adc_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc9,0x88,0x14,0xc0]
+
+    e_adc_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe9,0x54,0xf5,0x1f]
+
+    e_adc_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdd,0x15,0xe0]
+
+    e_adc_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x29,0x45,0x14,0x00]
+
+    e_adc_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x49,0x01,0xf4,0x3f]
+
+    e_adc_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x69,0x89,0x14,0xc0]
+
+    e_adc_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x89,0x55,0xf5,0x1f]
+
+    e_adc_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa9,0xdd,0x15,0xe0]
+
+    e_adc_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xc9,0x45,0x14,0x00]
+
+    e_adc_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe9,0x01,0xf4,0x3f]
+
+    e_adc_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x29,0x02,0xf4,0x3f]
+
+    e_adc_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x49,0x8a,0x14,0xc0]
+
+    e_adc_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x69,0x56,0xf5,0x1f]
+
+    e_adc_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x89,0xde,0x15,0xe0]
+
+    e_adc_imms r1, r1, 0x1
+# CHECK: encoding: [0x09,0x46,0x14,0x00]
+
+    e_adc_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa9,0x02,0xf4,0x3f]
+
+    e_adc_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc9,0x8a,0x14,0xc0]
+
+    e_adc_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe9,0x56,0xf5,0x1f]
+
+    e_adc_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdf,0x15,0xe0]
+
+    e_adc_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x29,0x47,0x14,0x00]
+
+    e_adc_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x49,0x03,0xf4,0x3f]
+
+    e_adc_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x69,0x8b,0x14,0xc0]
+
+    e_adc_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x89,0x57,0xf5,0x1f]
+
+    e_adc_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa9,0xdf,0x15,0xe0]
+
+    e_adc_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xc9,0x47,0x14,0x00]
+
+    e_adc_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe9,0x03,0xf4,0x3f]
+
+    e_adcn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x00,0xfc,0x3f]
+
+    e_adcn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x88,0x1c,0xc0]
+
+    e_adcn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x54,0xfd,0x1f]
+
+    e_adcn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdc,0x1d,0xe0]
+
+    e_adcn_imm r1, r1, 0x1
+# CHECK: encoding: [0x09,0x44,0x1c,0x00]
+
+    e_adcn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x00,0xfc,0x3f]
+
+    e_adcn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x88,0x1c,0xc0]
+
+    e_adcn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x54,0xfd,0x1f]
+
+    e_adcn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdc,0x1d,0xe0]
+
+    e_adcn_imm r1, r1, 0x1
+# CHECK: encoding: [0x09,0x44,0x1c,0x00]
+
+    e_adcn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x00,0xfc,0x3f]
+
+    e_adcn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x88,0x1c,0xc0]
+
+    e_adcn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x54,0xfd,0x1f]
+
+    e_adcn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdc,0x1d,0xe0]
+
+    e_adcn_imm r1, r1, 0x1
+# CHECK: encoding: [0x09,0x44,0x1c,0x00]
+
+    e_adcn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x00,0xfc,0x3f]
+
+    e_adcn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x02,0xfc,0x3f]
+
+    e_adcn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x8a,0x1c,0xc0]
+
+    e_adcn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x56,0xfd,0x1f]
+
+    e_adcn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xde,0x1d,0xe0]
+
+    e_adcn_imms r1, r1, 0x1
+# CHECK: encoding: [0x09,0x46,0x1c,0x00]
+
+    e_adcn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x02,0xfc,0x3f]
+
+    e_adcn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x8a,0x1c,0xc0]
+
+    e_adcn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x56,0xfd,0x1f]
+
+    e_adcn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xde,0x1d,0xe0]
+
+    e_adcn_imms r1, r1, 0x1
+# CHECK: encoding: [0x09,0x46,0x1c,0x00]
+
+    e_adcn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x02,0xfc,0x3f]
+
+    e_adcn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x09,0x8a,0x1c,0xc0]
+
+    e_adcn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x09,0x56,0xfd,0x1f]
+
+    e_adcn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xde,0x1d,0xe0]
+
+    e_adcn_imms r1, r1, 0x1
+# CHECK: encoding: [0x09,0x46,0x1c,0x00]
+
+    e_adcn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x09,0x02,0xfc,0x3f]
+
+    e_adcn_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x29,0x00,0xfc,0x3f]
+
+    e_adcn_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x49,0x88,0x1c,0xc0]
+
+    e_adcn_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x69,0x54,0xfd,0x1f]
+
+    e_adcn_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x89,0xdc,0x1d,0xe0]
+
+    e_adcn_imm r1, r1, 0x1
+# CHECK: encoding: [0x09,0x44,0x1c,0x00]
+
+    e_adcn_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa9,0x00,0xfc,0x3f]
+
+    e_adcn_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc9,0x88,0x1c,0xc0]
+
+    e_adcn_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe9,0x54,0xfd,0x1f]
+
+    e_adcn_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdd,0x1d,0xe0]
+
+    e_adcn_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x29,0x45,0x1c,0x00]
+
+    e_adcn_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x49,0x01,0xfc,0x3f]
+
+    e_adcn_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x69,0x89,0x1c,0xc0]
+
+    e_adcn_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x89,0x55,0xfd,0x1f]
+
+    e_adcn_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa9,0xdd,0x1d,0xe0]
+
+    e_adcn_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xc9,0x45,0x1c,0x00]
+
+    e_adcn_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe9,0x01,0xfc,0x3f]
+
+    e_adcn_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x29,0x02,0xfc,0x3f]
+
+    e_adcn_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x49,0x8a,0x1c,0xc0]
+
+    e_adcn_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x69,0x56,0xfd,0x1f]
+
+    e_adcn_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x89,0xde,0x1d,0xe0]
+
+    e_adcn_imms r1, r1, 0x1
+# CHECK: encoding: [0x09,0x46,0x1c,0x00]
+
+    e_adcn_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xa9,0x02,0xfc,0x3f]
+
+    e_adcn_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xc9,0x8a,0x1c,0xc0]
+
+    e_adcn_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xe9,0x56,0xfd,0x1f]
+
+    e_adcn_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x09,0xdf,0x1d,0xe0]
+
+    e_adcn_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x29,0x47,0x1c,0x00]
+
+    e_adcn_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x49,0x03,0xfc,0x3f]
+
+    e_adcn_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x69,0x8b,0x1c,0xc0]
+
+    e_adcn_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x89,0x57,0xfd,0x1f]
+
+    e_adcn_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xa9,0xdf,0x1d,0xe0]
+
+    e_adcn_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xc9,0x47,0x1c,0x00]
+
+    e_adcn_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xe9,0x03,0xfc,0x3f]
+
+    e_adc_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x00]
+
+    e_adc_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x05]
+
+    e_adc_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x0f]
+
+    e_adc_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x1f]
+
+    e_adc_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x0a]
+
+    e_adc_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x00]
+
+    e_adc_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x05]
+
+    e_adc_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x0f]
+
+    e_adc_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x1f]
+
+    e_adc_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x0a]
+
+    e_adc_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x00]
+
+    e_adc_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x05]
+
+    e_adc_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x0f]
+
+    e_adc_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x1f]
+
+    e_adc_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x0a]
+
+    e_adc_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x00]
+
+    e_adc_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x00]
+
+    e_adc_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x05]
+
+    e_adc_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x0f]
+
+    e_adc_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x1f]
+
+    e_adc_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x0a]
+
+    e_adc_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x00]
+
+    e_adc_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x05]
+
+    e_adc_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x0f]
+
+    e_adc_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x1f]
+
+    e_adc_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x0a]
+
+    e_adc_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x00]
+
+    e_adc_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x05]
+
+    e_adc_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x0f]
+
+    e_adc_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x1f]
+
+    e_adc_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x0a]
+
+    e_adc_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x00]
+
+    e_adc_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x00,0x00]
+
+    e_adc_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x20,0x05]
+
+    e_adc_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x51,0x0f]
+
+    e_adc_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x71,0x1f]
+
+    e_adc_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x0a]
+
+    e_adc_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x00,0x00]
+
+    e_adc_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x20,0x05]
+
+    e_adc_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x51,0x0f]
+
+    e_adc_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x71,0x1f]
+
+    e_adc_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x10,0x0a]
+
+    e_adc_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x00,0x00]
+
+    e_adc_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x20,0x05]
+
+    e_adc_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x51,0x0f]
+
+    e_adc_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x71,0x1f]
+
+    e_adc_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x10,0x0a]
+
+    e_adc_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x00,0x00]
+
+    e_adc_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x00,0x00]
+
+    e_adc_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x20,0x05]
+
+    e_adc_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x51,0x0f]
+
+    e_adc_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x71,0x1f]
+
+    e_adc_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x0a]
+
+    e_adc_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x00,0x00]
+
+    e_adc_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x20,0x05]
+
+    e_adc_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x51,0x0f]
+
+    e_adc_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x71,0x1f]
+
+    e_adc_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x10,0x0a]
+
+    e_adc_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x00,0x00]
+
+    e_adc_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x20,0x05]
+
+    e_adc_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x51,0x0f]
+
+    e_adc_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x71,0x1f]
+
+    e_adc_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x10,0x0a]
+
+    e_adc_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x00,0x00]
+
+    e_adcn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x00]
+
+    e_adcn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x05]
+
+    e_adcn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x0f]
+
+    e_adcn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x1f]
+
+    e_adcn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x0a]
+
+    e_adcn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x00]
+
+    e_adcn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x05]
+
+    e_adcn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x0f]
+
+    e_adcn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x1f]
+
+    e_adcn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x0a]
+
+    e_adcn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x00]
+
+    e_adcn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x05]
+
+    e_adcn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x0f]
+
+    e_adcn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x1f]
+
+    e_adcn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x0a]
+
+    e_adcn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x00]
+
+    e_adcn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x00]
+
+    e_adcn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x05]
+
+    e_adcn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x0f]
+
+    e_adcn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x1f]
+
+    e_adcn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x0a]
+
+    e_adcn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x00]
+
+    e_adcn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x05]
+
+    e_adcn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x0f]
+
+    e_adcn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x1f]
+
+    e_adcn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x0a]
+
+    e_adcn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x00]
+
+    e_adcn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x05]
+
+    e_adcn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x0f]
+
+    e_adcn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x1f]
+
+    e_adcn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x0a]
+
+    e_adcn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x00]
+
+    e_adcn_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x08,0x00]
+
+    e_adcn_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x28,0x05]
+
+    e_adcn_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x59,0x0f]
+
+    e_adcn_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x79,0x1f]
+
+    e_adcn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x0a]
+
+    e_adcn_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x08,0x00]
+
+    e_adcn_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x28,0x05]
+
+    e_adcn_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x59,0x0f]
+
+    e_adcn_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x79,0x1f]
+
+    e_adcn_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x18,0x0a]
+
+    e_adcn_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x08,0x00]
+
+    e_adcn_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x28,0x05]
+
+    e_adcn_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x59,0x0f]
+
+    e_adcn_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x79,0x1f]
+
+    e_adcn_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x18,0x0a]
+
+    e_adcn_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x08,0x00]
+
+    e_adcn_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x08,0x00]
+
+    e_adcn_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x28,0x05]
+
+    e_adcn_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x59,0x0f]
+
+    e_adcn_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x79,0x1f]
+
+    e_adcn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x0a]
+
+    e_adcn_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x08,0x00]
+
+    e_adcn_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x28,0x05]
+
+    e_adcn_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x59,0x0f]
+
+    e_adcn_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x79,0x1f]
+
+    e_adcn_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x18,0x0a]
+
+    e_adcn_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x08,0x00]
+
+    e_adcn_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x28,0x05]
+
+    e_adcn_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x59,0x0f]
+
+    e_adcn_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x79,0x1f]
+
+    e_adcn_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x18,0x0a]
+
+    e_adcn_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x08,0x00]
+
+    e_adc_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x40]
+
+    e_adc_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x45]
+
+    e_adc_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x4f]
+
+    e_adc_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x5f]
+
+    e_adc_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x4a]
+
+    e_adc_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x40]
+
+    e_adc_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x45]
+
+    e_adc_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x4f]
+
+    e_adc_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x5f]
+
+    e_adc_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x4a]
+
+    e_adc_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x40]
+
+    e_adc_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x45]
+
+    e_adc_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x4f]
+
+    e_adc_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x5f]
+
+    e_adc_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x4a]
+
+    e_adc_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x40]
+
+    e_adc_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x40]
+
+    e_adc_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x45]
+
+    e_adc_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x4f]
+
+    e_adc_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x5f]
+
+    e_adc_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x4a]
+
+    e_adc_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x40]
+
+    e_adc_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x45]
+
+    e_adc_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x4f]
+
+    e_adc_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x5f]
+
+    e_adc_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x4a]
+
+    e_adc_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x40]
+
+    e_adc_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x45]
+
+    e_adc_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x4f]
+
+    e_adc_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x5f]
+
+    e_adc_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x4a]
+
+    e_adc_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x40]
+
+    e_adc_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x00,0x40]
+
+    e_adc_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x20,0x45]
+
+    e_adc_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x51,0x4f]
+
+    e_adc_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x71,0x5f]
+
+    e_adc_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x4a]
+
+    e_adc_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x00,0x40]
+
+    e_adc_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x20,0x45]
+
+    e_adc_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x51,0x4f]
+
+    e_adc_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x71,0x5f]
+
+    e_adc_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x10,0x4a]
+
+    e_adc_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x00,0x40]
+
+    e_adc_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x20,0x45]
+
+    e_adc_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x51,0x4f]
+
+    e_adc_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x71,0x5f]
+
+    e_adc_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x10,0x4a]
+
+    e_adc_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x00,0x40]
+
+    e_adc_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x00,0x40]
+
+    e_adc_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x20,0x45]
+
+    e_adc_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x51,0x4f]
+
+    e_adc_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x71,0x5f]
+
+    e_adc_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x4a]
+
+    e_adc_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x00,0x40]
+
+    e_adc_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x20,0x45]
+
+    e_adc_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x51,0x4f]
+
+    e_adc_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x71,0x5f]
+
+    e_adc_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x10,0x4a]
+
+    e_adc_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x00,0x40]
+
+    e_adc_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x20,0x45]
+
+    e_adc_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x51,0x4f]
+
+    e_adc_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x71,0x5f]
+
+    e_adc_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x10,0x4a]
+
+    e_adc_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x00,0x40]
+
+    e_adcn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x40]
+
+    e_adcn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x45]
+
+    e_adcn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x4f]
+
+    e_adcn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x5f]
+
+    e_adcn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x4a]
+
+    e_adcn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x40]
+
+    e_adcn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x45]
+
+    e_adcn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x4f]
+
+    e_adcn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x5f]
+
+    e_adcn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x4a]
+
+    e_adcn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x40]
+
+    e_adcn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x45]
+
+    e_adcn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x4f]
+
+    e_adcn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x5f]
+
+    e_adcn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x4a]
+
+    e_adcn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x40]
+
+    e_adcn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x40]
+
+    e_adcn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x45]
+
+    e_adcn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x4f]
+
+    e_adcn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x5f]
+
+    e_adcn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x4a]
+
+    e_adcn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x40]
+
+    e_adcn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x45]
+
+    e_adcn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x4f]
+
+    e_adcn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x5f]
+
+    e_adcn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x4a]
+
+    e_adcn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x40]
+
+    e_adcn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x45]
+
+    e_adcn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x4f]
+
+    e_adcn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x5f]
+
+    e_adcn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x4a]
+
+    e_adcn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x40]
+
+    e_adcn_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x08,0x40]
+
+    e_adcn_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x28,0x45]
+
+    e_adcn_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x59,0x4f]
+
+    e_adcn_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x79,0x5f]
+
+    e_adcn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x4a]
+
+    e_adcn_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x08,0x40]
+
+    e_adcn_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x28,0x45]
+
+    e_adcn_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x59,0x4f]
+
+    e_adcn_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x79,0x5f]
+
+    e_adcn_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x18,0x4a]
+
+    e_adcn_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x08,0x40]
+
+    e_adcn_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x28,0x45]
+
+    e_adcn_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x59,0x4f]
+
+    e_adcn_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x79,0x5f]
+
+    e_adcn_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x18,0x4a]
+
+    e_adcn_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x08,0x40]
+
+    e_adcn_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x08,0x40]
+
+    e_adcn_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x28,0x45]
+
+    e_adcn_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x59,0x4f]
+
+    e_adcn_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x79,0x5f]
+
+    e_adcn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x4a]
+
+    e_adcn_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x08,0x40]
+
+    e_adcn_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x28,0x45]
+
+    e_adcn_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x59,0x4f]
+
+    e_adcn_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x79,0x5f]
+
+    e_adcn_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x18,0x4a]
+
+    e_adcn_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x08,0x40]
+
+    e_adcn_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x28,0x45]
+
+    e_adcn_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x59,0x4f]
+
+    e_adcn_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x79,0x5f]
+
+    e_adcn_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x18,0x4a]
+
+    e_adcn_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x08,0x40]
+
+    e_adc_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x20]
+
+    e_adc_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x25]
+
+    e_adc_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x2f]
+
+    e_adc_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x3f]
+
+    e_adc_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x2a]
+
+    e_adc_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x20]
+
+    e_adc_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x25]
+
+    e_adc_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x2f]
+
+    e_adc_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x3f]
+
+    e_adc_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x2a]
+
+    e_adc_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x20]
+
+    e_adc_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x25]
+
+    e_adc_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x2f]
+
+    e_adc_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x3f]
+
+    e_adc_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x2a]
+
+    e_adc_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x20]
+
+    e_adc_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x20]
+
+    e_adc_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x25]
+
+    e_adc_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x2f]
+
+    e_adc_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x3f]
+
+    e_adc_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x2a]
+
+    e_adc_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x20]
+
+    e_adc_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x25]
+
+    e_adc_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x2f]
+
+    e_adc_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x3f]
+
+    e_adc_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x2a]
+
+    e_adc_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x20]
+
+    e_adc_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x25]
+
+    e_adc_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x2f]
+
+    e_adc_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x3f]
+
+    e_adc_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x2a]
+
+    e_adc_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x20]
+
+    e_adc_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x00,0x20]
+
+    e_adc_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x20,0x25]
+
+    e_adc_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x51,0x2f]
+
+    e_adc_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x71,0x3f]
+
+    e_adc_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x2a]
+
+    e_adc_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x00,0x20]
+
+    e_adc_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x20,0x25]
+
+    e_adc_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x51,0x2f]
+
+    e_adc_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x71,0x3f]
+
+    e_adc_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x10,0x2a]
+
+    e_adc_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x00,0x20]
+
+    e_adc_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x20,0x25]
+
+    e_adc_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x51,0x2f]
+
+    e_adc_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x71,0x3f]
+
+    e_adc_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x10,0x2a]
+
+    e_adc_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x00,0x20]
+
+    e_adc_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x00,0x20]
+
+    e_adc_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x20,0x25]
+
+    e_adc_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x51,0x2f]
+
+    e_adc_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x71,0x3f]
+
+    e_adc_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x2a]
+
+    e_adc_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x00,0x20]
+
+    e_adc_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x20,0x25]
+
+    e_adc_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x51,0x2f]
+
+    e_adc_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x71,0x3f]
+
+    e_adc_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x10,0x2a]
+
+    e_adc_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x00,0x20]
+
+    e_adc_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x20,0x25]
+
+    e_adc_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x51,0x2f]
+
+    e_adc_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x71,0x3f]
+
+    e_adc_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x10,0x2a]
+
+    e_adc_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x00,0x20]
+
+    e_adcn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x20]
+
+    e_adcn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x25]
+
+    e_adcn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x2f]
+
+    e_adcn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x3f]
+
+    e_adcn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x2a]
+
+    e_adcn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x20]
+
+    e_adcn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x25]
+
+    e_adcn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x2f]
+
+    e_adcn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x3f]
+
+    e_adcn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x2a]
+
+    e_adcn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x20]
+
+    e_adcn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x25]
+
+    e_adcn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x2f]
+
+    e_adcn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x3f]
+
+    e_adcn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x2a]
+
+    e_adcn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x20]
+
+    e_adcn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x20]
+
+    e_adcn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x25]
+
+    e_adcn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x2f]
+
+    e_adcn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x3f]
+
+    e_adcn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x2a]
+
+    e_adcn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x20]
+
+    e_adcn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x25]
+
+    e_adcn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x2f]
+
+    e_adcn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x3f]
+
+    e_adcn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x2a]
+
+    e_adcn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x20]
+
+    e_adcn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x25]
+
+    e_adcn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x2f]
+
+    e_adcn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x3f]
+
+    e_adcn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x2a]
+
+    e_adcn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x20]
+
+    e_adcn_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x08,0x20]
+
+    e_adcn_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x28,0x25]
+
+    e_adcn_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x59,0x2f]
+
+    e_adcn_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x79,0x3f]
+
+    e_adcn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x2a]
+
+    e_adcn_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x08,0x20]
+
+    e_adcn_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x28,0x25]
+
+    e_adcn_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x59,0x2f]
+
+    e_adcn_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x79,0x3f]
+
+    e_adcn_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x18,0x2a]
+
+    e_adcn_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x08,0x20]
+
+    e_adcn_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x28,0x25]
+
+    e_adcn_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x59,0x2f]
+
+    e_adcn_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x79,0x3f]
+
+    e_adcn_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x18,0x2a]
+
+    e_adcn_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x08,0x20]
+
+    e_adcn_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x08,0x20]
+
+    e_adcn_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x28,0x25]
+
+    e_adcn_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x59,0x2f]
+
+    e_adcn_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x79,0x3f]
+
+    e_adcn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x2a]
+
+    e_adcn_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x08,0x20]
+
+    e_adcn_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x28,0x25]
+
+    e_adcn_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x59,0x2f]
+
+    e_adcn_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x79,0x3f]
+
+    e_adcn_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x18,0x2a]
+
+    e_adcn_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x08,0x20]
+
+    e_adcn_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x28,0x25]
+
+    e_adcn_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x59,0x2f]
+
+    e_adcn_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x79,0x3f]
+
+    e_adcn_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x18,0x2a]
+
+    e_adcn_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x08,0x20]
+
+    e_adc_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x60]
+
+    e_adc_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x65]
+
+    e_adc_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x6f]
+
+    e_adc_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x7f]
+
+    e_adc_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x6a]
+
+    e_adc_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x60]
+
+    e_adc_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x65]
+
+    e_adc_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x6f]
+
+    e_adc_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x7f]
+
+    e_adc_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x6a]
+
+    e_adc_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x60]
+
+    e_adc_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x65]
+
+    e_adc_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x6f]
+
+    e_adc_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x7f]
+
+    e_adc_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x6a]
+
+    e_adc_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x60]
+
+    e_adc_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x60]
+
+    e_adc_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x65]
+
+    e_adc_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x6f]
+
+    e_adc_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x7f]
+
+    e_adc_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x6a]
+
+    e_adc_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x60]
+
+    e_adc_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x65]
+
+    e_adc_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x6f]
+
+    e_adc_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x7f]
+
+    e_adc_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x6a]
+
+    e_adc_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x60]
+
+    e_adc_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x65]
+
+    e_adc_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x6f]
+
+    e_adc_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x7f]
+
+    e_adc_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x6a]
+
+    e_adc_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x60]
+
+    e_adc_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x00,0x60]
+
+    e_adc_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x20,0x65]
+
+    e_adc_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x51,0x6f]
+
+    e_adc_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x71,0x7f]
+
+    e_adc_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x6a]
+
+    e_adc_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x00,0x60]
+
+    e_adc_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x20,0x65]
+
+    e_adc_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x51,0x6f]
+
+    e_adc_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x71,0x7f]
+
+    e_adc_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x10,0x6a]
+
+    e_adc_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x00,0x60]
+
+    e_adc_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x20,0x65]
+
+    e_adc_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x51,0x6f]
+
+    e_adc_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x71,0x7f]
+
+    e_adc_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x10,0x6a]
+
+    e_adc_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x00,0x60]
+
+    e_adc_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x00,0x60]
+
+    e_adc_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x20,0x65]
+
+    e_adc_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x51,0x6f]
+
+    e_adc_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x71,0x7f]
+
+    e_adc_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x6a]
+
+    e_adc_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x00,0x60]
+
+    e_adc_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x20,0x65]
+
+    e_adc_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x51,0x6f]
+
+    e_adc_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x71,0x7f]
+
+    e_adc_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x10,0x6a]
+
+    e_adc_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x00,0x60]
+
+    e_adc_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x20,0x65]
+
+    e_adc_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x51,0x6f]
+
+    e_adc_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x71,0x7f]
+
+    e_adc_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x10,0x6a]
+
+    e_adc_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x00,0x60]
+
+    e_adcn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x60]
+
+    e_adcn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x65]
+
+    e_adcn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x6f]
+
+    e_adcn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x7f]
+
+    e_adcn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x6a]
+
+    e_adcn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x60]
+
+    e_adcn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x65]
+
+    e_adcn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x6f]
+
+    e_adcn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x7f]
+
+    e_adcn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x6a]
+
+    e_adcn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x60]
+
+    e_adcn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x65]
+
+    e_adcn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x6f]
+
+    e_adcn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x7f]
+
+    e_adcn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x6a]
+
+    e_adcn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x60]
+
+    e_adcn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x60]
+
+    e_adcn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x65]
+
+    e_adcn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x6f]
+
+    e_adcn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x7f]
+
+    e_adcn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x6a]
+
+    e_adcn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x60]
+
+    e_adcn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x65]
+
+    e_adcn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x6f]
+
+    e_adcn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x7f]
+
+    e_adcn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x6a]
+
+    e_adcn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x60]
+
+    e_adcn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x65]
+
+    e_adcn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x6f]
+
+    e_adcn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x7f]
+
+    e_adcn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x6a]
+
+    e_adcn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x60]
+
+    e_adcn_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x08,0x60]
+
+    e_adcn_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x28,0x65]
+
+    e_adcn_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x59,0x6f]
+
+    e_adcn_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x79,0x7f]
+
+    e_adcn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x6a]
+
+    e_adcn_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x08,0x60]
+
+    e_adcn_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x28,0x65]
+
+    e_adcn_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x59,0x6f]
+
+    e_adcn_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x79,0x7f]
+
+    e_adcn_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x18,0x6a]
+
+    e_adcn_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x08,0x60]
+
+    e_adcn_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x28,0x65]
+
+    e_adcn_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x59,0x6f]
+
+    e_adcn_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x79,0x7f]
+
+    e_adcn_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x18,0x6a]
+
+    e_adcn_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x08,0x60]
+
+    e_adcn_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x08,0x60]
+
+    e_adcn_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x28,0x65]
+
+    e_adcn_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x59,0x6f]
+
+    e_adcn_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x79,0x7f]
+
+    e_adcn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x6a]
+
+    e_adcn_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x08,0x60]
+
+    e_adcn_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x28,0x65]
+
+    e_adcn_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x59,0x6f]
+
+    e_adcn_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x79,0x7f]
+
+    e_adcn_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x18,0x6a]
+
+    e_adcn_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x08,0x60]
+
+    e_adcn_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x28,0x65]
+
+    e_adcn_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x59,0x6f]
+
+    e_adcn_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x79,0x7f]
+
+    e_adcn_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x18,0x6a]
+
+    e_adcn_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x08,0x60]
+
+    e_adc_f r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x00,0x80]
+
+    e_adc_f r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x20,0x80]
+
+    e_adc_f r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x51,0x80]
+
+    e_adc_f r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x71,0x80]
+
+    e_adc_f r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x10,0x80]
+
+    e_adc_f r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x00,0x80]
+
+    e_adc_f r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x20,0x80]
+
+    e_adc_f r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x51,0x80]
+
+    e_adc_f r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x71,0x80]
+
+    e_adc_f r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x10,0x80]
+
+    e_adc_f r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x00,0x80]
+
+    e_adc_f r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x20,0x80]
+
+    e_adc_f r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x51,0x80]
+
+    e_adc_f r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x71,0x80]
+
+    e_adc_f r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x10,0x80]
+
+    e_adc_f r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x00,0x80]
+
+    e_adc_fs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x00,0x80]
+
+    e_adc_fs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x20,0x80]
+
+    e_adc_fs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x51,0x80]
+
+    e_adc_fs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x71,0x80]
+
+    e_adc_fs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x10,0x80]
+
+    e_adc_fs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x00,0x80]
+
+    e_adc_fs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x20,0x80]
+
+    e_adc_fs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x51,0x80]
+
+    e_adc_fs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x71,0x80]
+
+    e_adc_fs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x10,0x80]
+
+    e_adc_fs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x00,0x80]
+
+    e_adc_fs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x20,0x80]
+
+    e_adc_fs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x51,0x80]
+
+    e_adc_fs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x71,0x80]
+
+    e_adc_fs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x10,0x80]
+
+    e_adc_fs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x00,0x80]
+
+    e_adc_f_ze r0, r0, r0
+# CHECK: encoding: [0x29,0x00,0x00,0x80]
+
+    e_adc_f_nz r2, r2, r2
+# CHECK: encoding: [0x49,0x88,0x20,0x80]
+
+    e_adc_f_po r5, r5, r5
+# CHECK: encoding: [0x69,0x54,0x51,0x80]
+
+    e_adc_f_ne r7, r7, r7
+# CHECK: encoding: [0x89,0xdc,0x71,0x80]
+
+    e_adc_f r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x10,0x80]
+
+    e_adc_f_az r0, r0, r0
+# CHECK: encoding: [0xa9,0x00,0x00,0x80]
+
+    e_adc_f_zb r2, r2, r2
+# CHECK: encoding: [0xc9,0x88,0x20,0x80]
+
+    e_adc_f_ca r5, r5, r5
+# CHECK: encoding: [0xe9,0x54,0x51,0x80]
+
+    e_adc_f_nc r7, r7, r7
+# CHECK: encoding: [0x09,0xdd,0x71,0x80]
+
+    e_adc_f_cz r1, r1, r1
+# CHECK: encoding: [0x29,0x45,0x10,0x80]
+
+    e_adc_f_spo r0, r0, r0
+# CHECK: encoding: [0x49,0x01,0x00,0x80]
+
+    e_adc_f_sne r2, r2, r2
+# CHECK: encoding: [0x69,0x89,0x20,0x80]
+
+    e_adc_f_nbs r5, r5, r5
+# CHECK: encoding: [0x89,0x55,0x51,0x80]
+
+    e_adc_f_nex r7, r7, r7
+# CHECK: encoding: [0xa9,0xdd,0x71,0x80]
+
+    e_adc_f_bs r1, r1, r1
+# CHECK: encoding: [0xc9,0x45,0x10,0x80]
+
+    e_adc_f_ex r0, r0, r0
+# CHECK: encoding: [0xe9,0x01,0x00,0x80]
+
+    e_adc_fs_ze r0, r0, r0
+# CHECK: encoding: [0x29,0x02,0x00,0x80]
+
+    e_adc_fs_nz r2, r2, r2
+# CHECK: encoding: [0x49,0x8a,0x20,0x80]
+
+    e_adc_fs_po r5, r5, r5
+# CHECK: encoding: [0x69,0x56,0x51,0x80]
+
+    e_adc_fs_ne r7, r7, r7
+# CHECK: encoding: [0x89,0xde,0x71,0x80]
+
+    e_adc_fs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x10,0x80]
+
+    e_adc_fs_az r0, r0, r0
+# CHECK: encoding: [0xa9,0x02,0x00,0x80]
+
+    e_adc_fs_zb r2, r2, r2
+# CHECK: encoding: [0xc9,0x8a,0x20,0x80]
+
+    e_adc_fs_ca r5, r5, r5
+# CHECK: encoding: [0xe9,0x56,0x51,0x80]
+
+    e_adc_fs_nc r7, r7, r7
+# CHECK: encoding: [0x09,0xdf,0x71,0x80]
+
+    e_adc_fs_cz r1, r1, r1
+# CHECK: encoding: [0x29,0x47,0x10,0x80]
+
+    e_adc_fs_spo r0, r0, r0
+# CHECK: encoding: [0x49,0x03,0x00,0x80]
+
+    e_adc_fs_sne r2, r2, r2
+# CHECK: encoding: [0x69,0x8b,0x20,0x80]
+
+    e_adc_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x89,0x57,0x51,0x80]
+
+    e_adc_fs_nex r7, r7, r7
+# CHECK: encoding: [0xa9,0xdf,0x71,0x80]
+
+    e_adc_fs_bs r1, r1, r1
+# CHECK: encoding: [0xc9,0x47,0x10,0x80]
+
+    e_adc_fs_ex r0, r0, r0
+# CHECK: encoding: [0xe9,0x03,0x00,0x80]
+
+    e_adcn_f r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x08,0x80]
+
+    e_adcn_f r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x28,0x80]
+
+    e_adcn_f r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x59,0x80]
+
+    e_adcn_f r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x79,0x80]
+
+    e_adcn_f r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x18,0x80]
+
+    e_adcn_f r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x08,0x80]
+
+    e_adcn_f r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x28,0x80]
+
+    e_adcn_f r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x59,0x80]
+
+    e_adcn_f r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x79,0x80]
+
+    e_adcn_f r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x18,0x80]
+
+    e_adcn_f r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x08,0x80]
+
+    e_adcn_f r2, r2, r2
+# CHECK: encoding: [0x09,0x88,0x28,0x80]
+
+    e_adcn_f r5, r5, r5
+# CHECK: encoding: [0x09,0x54,0x59,0x80]
+
+    e_adcn_f r7, r7, r7
+# CHECK: encoding: [0x09,0xdc,0x79,0x80]
+
+    e_adcn_f r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x18,0x80]
+
+    e_adcn_f r0, r0, r0
+# CHECK: encoding: [0x09,0x00,0x08,0x80]
+
+    e_adcn_fs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x08,0x80]
+
+    e_adcn_fs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x28,0x80]
+
+    e_adcn_fs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x59,0x80]
+
+    e_adcn_fs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x79,0x80]
+
+    e_adcn_fs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x18,0x80]
+
+    e_adcn_fs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x08,0x80]
+
+    e_adcn_fs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x28,0x80]
+
+    e_adcn_fs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x59,0x80]
+
+    e_adcn_fs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x79,0x80]
+
+    e_adcn_fs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x18,0x80]
+
+    e_adcn_fs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x08,0x80]
+
+    e_adcn_fs r2, r2, r2
+# CHECK: encoding: [0x09,0x8a,0x28,0x80]
+
+    e_adcn_fs r5, r5, r5
+# CHECK: encoding: [0x09,0x56,0x59,0x80]
+
+    e_adcn_fs r7, r7, r7
+# CHECK: encoding: [0x09,0xde,0x79,0x80]
+
+    e_adcn_fs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x18,0x80]
+
+    e_adcn_fs r0, r0, r0
+# CHECK: encoding: [0x09,0x02,0x08,0x80]
+
+    e_adcn_f_ze r0, r0, r0
+# CHECK: encoding: [0x29,0x00,0x08,0x80]
+
+    e_adcn_f_nz r2, r2, r2
+# CHECK: encoding: [0x49,0x88,0x28,0x80]
+
+    e_adcn_f_po r5, r5, r5
+# CHECK: encoding: [0x69,0x54,0x59,0x80]
+
+    e_adcn_f_ne r7, r7, r7
+# CHECK: encoding: [0x89,0xdc,0x79,0x80]
+
+    e_adcn_f r1, r1, r1
+# CHECK: encoding: [0x09,0x44,0x18,0x80]
+
+    e_adcn_f_az r0, r0, r0
+# CHECK: encoding: [0xa9,0x00,0x08,0x80]
+
+    e_adcn_f_zb r2, r2, r2
+# CHECK: encoding: [0xc9,0x88,0x28,0x80]
+
+    e_adcn_f_ca r5, r5, r5
+# CHECK: encoding: [0xe9,0x54,0x59,0x80]
+
+    e_adcn_f_nc r7, r7, r7
+# CHECK: encoding: [0x09,0xdd,0x79,0x80]
+
+    e_adcn_f_cz r1, r1, r1
+# CHECK: encoding: [0x29,0x45,0x18,0x80]
+
+    e_adcn_f_spo r0, r0, r0
+# CHECK: encoding: [0x49,0x01,0x08,0x80]
+
+    e_adcn_f_sne r2, r2, r2
+# CHECK: encoding: [0x69,0x89,0x28,0x80]
+
+    e_adcn_f_nbs r5, r5, r5
+# CHECK: encoding: [0x89,0x55,0x59,0x80]
+
+    e_adcn_f_nex r7, r7, r7
+# CHECK: encoding: [0xa9,0xdd,0x79,0x80]
+
+    e_adcn_f_bs r1, r1, r1
+# CHECK: encoding: [0xc9,0x45,0x18,0x80]
+
+    e_adcn_f_ex r0, r0, r0
+# CHECK: encoding: [0xe9,0x01,0x08,0x80]
+
+    e_adcn_fs_ze r0, r0, r0
+# CHECK: encoding: [0x29,0x02,0x08,0x80]
+
+    e_adcn_fs_nz r2, r2, r2
+# CHECK: encoding: [0x49,0x8a,0x28,0x80]
+
+    e_adcn_fs_po r5, r5, r5
+# CHECK: encoding: [0x69,0x56,0x59,0x80]
+
+    e_adcn_fs_ne r7, r7, r7
+# CHECK: encoding: [0x89,0xde,0x79,0x80]
+
+    e_adcn_fs r1, r1, r1
+# CHECK: encoding: [0x09,0x46,0x18,0x80]
+
+    e_adcn_fs_az r0, r0, r0
+# CHECK: encoding: [0xa9,0x02,0x08,0x80]
+
+    e_adcn_fs_zb r2, r2, r2
+# CHECK: encoding: [0xc9,0x8a,0x28,0x80]
+
+    e_adcn_fs_ca r5, r5, r5
+# CHECK: encoding: [0xe9,0x56,0x59,0x80]
+
+    e_adcn_fs_nc r7, r7, r7
+# CHECK: encoding: [0x09,0xdf,0x79,0x80]
+
+    e_adcn_fs_cz r1, r1, r1
+# CHECK: encoding: [0x29,0x47,0x18,0x80]
+
+    e_adcn_fs_spo r0, r0, r0
+# CHECK: encoding: [0x49,0x03,0x08,0x80]
+
+    e_adcn_fs_sne r2, r2, r2
+# CHECK: encoding: [0x69,0x8b,0x28,0x80]
+
+    e_adcn_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x89,0x57,0x59,0x80]
+
+    e_adcn_fs_nex r7, r7, r7
+# CHECK: encoding: [0xa9,0xdf,0x79,0x80]
+
+    e_adcn_fs_bs r1, r1, r1
+# CHECK: encoding: [0xc9,0x47,0x18,0x80]
+
+    e_adcn_fs_ex r0, r0, r0
+# CHECK: encoding: [0xe9,0x03,0x08,0x80]
+
+    e_adc_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x80]
+
+    e_adc_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x85]
+
+    e_adc_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x8f]
+
+    e_adc_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x9f]
+
+    e_adc_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x8a]
+
+    e_adc_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x80]
+
+    e_adc_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x85]
+
+    e_adc_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x8f]
+
+    e_adc_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x9f]
+
+    e_adc_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x8a]
+
+    e_adc_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x80]
+
+    e_adc_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0x85]
+
+    e_adc_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0x8f]
+
+    e_adc_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0x9f]
+
+    e_adc_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x8a]
+
+    e_adc_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0x80]
+
+    e_adc_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x80]
+
+    e_adc_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x85]
+
+    e_adc_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x8f]
+
+    e_adc_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x9f]
+
+    e_adc_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x8a]
+
+    e_adc_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x80]
+
+    e_adc_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x85]
+
+    e_adc_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x8f]
+
+    e_adc_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x9f]
+
+    e_adc_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x8a]
+
+    e_adc_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x80]
+
+    e_adc_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0x85]
+
+    e_adc_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0x8f]
+
+    e_adc_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0x9f]
+
+    e_adc_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x8a]
+
+    e_adc_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0x80]
+
+    e_adc_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x00,0x80]
+
+    e_adc_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x20,0x85]
+
+    e_adc_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x51,0x8f]
+
+    e_adc_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x71,0x9f]
+
+    e_adc_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0x8a]
+
+    e_adc_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x00,0x80]
+
+    e_adc_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x20,0x85]
+
+    e_adc_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x51,0x8f]
+
+    e_adc_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x71,0x9f]
+
+    e_adc_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x10,0x8a]
+
+    e_adc_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x00,0x80]
+
+    e_adc_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x20,0x85]
+
+    e_adc_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x51,0x8f]
+
+    e_adc_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x71,0x9f]
+
+    e_adc_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x10,0x8a]
+
+    e_adc_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x00,0x80]
+
+    e_adc_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x00,0x80]
+
+    e_adc_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x20,0x85]
+
+    e_adc_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x51,0x8f]
+
+    e_adc_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x71,0x9f]
+
+    e_adc_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0x8a]
+
+    e_adc_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x00,0x80]
+
+    e_adc_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x20,0x85]
+
+    e_adc_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x51,0x8f]
+
+    e_adc_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x71,0x9f]
+
+    e_adc_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x10,0x8a]
+
+    e_adc_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x00,0x80]
+
+    e_adc_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x20,0x85]
+
+    e_adc_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x51,0x8f]
+
+    e_adc_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x71,0x9f]
+
+    e_adc_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x10,0x8a]
+
+    e_adc_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x00,0x80]
+
+    e_adcn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x80]
+
+    e_adcn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x85]
+
+    e_adcn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x8f]
+
+    e_adcn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x9f]
+
+    e_adcn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x8a]
+
+    e_adcn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x80]
+
+    e_adcn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x85]
+
+    e_adcn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x8f]
+
+    e_adcn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x9f]
+
+    e_adcn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x8a]
+
+    e_adcn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x80]
+
+    e_adcn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0x85]
+
+    e_adcn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0x8f]
+
+    e_adcn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0x9f]
+
+    e_adcn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x8a]
+
+    e_adcn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0x80]
+
+    e_adcn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x80]
+
+    e_adcn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x85]
+
+    e_adcn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x8f]
+
+    e_adcn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x9f]
+
+    e_adcn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x8a]
+
+    e_adcn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x80]
+
+    e_adcn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x85]
+
+    e_adcn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x8f]
+
+    e_adcn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x9f]
+
+    e_adcn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x8a]
+
+    e_adcn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x80]
+
+    e_adcn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0x85]
+
+    e_adcn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0x8f]
+
+    e_adcn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0x9f]
+
+    e_adcn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x8a]
+
+    e_adcn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0x80]
+
+    e_adcn_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x08,0x80]
+
+    e_adcn_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x28,0x85]
+
+    e_adcn_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x59,0x8f]
+
+    e_adcn_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x79,0x9f]
+
+    e_adcn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0x8a]
+
+    e_adcn_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x08,0x80]
+
+    e_adcn_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x28,0x85]
+
+    e_adcn_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x59,0x8f]
+
+    e_adcn_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x79,0x9f]
+
+    e_adcn_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x18,0x8a]
+
+    e_adcn_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x08,0x80]
+
+    e_adcn_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x28,0x85]
+
+    e_adcn_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x59,0x8f]
+
+    e_adcn_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x79,0x9f]
+
+    e_adcn_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x18,0x8a]
+
+    e_adcn_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x08,0x80]
+
+    e_adcn_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x08,0x80]
+
+    e_adcn_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x28,0x85]
+
+    e_adcn_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x59,0x8f]
+
+    e_adcn_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x79,0x9f]
+
+    e_adcn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0x8a]
+
+    e_adcn_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x08,0x80]
+
+    e_adcn_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x28,0x85]
+
+    e_adcn_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x59,0x8f]
+
+    e_adcn_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x79,0x9f]
+
+    e_adcn_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x18,0x8a]
+
+    e_adcn_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x08,0x80]
+
+    e_adcn_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x28,0x85]
+
+    e_adcn_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x59,0x8f]
+
+    e_adcn_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x79,0x9f]
+
+    e_adcn_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x18,0x8a]
+
+    e_adcn_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x08,0x80]
+
+    e_adc_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xc0]
+
+    e_adc_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xc5]
+
+    e_adc_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xcf]
+
+    e_adc_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xdf]
+
+    e_adc_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xca]
+
+    e_adc_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xc0]
+
+    e_adc_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xc5]
+
+    e_adc_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xcf]
+
+    e_adc_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xdf]
+
+    e_adc_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xca]
+
+    e_adc_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xc0]
+
+    e_adc_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xc5]
+
+    e_adc_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xcf]
+
+    e_adc_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xdf]
+
+    e_adc_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xca]
+
+    e_adc_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xc0]
+
+    e_adc_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xc0]
+
+    e_adc_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xc5]
+
+    e_adc_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xcf]
+
+    e_adc_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xdf]
+
+    e_adc_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xca]
+
+    e_adc_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xc0]
+
+    e_adc_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xc5]
+
+    e_adc_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xcf]
+
+    e_adc_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xdf]
+
+    e_adc_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xca]
+
+    e_adc_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xc0]
+
+    e_adc_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xc5]
+
+    e_adc_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xcf]
+
+    e_adc_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xdf]
+
+    e_adc_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xca]
+
+    e_adc_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xc0]
+
+    e_adc_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x00,0xc0]
+
+    e_adc_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x20,0xc5]
+
+    e_adc_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x51,0xcf]
+
+    e_adc_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x71,0xdf]
+
+    e_adc_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xca]
+
+    e_adc_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x00,0xc0]
+
+    e_adc_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x20,0xc5]
+
+    e_adc_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x51,0xcf]
+
+    e_adc_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x71,0xdf]
+
+    e_adc_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x10,0xca]
+
+    e_adc_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x00,0xc0]
+
+    e_adc_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x20,0xc5]
+
+    e_adc_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x51,0xcf]
+
+    e_adc_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x71,0xdf]
+
+    e_adc_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x10,0xca]
+
+    e_adc_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x00,0xc0]
+
+    e_adc_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x00,0xc0]
+
+    e_adc_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x20,0xc5]
+
+    e_adc_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x51,0xcf]
+
+    e_adc_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x71,0xdf]
+
+    e_adc_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xca]
+
+    e_adc_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x00,0xc0]
+
+    e_adc_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x20,0xc5]
+
+    e_adc_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x51,0xcf]
+
+    e_adc_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x71,0xdf]
+
+    e_adc_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x10,0xca]
+
+    e_adc_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x00,0xc0]
+
+    e_adc_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x20,0xc5]
+
+    e_adc_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x51,0xcf]
+
+    e_adc_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x71,0xdf]
+
+    e_adc_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x10,0xca]
+
+    e_adc_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x00,0xc0]
+
+    e_adcn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xc0]
+
+    e_adcn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xc5]
+
+    e_adcn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xcf]
+
+    e_adcn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xdf]
+
+    e_adcn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xca]
+
+    e_adcn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xc0]
+
+    e_adcn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xc5]
+
+    e_adcn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xcf]
+
+    e_adcn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xdf]
+
+    e_adcn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xca]
+
+    e_adcn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xc0]
+
+    e_adcn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xc5]
+
+    e_adcn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xcf]
+
+    e_adcn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xdf]
+
+    e_adcn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xca]
+
+    e_adcn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xc0]
+
+    e_adcn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xc0]
+
+    e_adcn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xc5]
+
+    e_adcn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xcf]
+
+    e_adcn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xdf]
+
+    e_adcn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xca]
+
+    e_adcn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xc0]
+
+    e_adcn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xc5]
+
+    e_adcn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xcf]
+
+    e_adcn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xdf]
+
+    e_adcn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xca]
+
+    e_adcn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xc0]
+
+    e_adcn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xc5]
+
+    e_adcn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xcf]
+
+    e_adcn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xdf]
+
+    e_adcn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xca]
+
+    e_adcn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xc0]
+
+    e_adcn_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x08,0xc0]
+
+    e_adcn_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x28,0xc5]
+
+    e_adcn_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x59,0xcf]
+
+    e_adcn_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x79,0xdf]
+
+    e_adcn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xca]
+
+    e_adcn_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x08,0xc0]
+
+    e_adcn_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x28,0xc5]
+
+    e_adcn_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x59,0xcf]
+
+    e_adcn_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x79,0xdf]
+
+    e_adcn_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x18,0xca]
+
+    e_adcn_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x08,0xc0]
+
+    e_adcn_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x28,0xc5]
+
+    e_adcn_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x59,0xcf]
+
+    e_adcn_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x79,0xdf]
+
+    e_adcn_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x18,0xca]
+
+    e_adcn_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x08,0xc0]
+
+    e_adcn_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x08,0xc0]
+
+    e_adcn_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x28,0xc5]
+
+    e_adcn_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x59,0xcf]
+
+    e_adcn_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x79,0xdf]
+
+    e_adcn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xca]
+
+    e_adcn_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x08,0xc0]
+
+    e_adcn_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x28,0xc5]
+
+    e_adcn_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x59,0xcf]
+
+    e_adcn_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x79,0xdf]
+
+    e_adcn_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x18,0xca]
+
+    e_adcn_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x08,0xc0]
+
+    e_adcn_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x28,0xc5]
+
+    e_adcn_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x59,0xcf]
+
+    e_adcn_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x79,0xdf]
+
+    e_adcn_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x18,0xca]
+
+    e_adcn_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x08,0xc0]
+
+    e_adc_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xa0]
+
+    e_adc_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xa5]
+
+    e_adc_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xaf]
+
+    e_adc_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xbf]
+
+    e_adc_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xaa]
+
+    e_adc_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xa0]
+
+    e_adc_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xa5]
+
+    e_adc_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xaf]
+
+    e_adc_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xbf]
+
+    e_adc_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xaa]
+
+    e_adc_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xa0]
+
+    e_adc_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xa5]
+
+    e_adc_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xaf]
+
+    e_adc_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xbf]
+
+    e_adc_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xaa]
+
+    e_adc_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xa0]
+
+    e_adc_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xa0]
+
+    e_adc_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xa5]
+
+    e_adc_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xaf]
+
+    e_adc_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xbf]
+
+    e_adc_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xaa]
+
+    e_adc_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xa0]
+
+    e_adc_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xa5]
+
+    e_adc_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xaf]
+
+    e_adc_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xbf]
+
+    e_adc_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xaa]
+
+    e_adc_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xa0]
+
+    e_adc_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xa5]
+
+    e_adc_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xaf]
+
+    e_adc_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xbf]
+
+    e_adc_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xaa]
+
+    e_adc_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xa0]
+
+    e_adc_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x00,0xa0]
+
+    e_adc_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x20,0xa5]
+
+    e_adc_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x51,0xaf]
+
+    e_adc_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x71,0xbf]
+
+    e_adc_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xaa]
+
+    e_adc_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x00,0xa0]
+
+    e_adc_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x20,0xa5]
+
+    e_adc_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x51,0xaf]
+
+    e_adc_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x71,0xbf]
+
+    e_adc_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x10,0xaa]
+
+    e_adc_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x00,0xa0]
+
+    e_adc_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x20,0xa5]
+
+    e_adc_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x51,0xaf]
+
+    e_adc_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x71,0xbf]
+
+    e_adc_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x10,0xaa]
+
+    e_adc_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x00,0xa0]
+
+    e_adc_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x00,0xa0]
+
+    e_adc_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x20,0xa5]
+
+    e_adc_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x51,0xaf]
+
+    e_adc_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x71,0xbf]
+
+    e_adc_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xaa]
+
+    e_adc_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x00,0xa0]
+
+    e_adc_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x20,0xa5]
+
+    e_adc_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x51,0xaf]
+
+    e_adc_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x71,0xbf]
+
+    e_adc_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x10,0xaa]
+
+    e_adc_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x00,0xa0]
+
+    e_adc_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x20,0xa5]
+
+    e_adc_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x51,0xaf]
+
+    e_adc_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x71,0xbf]
+
+    e_adc_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x10,0xaa]
+
+    e_adc_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x00,0xa0]
+
+    e_adcn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xa0]
+
+    e_adcn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xa5]
+
+    e_adcn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xaf]
+
+    e_adcn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xbf]
+
+    e_adcn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xaa]
+
+    e_adcn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xa0]
+
+    e_adcn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xa5]
+
+    e_adcn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xaf]
+
+    e_adcn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xbf]
+
+    e_adcn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xaa]
+
+    e_adcn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xa0]
+
+    e_adcn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xa5]
+
+    e_adcn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xaf]
+
+    e_adcn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xbf]
+
+    e_adcn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xaa]
+
+    e_adcn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xa0]
+
+    e_adcn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xa0]
+
+    e_adcn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xa5]
+
+    e_adcn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xaf]
+
+    e_adcn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xbf]
+
+    e_adcn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xaa]
+
+    e_adcn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xa0]
+
+    e_adcn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xa5]
+
+    e_adcn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xaf]
+
+    e_adcn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xbf]
+
+    e_adcn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xaa]
+
+    e_adcn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xa0]
+
+    e_adcn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xa5]
+
+    e_adcn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xaf]
+
+    e_adcn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xbf]
+
+    e_adcn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xaa]
+
+    e_adcn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xa0]
+
+    e_adcn_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x08,0xa0]
+
+    e_adcn_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x28,0xa5]
+
+    e_adcn_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x59,0xaf]
+
+    e_adcn_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x79,0xbf]
+
+    e_adcn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xaa]
+
+    e_adcn_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x08,0xa0]
+
+    e_adcn_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x28,0xa5]
+
+    e_adcn_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x59,0xaf]
+
+    e_adcn_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x79,0xbf]
+
+    e_adcn_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x18,0xaa]
+
+    e_adcn_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x08,0xa0]
+
+    e_adcn_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x28,0xa5]
+
+    e_adcn_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x59,0xaf]
+
+    e_adcn_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x79,0xbf]
+
+    e_adcn_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x18,0xaa]
+
+    e_adcn_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x08,0xa0]
+
+    e_adcn_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x08,0xa0]
+
+    e_adcn_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x28,0xa5]
+
+    e_adcn_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x59,0xaf]
+
+    e_adcn_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x79,0xbf]
+
+    e_adcn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xaa]
+
+    e_adcn_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x08,0xa0]
+
+    e_adcn_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x28,0xa5]
+
+    e_adcn_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x59,0xaf]
+
+    e_adcn_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x79,0xbf]
+
+    e_adcn_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x18,0xaa]
+
+    e_adcn_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x08,0xa0]
+
+    e_adcn_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x28,0xa5]
+
+    e_adcn_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x59,0xaf]
+
+    e_adcn_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x79,0xbf]
+
+    e_adcn_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x18,0xaa]
+
+    e_adcn_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x08,0xa0]
+
+    e_adc_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xe0]
+
+    e_adc_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xe5]
+
+    e_adc_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xef]
+
+    e_adc_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xff]
+
+    e_adc_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xea]
+
+    e_adc_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xe0]
+
+    e_adc_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xe5]
+
+    e_adc_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xef]
+
+    e_adc_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xff]
+
+    e_adc_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xea]
+
+    e_adc_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xe0]
+
+    e_adc_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x20,0xe5]
+
+    e_adc_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x51,0xef]
+
+    e_adc_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x71,0xff]
+
+    e_adc_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xea]
+
+    e_adc_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x00,0xe0]
+
+    e_adc_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xe0]
+
+    e_adc_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xe5]
+
+    e_adc_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xef]
+
+    e_adc_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xff]
+
+    e_adc_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xea]
+
+    e_adc_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xe0]
+
+    e_adc_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xe5]
+
+    e_adc_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xef]
+
+    e_adc_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xff]
+
+    e_adc_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xea]
+
+    e_adc_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xe0]
+
+    e_adc_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x20,0xe5]
+
+    e_adc_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x51,0xef]
+
+    e_adc_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x71,0xff]
+
+    e_adc_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xea]
+
+    e_adc_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x00,0xe0]
+
+    e_adc_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x00,0xe0]
+
+    e_adc_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x20,0xe5]
+
+    e_adc_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x51,0xef]
+
+    e_adc_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x71,0xff]
+
+    e_adc_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x10,0xea]
+
+    e_adc_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x00,0xe0]
+
+    e_adc_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x20,0xe5]
+
+    e_adc_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x51,0xef]
+
+    e_adc_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x71,0xff]
+
+    e_adc_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x10,0xea]
+
+    e_adc_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x00,0xe0]
+
+    e_adc_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x20,0xe5]
+
+    e_adc_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x51,0xef]
+
+    e_adc_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x71,0xff]
+
+    e_adc_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x10,0xea]
+
+    e_adc_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x00,0xe0]
+
+    e_adc_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x00,0xe0]
+
+    e_adc_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x20,0xe5]
+
+    e_adc_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x51,0xef]
+
+    e_adc_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x71,0xff]
+
+    e_adc_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x10,0xea]
+
+    e_adc_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x00,0xe0]
+
+    e_adc_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x20,0xe5]
+
+    e_adc_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x51,0xef]
+
+    e_adc_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x71,0xff]
+
+    e_adc_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x10,0xea]
+
+    e_adc_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x00,0xe0]
+
+    e_adc_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x20,0xe5]
+
+    e_adc_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x51,0xef]
+
+    e_adc_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x71,0xff]
+
+    e_adc_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x10,0xea]
+
+    e_adc_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x00,0xe0]
+
+    e_adcn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xe0]
+
+    e_adcn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xe5]
+
+    e_adcn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xef]
+
+    e_adcn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xff]
+
+    e_adcn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xea]
+
+    e_adcn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xe0]
+
+    e_adcn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xe5]
+
+    e_adcn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xef]
+
+    e_adcn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xff]
+
+    e_adcn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xea]
+
+    e_adcn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xe0]
+
+    e_adcn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x88,0x28,0xe5]
+
+    e_adcn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x54,0x59,0xef]
+
+    e_adcn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdc,0x79,0xff]
+
+    e_adcn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xea]
+
+    e_adcn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x00,0x08,0xe0]
+
+    e_adcn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xe0]
+
+    e_adcn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xe5]
+
+    e_adcn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xef]
+
+    e_adcn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xff]
+
+    e_adcn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xea]
+
+    e_adcn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xe0]
+
+    e_adcn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xe5]
+
+    e_adcn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xef]
+
+    e_adcn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xff]
+
+    e_adcn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xea]
+
+    e_adcn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xe0]
+
+    e_adcn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x09,0x8a,0x28,0xe5]
+
+    e_adcn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x09,0x56,0x59,0xef]
+
+    e_adcn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xde,0x79,0xff]
+
+    e_adcn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xea]
+
+    e_adcn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x09,0x02,0x08,0xe0]
+
+    e_adcn_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x00,0x08,0xe0]
+
+    e_adcn_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x88,0x28,0xe5]
+
+    e_adcn_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x54,0x59,0xef]
+
+    e_adcn_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xdc,0x79,0xff]
+
+    e_adcn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x44,0x18,0xea]
+
+    e_adcn_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x00,0x08,0xe0]
+
+    e_adcn_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x88,0x28,0xe5]
+
+    e_adcn_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x54,0x59,0xef]
+
+    e_adcn_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdd,0x79,0xff]
+
+    e_adcn_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x45,0x18,0xea]
+
+    e_adcn_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x01,0x08,0xe0]
+
+    e_adcn_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x89,0x28,0xe5]
+
+    e_adcn_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x55,0x59,0xef]
+
+    e_adcn_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdd,0x79,0xff]
+
+    e_adcn_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x45,0x18,0xea]
+
+    e_adcn_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x01,0x08,0xe0]
+
+    e_adcn_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x29,0x02,0x08,0xe0]
+
+    e_adcn_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x49,0x8a,0x28,0xe5]
+
+    e_adcn_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x69,0x56,0x59,0xef]
+
+    e_adcn_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x89,0xde,0x79,0xff]
+
+    e_adcn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x09,0x46,0x18,0xea]
+
+    e_adcn_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xa9,0x02,0x08,0xe0]
+
+    e_adcn_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xc9,0x8a,0x28,0xe5]
+
+    e_adcn_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xe9,0x56,0x59,0xef]
+
+    e_adcn_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x09,0xdf,0x79,0xff]
+
+    e_adcn_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x29,0x47,0x18,0xea]
+
+    e_adcn_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x49,0x03,0x08,0xe0]
+
+    e_adcn_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x69,0x8b,0x28,0xe5]
+
+    e_adcn_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x89,0x57,0x59,0xef]
+
+    e_adcn_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xa9,0xdf,0x79,0xff]
+
+    e_adcn_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xc9,0x47,0x18,0xea]
+
+    e_adcn_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xe9,0x03,0x08,0xe0]
+
+    e_sbc r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x00,0x00]
+
+    e_sbc r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x20,0x00]
+
+    e_sbc r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x51,0x00]
+
+    e_sbc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x71,0x00]
+
+    e_sbc r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x10,0x00]
+
+    e_sbc r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x00,0x00]
+
+    e_sbc r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x20,0x00]
+
+    e_sbc r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x51,0x00]
+
+    e_sbc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x71,0x00]
+
+    e_sbc r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x10,0x00]
+
+    e_sbc r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x00,0x00]
+
+    e_sbc r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x20,0x00]
+
+    e_sbc r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x51,0x00]
+
+    e_sbc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x71,0x00]
+
+    e_sbc r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x10,0x00]
+
+    e_sbc r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x00,0x00]
+
+    e_sbcs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x00,0x00]
+
+    e_sbcs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x20,0x00]
+
+    e_sbcs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x51,0x00]
+
+    e_sbcs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x71,0x00]
+
+    e_sbcs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x10,0x00]
+
+    e_sbcs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x00,0x00]
+
+    e_sbcs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x20,0x00]
+
+    e_sbcs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x51,0x00]
+
+    e_sbcs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x71,0x00]
+
+    e_sbcs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x10,0x00]
+
+    e_sbcs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x00,0x00]
+
+    e_sbcs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x20,0x00]
+
+    e_sbcs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x51,0x00]
+
+    e_sbcs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x71,0x00]
+
+    e_sbcs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x10,0x00]
+
+    e_sbcs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x00,0x00]
+
+    e_sbc_ze r0, r0, r0
+# CHECK: encoding: [0x2a,0x00,0x00,0x00]
+
+    e_sbc_nz r2, r2, r2
+# CHECK: encoding: [0x4a,0x88,0x20,0x00]
+
+    e_sbc_po r5, r5, r5
+# CHECK: encoding: [0x6a,0x54,0x51,0x00]
+
+    e_sbc_ne r7, r7, r7
+# CHECK: encoding: [0x8a,0xdc,0x71,0x00]
+
+    e_sbc r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x10,0x00]
+
+    e_sbc_az r0, r0, r0
+# CHECK: encoding: [0xaa,0x00,0x00,0x00]
+
+    e_sbc_zb r2, r2, r2
+# CHECK: encoding: [0xca,0x88,0x20,0x00]
+
+    e_sbc_ca r5, r5, r5
+# CHECK: encoding: [0xea,0x54,0x51,0x00]
+
+    e_sbc_nc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdd,0x71,0x00]
+
+    e_sbc_cz r1, r1, r1
+# CHECK: encoding: [0x2a,0x45,0x10,0x00]
+
+    e_sbc_spo r0, r0, r0
+# CHECK: encoding: [0x4a,0x01,0x00,0x00]
+
+    e_sbc_sne r2, r2, r2
+# CHECK: encoding: [0x6a,0x89,0x20,0x00]
+
+    e_sbc_nbs r5, r5, r5
+# CHECK: encoding: [0x8a,0x55,0x51,0x00]
+
+    e_sbc_nex r7, r7, r7
+# CHECK: encoding: [0xaa,0xdd,0x71,0x00]
+
+    e_sbc_bs r1, r1, r1
+# CHECK: encoding: [0xca,0x45,0x10,0x00]
+
+    e_sbc_ex r0, r0, r0
+# CHECK: encoding: [0xea,0x01,0x00,0x00]
+
+    e_sbcs_ze r0, r0, r0
+# CHECK: encoding: [0x2a,0x02,0x00,0x00]
+
+    e_sbcs_nz r2, r2, r2
+# CHECK: encoding: [0x4a,0x8a,0x20,0x00]
+
+    e_sbcs_po r5, r5, r5
+# CHECK: encoding: [0x6a,0x56,0x51,0x00]
+
+    e_sbcs_ne r7, r7, r7
+# CHECK: encoding: [0x8a,0xde,0x71,0x00]
+
+    e_sbcs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x10,0x00]
+
+    e_sbcs_az r0, r0, r0
+# CHECK: encoding: [0xaa,0x02,0x00,0x00]
+
+    e_sbcs_zb r2, r2, r2
+# CHECK: encoding: [0xca,0x8a,0x20,0x00]
+
+    e_sbcs_ca r5, r5, r5
+# CHECK: encoding: [0xea,0x56,0x51,0x00]
+
+    e_sbcs_nc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdf,0x71,0x00]
+
+    e_sbcs_cz r1, r1, r1
+# CHECK: encoding: [0x2a,0x47,0x10,0x00]
+
+    e_sbcs_spo r0, r0, r0
+# CHECK: encoding: [0x4a,0x03,0x00,0x00]
+
+    e_sbcs_sne r2, r2, r2
+# CHECK: encoding: [0x6a,0x8b,0x20,0x00]
+
+    e_sbcs_nbs r5, r5, r5
+# CHECK: encoding: [0x8a,0x57,0x51,0x00]
+
+    e_sbcs_nex r7, r7, r7
+# CHECK: encoding: [0xaa,0xdf,0x71,0x00]
+
+    e_sbcs_bs r1, r1, r1
+# CHECK: encoding: [0xca,0x47,0x10,0x00]
+
+    e_sbcs_ex r0, r0, r0
+# CHECK: encoding: [0xea,0x03,0x00,0x00]
+
+    e_sbcn r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x08,0x00]
+
+    e_sbcn r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x28,0x00]
+
+    e_sbcn r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x59,0x00]
+
+    e_sbcn r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x79,0x00]
+
+    e_sbcn r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x18,0x00]
+
+    e_sbcn r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x08,0x00]
+
+    e_sbcn r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x28,0x00]
+
+    e_sbcn r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x59,0x00]
+
+    e_sbcn r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x79,0x00]
+
+    e_sbcn r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x18,0x00]
+
+    e_sbcn r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x08,0x00]
+
+    e_sbcn r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x28,0x00]
+
+    e_sbcn r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x59,0x00]
+
+    e_sbcn r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x79,0x00]
+
+    e_sbcn r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x18,0x00]
+
+    e_sbcn r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x08,0x00]
+
+    e_sbcns r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x08,0x00]
+
+    e_sbcns r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x28,0x00]
+
+    e_sbcns r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x59,0x00]
+
+    e_sbcns r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x79,0x00]
+
+    e_sbcns r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x18,0x00]
+
+    e_sbcns r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x08,0x00]
+
+    e_sbcns r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x28,0x00]
+
+    e_sbcns r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x59,0x00]
+
+    e_sbcns r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x79,0x00]
+
+    e_sbcns r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x18,0x00]
+
+    e_sbcns r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x08,0x00]
+
+    e_sbcns r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x28,0x00]
+
+    e_sbcns r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x59,0x00]
+
+    e_sbcns r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x79,0x00]
+
+    e_sbcns r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x18,0x00]
+
+    e_sbcns r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x08,0x00]
+
+    e_sbcn_ze r0, r0, r0
+# CHECK: encoding: [0x2a,0x00,0x08,0x00]
+
+    e_sbcn_nz r2, r2, r2
+# CHECK: encoding: [0x4a,0x88,0x28,0x00]
+
+    e_sbcn_po r5, r5, r5
+# CHECK: encoding: [0x6a,0x54,0x59,0x00]
+
+    e_sbcn_ne r7, r7, r7
+# CHECK: encoding: [0x8a,0xdc,0x79,0x00]
+
+    e_sbcn r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x18,0x00]
+
+    e_sbcn_az r0, r0, r0
+# CHECK: encoding: [0xaa,0x00,0x08,0x00]
+
+    e_sbcn_zb r2, r2, r2
+# CHECK: encoding: [0xca,0x88,0x28,0x00]
+
+    e_sbcn_ca r5, r5, r5
+# CHECK: encoding: [0xea,0x54,0x59,0x00]
+
+    e_sbcn_nc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdd,0x79,0x00]
+
+    e_sbcn_cz r1, r1, r1
+# CHECK: encoding: [0x2a,0x45,0x18,0x00]
+
+    e_sbcn_spo r0, r0, r0
+# CHECK: encoding: [0x4a,0x01,0x08,0x00]
+
+    e_sbcn_sne r2, r2, r2
+# CHECK: encoding: [0x6a,0x89,0x28,0x00]
+
+    e_sbcn_nbs r5, r5, r5
+# CHECK: encoding: [0x8a,0x55,0x59,0x00]
+
+    e_sbcn_nex r7, r7, r7
+# CHECK: encoding: [0xaa,0xdd,0x79,0x00]
+
+    e_sbcn_bs r1, r1, r1
+# CHECK: encoding: [0xca,0x45,0x18,0x00]
+
+    e_sbcn_ex r0, r0, r0
+# CHECK: encoding: [0xea,0x01,0x08,0x00]
+
+    e_sbcns_ze r0, r0, r0
+# CHECK: encoding: [0x2a,0x02,0x08,0x00]
+
+    e_sbcns_nz r2, r2, r2
+# CHECK: encoding: [0x4a,0x8a,0x28,0x00]
+
+    e_sbcns_po r5, r5, r5
+# CHECK: encoding: [0x6a,0x56,0x59,0x00]
+
+    e_sbcns_ne r7, r7, r7
+# CHECK: encoding: [0x8a,0xde,0x79,0x00]
+
+    e_sbcns r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x18,0x00]
+
+    e_sbcns_az r0, r0, r0
+# CHECK: encoding: [0xaa,0x02,0x08,0x00]
+
+    e_sbcns_zb r2, r2, r2
+# CHECK: encoding: [0xca,0x8a,0x28,0x00]
+
+    e_sbcns_ca r5, r5, r5
+# CHECK: encoding: [0xea,0x56,0x59,0x00]
+
+    e_sbcns_nc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdf,0x79,0x00]
+
+    e_sbcns_cz r1, r1, r1
+# CHECK: encoding: [0x2a,0x47,0x18,0x00]
+
+    e_sbcns_spo r0, r0, r0
+# CHECK: encoding: [0x4a,0x03,0x08,0x00]
+
+    e_sbcns_sne r2, r2, r2
+# CHECK: encoding: [0x6a,0x8b,0x28,0x00]
+
+    e_sbcns_nbs r5, r5, r5
+# CHECK: encoding: [0x8a,0x57,0x59,0x00]
+
+    e_sbcns_nex r7, r7, r7
+# CHECK: encoding: [0xaa,0xdf,0x79,0x00]
+
+    e_sbcns_bs r1, r1, r1
+# CHECK: encoding: [0xca,0x47,0x18,0x00]
+
+    e_sbcns_ex r0, r0, r0
+# CHECK: encoding: [0xea,0x03,0x08,0x00]
+
+    e_sbc_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x00,0xf4,0x3f]
+
+    e_sbc_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x88,0x14,0xc0]
+
+    e_sbc_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x54,0xf5,0x1f]
+
+    e_sbc_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdc,0x15,0xe0]
+
+    e_sbc_imm r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x44,0x14,0x00]
+
+    e_sbc_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x00,0xf4,0x3f]
+
+    e_sbc_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x88,0x14,0xc0]
+
+    e_sbc_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x54,0xf5,0x1f]
+
+    e_sbc_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdc,0x15,0xe0]
+
+    e_sbc_imm r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x44,0x14,0x00]
+
+    e_sbc_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x00,0xf4,0x3f]
+
+    e_sbc_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x88,0x14,0xc0]
+
+    e_sbc_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x54,0xf5,0x1f]
+
+    e_sbc_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdc,0x15,0xe0]
+
+    e_sbc_imm r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x44,0x14,0x00]
+
+    e_sbc_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x00,0xf4,0x3f]
+
+    e_sbc_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x02,0xf4,0x3f]
+
+    e_sbc_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x8a,0x14,0xc0]
+
+    e_sbc_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x56,0xf5,0x1f]
+
+    e_sbc_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xde,0x15,0xe0]
+
+    e_sbc_imms r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x46,0x14,0x00]
+
+    e_sbc_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x02,0xf4,0x3f]
+
+    e_sbc_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x8a,0x14,0xc0]
+
+    e_sbc_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x56,0xf5,0x1f]
+
+    e_sbc_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xde,0x15,0xe0]
+
+    e_sbc_imms r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x46,0x14,0x00]
+
+    e_sbc_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x02,0xf4,0x3f]
+
+    e_sbc_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x8a,0x14,0xc0]
+
+    e_sbc_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x56,0xf5,0x1f]
+
+    e_sbc_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xde,0x15,0xe0]
+
+    e_sbc_imms r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x46,0x14,0x00]
+
+    e_sbc_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x02,0xf4,0x3f]
+
+    e_sbc_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2a,0x00,0xf4,0x3f]
+
+    e_sbc_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4a,0x88,0x14,0xc0]
+
+    e_sbc_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6a,0x54,0xf5,0x1f]
+
+    e_sbc_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8a,0xdc,0x15,0xe0]
+
+    e_sbc_imm r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x44,0x14,0x00]
+
+    e_sbc_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xaa,0x00,0xf4,0x3f]
+
+    e_sbc_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xca,0x88,0x14,0xc0]
+
+    e_sbc_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xea,0x54,0xf5,0x1f]
+
+    e_sbc_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdd,0x15,0xe0]
+
+    e_sbc_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x2a,0x45,0x14,0x00]
+
+    e_sbc_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4a,0x01,0xf4,0x3f]
+
+    e_sbc_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6a,0x89,0x14,0xc0]
+
+    e_sbc_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8a,0x55,0xf5,0x1f]
+
+    e_sbc_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xaa,0xdd,0x15,0xe0]
+
+    e_sbc_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xca,0x45,0x14,0x00]
+
+    e_sbc_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xea,0x01,0xf4,0x3f]
+
+    e_sbc_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2a,0x02,0xf4,0x3f]
+
+    e_sbc_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4a,0x8a,0x14,0xc0]
+
+    e_sbc_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6a,0x56,0xf5,0x1f]
+
+    e_sbc_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8a,0xde,0x15,0xe0]
+
+    e_sbc_imms r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x46,0x14,0x00]
+
+    e_sbc_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xaa,0x02,0xf4,0x3f]
+
+    e_sbc_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xca,0x8a,0x14,0xc0]
+
+    e_sbc_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xea,0x56,0xf5,0x1f]
+
+    e_sbc_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdf,0x15,0xe0]
+
+    e_sbc_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x2a,0x47,0x14,0x00]
+
+    e_sbc_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4a,0x03,0xf4,0x3f]
+
+    e_sbc_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6a,0x8b,0x14,0xc0]
+
+    e_sbc_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8a,0x57,0xf5,0x1f]
+
+    e_sbc_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xaa,0xdf,0x15,0xe0]
+
+    e_sbc_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xca,0x47,0x14,0x00]
+
+    e_sbc_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xea,0x03,0xf4,0x3f]
+
+    e_sbcn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x00,0xfc,0x3f]
+
+    e_sbcn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x88,0x1c,0xc0]
+
+    e_sbcn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x54,0xfd,0x1f]
+
+    e_sbcn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdc,0x1d,0xe0]
+
+    e_sbcn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x44,0x1c,0x00]
+
+    e_sbcn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x00,0xfc,0x3f]
+
+    e_sbcn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x88,0x1c,0xc0]
+
+    e_sbcn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x54,0xfd,0x1f]
+
+    e_sbcn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdc,0x1d,0xe0]
+
+    e_sbcn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x44,0x1c,0x00]
+
+    e_sbcn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x00,0xfc,0x3f]
+
+    e_sbcn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x88,0x1c,0xc0]
+
+    e_sbcn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x54,0xfd,0x1f]
+
+    e_sbcn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdc,0x1d,0xe0]
+
+    e_sbcn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x44,0x1c,0x00]
+
+    e_sbcn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x00,0xfc,0x3f]
+
+    e_sbcn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x02,0xfc,0x3f]
+
+    e_sbcn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x8a,0x1c,0xc0]
+
+    e_sbcn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x56,0xfd,0x1f]
+
+    e_sbcn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xde,0x1d,0xe0]
+
+    e_sbcn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x46,0x1c,0x00]
+
+    e_sbcn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x02,0xfc,0x3f]
+
+    e_sbcn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x8a,0x1c,0xc0]
+
+    e_sbcn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x56,0xfd,0x1f]
+
+    e_sbcn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xde,0x1d,0xe0]
+
+    e_sbcn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x46,0x1c,0x00]
+
+    e_sbcn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x02,0xfc,0x3f]
+
+    e_sbcn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0a,0x8a,0x1c,0xc0]
+
+    e_sbcn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0a,0x56,0xfd,0x1f]
+
+    e_sbcn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xde,0x1d,0xe0]
+
+    e_sbcn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x46,0x1c,0x00]
+
+    e_sbcn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0a,0x02,0xfc,0x3f]
+
+    e_sbcn_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2a,0x00,0xfc,0x3f]
+
+    e_sbcn_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4a,0x88,0x1c,0xc0]
+
+    e_sbcn_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6a,0x54,0xfd,0x1f]
+
+    e_sbcn_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8a,0xdc,0x1d,0xe0]
+
+    e_sbcn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x44,0x1c,0x00]
+
+    e_sbcn_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xaa,0x00,0xfc,0x3f]
+
+    e_sbcn_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xca,0x88,0x1c,0xc0]
+
+    e_sbcn_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xea,0x54,0xfd,0x1f]
+
+    e_sbcn_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdd,0x1d,0xe0]
+
+    e_sbcn_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x2a,0x45,0x1c,0x00]
+
+    e_sbcn_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4a,0x01,0xfc,0x3f]
+
+    e_sbcn_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6a,0x89,0x1c,0xc0]
+
+    e_sbcn_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8a,0x55,0xfd,0x1f]
+
+    e_sbcn_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xaa,0xdd,0x1d,0xe0]
+
+    e_sbcn_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xca,0x45,0x1c,0x00]
+
+    e_sbcn_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xea,0x01,0xfc,0x3f]
+
+    e_sbcn_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2a,0x02,0xfc,0x3f]
+
+    e_sbcn_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4a,0x8a,0x1c,0xc0]
+
+    e_sbcn_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6a,0x56,0xfd,0x1f]
+
+    e_sbcn_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8a,0xde,0x1d,0xe0]
+
+    e_sbcn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0a,0x46,0x1c,0x00]
+
+    e_sbcn_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xaa,0x02,0xfc,0x3f]
+
+    e_sbcn_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xca,0x8a,0x1c,0xc0]
+
+    e_sbcn_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xea,0x56,0xfd,0x1f]
+
+    e_sbcn_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0a,0xdf,0x1d,0xe0]
+
+    e_sbcn_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x2a,0x47,0x1c,0x00]
+
+    e_sbcn_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4a,0x03,0xfc,0x3f]
+
+    e_sbcn_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6a,0x8b,0x1c,0xc0]
+
+    e_sbcn_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8a,0x57,0xfd,0x1f]
+
+    e_sbcn_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xaa,0xdf,0x1d,0xe0]
+
+    e_sbcn_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xca,0x47,0x1c,0x00]
+
+    e_sbcn_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xea,0x03,0xfc,0x3f]
+
+    e_sbc_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x00]
+
+    e_sbc_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x05]
+
+    e_sbc_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x0f]
+
+    e_sbc_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x1f]
+
+    e_sbc_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x0a]
+
+    e_sbc_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x00]
+
+    e_sbc_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x05]
+
+    e_sbc_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x0f]
+
+    e_sbc_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x1f]
+
+    e_sbc_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x0a]
+
+    e_sbc_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x00]
+
+    e_sbc_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x05]
+
+    e_sbc_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x0f]
+
+    e_sbc_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x1f]
+
+    e_sbc_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x0a]
+
+    e_sbc_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x00]
+
+    e_sbc_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x00]
+
+    e_sbc_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x05]
+
+    e_sbc_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x0f]
+
+    e_sbc_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x1f]
+
+    e_sbc_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x0a]
+
+    e_sbc_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x00]
+
+    e_sbc_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x05]
+
+    e_sbc_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x0f]
+
+    e_sbc_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x1f]
+
+    e_sbc_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x0a]
+
+    e_sbc_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x00]
+
+    e_sbc_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x05]
+
+    e_sbc_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x0f]
+
+    e_sbc_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x1f]
+
+    e_sbc_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x0a]
+
+    e_sbc_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x00]
+
+    e_sbc_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x00,0x00]
+
+    e_sbc_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x20,0x05]
+
+    e_sbc_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x51,0x0f]
+
+    e_sbc_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x71,0x1f]
+
+    e_sbc_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x0a]
+
+    e_sbc_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x00,0x00]
+
+    e_sbc_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x20,0x05]
+
+    e_sbc_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x51,0x0f]
+
+    e_sbc_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x71,0x1f]
+
+    e_sbc_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x10,0x0a]
+
+    e_sbc_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x00,0x00]
+
+    e_sbc_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x20,0x05]
+
+    e_sbc_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x51,0x0f]
+
+    e_sbc_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x71,0x1f]
+
+    e_sbc_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x10,0x0a]
+
+    e_sbc_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x00,0x00]
+
+    e_sbc_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x00,0x00]
+
+    e_sbc_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x20,0x05]
+
+    e_sbc_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x51,0x0f]
+
+    e_sbc_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x71,0x1f]
+
+    e_sbc_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x0a]
+
+    e_sbc_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x00,0x00]
+
+    e_sbc_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x20,0x05]
+
+    e_sbc_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x51,0x0f]
+
+    e_sbc_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x71,0x1f]
+
+    e_sbc_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x10,0x0a]
+
+    e_sbc_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x00,0x00]
+
+    e_sbc_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x20,0x05]
+
+    e_sbc_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x51,0x0f]
+
+    e_sbc_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x71,0x1f]
+
+    e_sbc_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x10,0x0a]
+
+    e_sbc_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x00,0x00]
+
+    e_sbcn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x00]
+
+    e_sbcn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x05]
+
+    e_sbcn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x0f]
+
+    e_sbcn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x1f]
+
+    e_sbcn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x0a]
+
+    e_sbcn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x00]
+
+    e_sbcn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x05]
+
+    e_sbcn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x0f]
+
+    e_sbcn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x1f]
+
+    e_sbcn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x0a]
+
+    e_sbcn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x00]
+
+    e_sbcn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x05]
+
+    e_sbcn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x0f]
+
+    e_sbcn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x1f]
+
+    e_sbcn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x0a]
+
+    e_sbcn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x00]
+
+    e_sbcn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x00]
+
+    e_sbcn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x05]
+
+    e_sbcn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x0f]
+
+    e_sbcn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x1f]
+
+    e_sbcn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x0a]
+
+    e_sbcn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x00]
+
+    e_sbcn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x05]
+
+    e_sbcn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x0f]
+
+    e_sbcn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x1f]
+
+    e_sbcn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x0a]
+
+    e_sbcn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x00]
+
+    e_sbcn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x05]
+
+    e_sbcn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x0f]
+
+    e_sbcn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x1f]
+
+    e_sbcn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x0a]
+
+    e_sbcn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x00]
+
+    e_sbcn_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x08,0x00]
+
+    e_sbcn_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x28,0x05]
+
+    e_sbcn_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x59,0x0f]
+
+    e_sbcn_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x79,0x1f]
+
+    e_sbcn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x0a]
+
+    e_sbcn_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x08,0x00]
+
+    e_sbcn_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x28,0x05]
+
+    e_sbcn_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x59,0x0f]
+
+    e_sbcn_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x79,0x1f]
+
+    e_sbcn_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x18,0x0a]
+
+    e_sbcn_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x08,0x00]
+
+    e_sbcn_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x28,0x05]
+
+    e_sbcn_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x59,0x0f]
+
+    e_sbcn_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x79,0x1f]
+
+    e_sbcn_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x18,0x0a]
+
+    e_sbcn_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x08,0x00]
+
+    e_sbcn_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x08,0x00]
+
+    e_sbcn_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x28,0x05]
+
+    e_sbcn_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x59,0x0f]
+
+    e_sbcn_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x79,0x1f]
+
+    e_sbcn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x0a]
+
+    e_sbcn_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x08,0x00]
+
+    e_sbcn_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x28,0x05]
+
+    e_sbcn_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x59,0x0f]
+
+    e_sbcn_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x79,0x1f]
+
+    e_sbcn_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x18,0x0a]
+
+    e_sbcn_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x08,0x00]
+
+    e_sbcn_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x28,0x05]
+
+    e_sbcn_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x59,0x0f]
+
+    e_sbcn_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x79,0x1f]
+
+    e_sbcn_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x18,0x0a]
+
+    e_sbcn_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x08,0x00]
+
+    e_sbc_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x40]
+
+    e_sbc_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x45]
+
+    e_sbc_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x4f]
+
+    e_sbc_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x5f]
+
+    e_sbc_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x4a]
+
+    e_sbc_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x40]
+
+    e_sbc_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x45]
+
+    e_sbc_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x4f]
+
+    e_sbc_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x5f]
+
+    e_sbc_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x4a]
+
+    e_sbc_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x40]
+
+    e_sbc_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x45]
+
+    e_sbc_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x4f]
+
+    e_sbc_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x5f]
+
+    e_sbc_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x4a]
+
+    e_sbc_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x40]
+
+    e_sbc_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x40]
+
+    e_sbc_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x45]
+
+    e_sbc_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x4f]
+
+    e_sbc_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x5f]
+
+    e_sbc_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x4a]
+
+    e_sbc_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x40]
+
+    e_sbc_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x45]
+
+    e_sbc_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x4f]
+
+    e_sbc_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x5f]
+
+    e_sbc_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x4a]
+
+    e_sbc_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x40]
+
+    e_sbc_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x45]
+
+    e_sbc_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x4f]
+
+    e_sbc_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x5f]
+
+    e_sbc_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x4a]
+
+    e_sbc_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x40]
+
+    e_sbc_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x00,0x40]
+
+    e_sbc_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x20,0x45]
+
+    e_sbc_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x51,0x4f]
+
+    e_sbc_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x71,0x5f]
+
+    e_sbc_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x4a]
+
+    e_sbc_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x00,0x40]
+
+    e_sbc_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x20,0x45]
+
+    e_sbc_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x51,0x4f]
+
+    e_sbc_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x71,0x5f]
+
+    e_sbc_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x10,0x4a]
+
+    e_sbc_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x00,0x40]
+
+    e_sbc_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x20,0x45]
+
+    e_sbc_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x51,0x4f]
+
+    e_sbc_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x71,0x5f]
+
+    e_sbc_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x10,0x4a]
+
+    e_sbc_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x00,0x40]
+
+    e_sbc_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x00,0x40]
+
+    e_sbc_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x20,0x45]
+
+    e_sbc_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x51,0x4f]
+
+    e_sbc_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x71,0x5f]
+
+    e_sbc_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x4a]
+
+    e_sbc_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x00,0x40]
+
+    e_sbc_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x20,0x45]
+
+    e_sbc_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x51,0x4f]
+
+    e_sbc_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x71,0x5f]
+
+    e_sbc_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x10,0x4a]
+
+    e_sbc_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x00,0x40]
+
+    e_sbc_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x20,0x45]
+
+    e_sbc_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x51,0x4f]
+
+    e_sbc_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x71,0x5f]
+
+    e_sbc_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x10,0x4a]
+
+    e_sbc_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x00,0x40]
+
+    e_sbcn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x40]
+
+    e_sbcn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x45]
+
+    e_sbcn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x4f]
+
+    e_sbcn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x5f]
+
+    e_sbcn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x4a]
+
+    e_sbcn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x40]
+
+    e_sbcn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x45]
+
+    e_sbcn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x4f]
+
+    e_sbcn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x5f]
+
+    e_sbcn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x4a]
+
+    e_sbcn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x40]
+
+    e_sbcn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x45]
+
+    e_sbcn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x4f]
+
+    e_sbcn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x5f]
+
+    e_sbcn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x4a]
+
+    e_sbcn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x40]
+
+    e_sbcn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x40]
+
+    e_sbcn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x45]
+
+    e_sbcn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x4f]
+
+    e_sbcn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x5f]
+
+    e_sbcn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x4a]
+
+    e_sbcn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x40]
+
+    e_sbcn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x45]
+
+    e_sbcn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x4f]
+
+    e_sbcn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x5f]
+
+    e_sbcn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x4a]
+
+    e_sbcn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x40]
+
+    e_sbcn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x45]
+
+    e_sbcn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x4f]
+
+    e_sbcn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x5f]
+
+    e_sbcn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x4a]
+
+    e_sbcn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x40]
+
+    e_sbcn_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x08,0x40]
+
+    e_sbcn_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x28,0x45]
+
+    e_sbcn_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x59,0x4f]
+
+    e_sbcn_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x79,0x5f]
+
+    e_sbcn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x4a]
+
+    e_sbcn_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x08,0x40]
+
+    e_sbcn_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x28,0x45]
+
+    e_sbcn_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x59,0x4f]
+
+    e_sbcn_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x79,0x5f]
+
+    e_sbcn_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x18,0x4a]
+
+    e_sbcn_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x08,0x40]
+
+    e_sbcn_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x28,0x45]
+
+    e_sbcn_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x59,0x4f]
+
+    e_sbcn_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x79,0x5f]
+
+    e_sbcn_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x18,0x4a]
+
+    e_sbcn_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x08,0x40]
+
+    e_sbcn_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x08,0x40]
+
+    e_sbcn_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x28,0x45]
+
+    e_sbcn_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x59,0x4f]
+
+    e_sbcn_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x79,0x5f]
+
+    e_sbcn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x4a]
+
+    e_sbcn_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x08,0x40]
+
+    e_sbcn_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x28,0x45]
+
+    e_sbcn_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x59,0x4f]
+
+    e_sbcn_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x79,0x5f]
+
+    e_sbcn_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x18,0x4a]
+
+    e_sbcn_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x08,0x40]
+
+    e_sbcn_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x28,0x45]
+
+    e_sbcn_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x59,0x4f]
+
+    e_sbcn_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x79,0x5f]
+
+    e_sbcn_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x18,0x4a]
+
+    e_sbcn_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x08,0x40]
+
+    e_sbc_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x20]
+
+    e_sbc_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x25]
+
+    e_sbc_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x2f]
+
+    e_sbc_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x3f]
+
+    e_sbc_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x2a]
+
+    e_sbc_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x20]
+
+    e_sbc_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x25]
+
+    e_sbc_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x2f]
+
+    e_sbc_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x3f]
+
+    e_sbc_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x2a]
+
+    e_sbc_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x20]
+
+    e_sbc_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x25]
+
+    e_sbc_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x2f]
+
+    e_sbc_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x3f]
+
+    e_sbc_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x2a]
+
+    e_sbc_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x20]
+
+    e_sbc_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x20]
+
+    e_sbc_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x25]
+
+    e_sbc_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x2f]
+
+    e_sbc_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x3f]
+
+    e_sbc_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x2a]
+
+    e_sbc_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x20]
+
+    e_sbc_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x25]
+
+    e_sbc_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x2f]
+
+    e_sbc_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x3f]
+
+    e_sbc_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x2a]
+
+    e_sbc_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x20]
+
+    e_sbc_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x25]
+
+    e_sbc_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x2f]
+
+    e_sbc_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x3f]
+
+    e_sbc_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x2a]
+
+    e_sbc_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x20]
+
+    e_sbc_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x00,0x20]
+
+    e_sbc_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x20,0x25]
+
+    e_sbc_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x51,0x2f]
+
+    e_sbc_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x71,0x3f]
+
+    e_sbc_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x2a]
+
+    e_sbc_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x00,0x20]
+
+    e_sbc_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x20,0x25]
+
+    e_sbc_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x51,0x2f]
+
+    e_sbc_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x71,0x3f]
+
+    e_sbc_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x10,0x2a]
+
+    e_sbc_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x00,0x20]
+
+    e_sbc_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x20,0x25]
+
+    e_sbc_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x51,0x2f]
+
+    e_sbc_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x71,0x3f]
+
+    e_sbc_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x10,0x2a]
+
+    e_sbc_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x00,0x20]
+
+    e_sbc_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x00,0x20]
+
+    e_sbc_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x20,0x25]
+
+    e_sbc_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x51,0x2f]
+
+    e_sbc_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x71,0x3f]
+
+    e_sbc_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x2a]
+
+    e_sbc_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x00,0x20]
+
+    e_sbc_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x20,0x25]
+
+    e_sbc_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x51,0x2f]
+
+    e_sbc_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x71,0x3f]
+
+    e_sbc_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x10,0x2a]
+
+    e_sbc_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x00,0x20]
+
+    e_sbc_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x20,0x25]
+
+    e_sbc_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x51,0x2f]
+
+    e_sbc_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x71,0x3f]
+
+    e_sbc_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x10,0x2a]
+
+    e_sbc_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x00,0x20]
+
+    e_sbcn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x20]
+
+    e_sbcn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x25]
+
+    e_sbcn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x2f]
+
+    e_sbcn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x3f]
+
+    e_sbcn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x2a]
+
+    e_sbcn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x20]
+
+    e_sbcn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x25]
+
+    e_sbcn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x2f]
+
+    e_sbcn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x3f]
+
+    e_sbcn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x2a]
+
+    e_sbcn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x20]
+
+    e_sbcn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x25]
+
+    e_sbcn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x2f]
+
+    e_sbcn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x3f]
+
+    e_sbcn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x2a]
+
+    e_sbcn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x20]
+
+    e_sbcn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x20]
+
+    e_sbcn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x25]
+
+    e_sbcn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x2f]
+
+    e_sbcn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x3f]
+
+    e_sbcn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x2a]
+
+    e_sbcn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x20]
+
+    e_sbcn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x25]
+
+    e_sbcn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x2f]
+
+    e_sbcn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x3f]
+
+    e_sbcn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x2a]
+
+    e_sbcn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x20]
+
+    e_sbcn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x25]
+
+    e_sbcn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x2f]
+
+    e_sbcn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x3f]
+
+    e_sbcn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x2a]
+
+    e_sbcn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x20]
+
+    e_sbcn_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x08,0x20]
+
+    e_sbcn_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x28,0x25]
+
+    e_sbcn_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x59,0x2f]
+
+    e_sbcn_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x79,0x3f]
+
+    e_sbcn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x2a]
+
+    e_sbcn_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x08,0x20]
+
+    e_sbcn_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x28,0x25]
+
+    e_sbcn_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x59,0x2f]
+
+    e_sbcn_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x79,0x3f]
+
+    e_sbcn_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x18,0x2a]
+
+    e_sbcn_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x08,0x20]
+
+    e_sbcn_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x28,0x25]
+
+    e_sbcn_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x59,0x2f]
+
+    e_sbcn_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x79,0x3f]
+
+    e_sbcn_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x18,0x2a]
+
+    e_sbcn_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x08,0x20]
+
+    e_sbcn_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x08,0x20]
+
+    e_sbcn_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x28,0x25]
+
+    e_sbcn_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x59,0x2f]
+
+    e_sbcn_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x79,0x3f]
+
+    e_sbcn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x2a]
+
+    e_sbcn_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x08,0x20]
+
+    e_sbcn_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x28,0x25]
+
+    e_sbcn_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x59,0x2f]
+
+    e_sbcn_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x79,0x3f]
+
+    e_sbcn_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x18,0x2a]
+
+    e_sbcn_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x08,0x20]
+
+    e_sbcn_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x28,0x25]
+
+    e_sbcn_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x59,0x2f]
+
+    e_sbcn_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x79,0x3f]
+
+    e_sbcn_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x18,0x2a]
+
+    e_sbcn_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x08,0x20]
+
+    e_sbc_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x60]
+
+    e_sbc_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x65]
+
+    e_sbc_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x6f]
+
+    e_sbc_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x7f]
+
+    e_sbc_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x6a]
+
+    e_sbc_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x60]
+
+    e_sbc_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x65]
+
+    e_sbc_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x6f]
+
+    e_sbc_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x7f]
+
+    e_sbc_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x6a]
+
+    e_sbc_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x60]
+
+    e_sbc_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x65]
+
+    e_sbc_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x6f]
+
+    e_sbc_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x7f]
+
+    e_sbc_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x6a]
+
+    e_sbc_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x60]
+
+    e_sbc_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x60]
+
+    e_sbc_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x65]
+
+    e_sbc_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x6f]
+
+    e_sbc_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x7f]
+
+    e_sbc_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x6a]
+
+    e_sbc_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x60]
+
+    e_sbc_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x65]
+
+    e_sbc_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x6f]
+
+    e_sbc_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x7f]
+
+    e_sbc_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x6a]
+
+    e_sbc_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x60]
+
+    e_sbc_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x65]
+
+    e_sbc_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x6f]
+
+    e_sbc_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x7f]
+
+    e_sbc_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x6a]
+
+    e_sbc_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x60]
+
+    e_sbc_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x00,0x60]
+
+    e_sbc_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x20,0x65]
+
+    e_sbc_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x51,0x6f]
+
+    e_sbc_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x71,0x7f]
+
+    e_sbc_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x6a]
+
+    e_sbc_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x00,0x60]
+
+    e_sbc_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x20,0x65]
+
+    e_sbc_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x51,0x6f]
+
+    e_sbc_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x71,0x7f]
+
+    e_sbc_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x10,0x6a]
+
+    e_sbc_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x00,0x60]
+
+    e_sbc_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x20,0x65]
+
+    e_sbc_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x51,0x6f]
+
+    e_sbc_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x71,0x7f]
+
+    e_sbc_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x10,0x6a]
+
+    e_sbc_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x00,0x60]
+
+    e_sbc_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x00,0x60]
+
+    e_sbc_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x20,0x65]
+
+    e_sbc_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x51,0x6f]
+
+    e_sbc_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x71,0x7f]
+
+    e_sbc_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x6a]
+
+    e_sbc_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x00,0x60]
+
+    e_sbc_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x20,0x65]
+
+    e_sbc_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x51,0x6f]
+
+    e_sbc_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x71,0x7f]
+
+    e_sbc_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x10,0x6a]
+
+    e_sbc_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x00,0x60]
+
+    e_sbc_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x20,0x65]
+
+    e_sbc_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x51,0x6f]
+
+    e_sbc_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x71,0x7f]
+
+    e_sbc_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x10,0x6a]
+
+    e_sbc_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x00,0x60]
+
+    e_sbcn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x60]
+
+    e_sbcn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x65]
+
+    e_sbcn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x6f]
+
+    e_sbcn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x7f]
+
+    e_sbcn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x6a]
+
+    e_sbcn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x60]
+
+    e_sbcn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x65]
+
+    e_sbcn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x6f]
+
+    e_sbcn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x7f]
+
+    e_sbcn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x6a]
+
+    e_sbcn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x60]
+
+    e_sbcn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x65]
+
+    e_sbcn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x6f]
+
+    e_sbcn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x7f]
+
+    e_sbcn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x6a]
+
+    e_sbcn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x60]
+
+    e_sbcn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x60]
+
+    e_sbcn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x65]
+
+    e_sbcn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x6f]
+
+    e_sbcn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x7f]
+
+    e_sbcn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x6a]
+
+    e_sbcn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x60]
+
+    e_sbcn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x65]
+
+    e_sbcn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x6f]
+
+    e_sbcn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x7f]
+
+    e_sbcn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x6a]
+
+    e_sbcn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x60]
+
+    e_sbcn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x65]
+
+    e_sbcn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x6f]
+
+    e_sbcn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x7f]
+
+    e_sbcn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x6a]
+
+    e_sbcn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x60]
+
+    e_sbcn_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x08,0x60]
+
+    e_sbcn_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x28,0x65]
+
+    e_sbcn_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x59,0x6f]
+
+    e_sbcn_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x79,0x7f]
+
+    e_sbcn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x6a]
+
+    e_sbcn_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x08,0x60]
+
+    e_sbcn_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x28,0x65]
+
+    e_sbcn_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x59,0x6f]
+
+    e_sbcn_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x79,0x7f]
+
+    e_sbcn_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x18,0x6a]
+
+    e_sbcn_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x08,0x60]
+
+    e_sbcn_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x28,0x65]
+
+    e_sbcn_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x59,0x6f]
+
+    e_sbcn_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x79,0x7f]
+
+    e_sbcn_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x18,0x6a]
+
+    e_sbcn_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x08,0x60]
+
+    e_sbcn_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x08,0x60]
+
+    e_sbcn_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x28,0x65]
+
+    e_sbcn_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x59,0x6f]
+
+    e_sbcn_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x79,0x7f]
+
+    e_sbcn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x6a]
+
+    e_sbcn_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x08,0x60]
+
+    e_sbcn_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x28,0x65]
+
+    e_sbcn_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x59,0x6f]
+
+    e_sbcn_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x79,0x7f]
+
+    e_sbcn_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x18,0x6a]
+
+    e_sbcn_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x08,0x60]
+
+    e_sbcn_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x28,0x65]
+
+    e_sbcn_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x59,0x6f]
+
+    e_sbcn_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x79,0x7f]
+
+    e_sbcn_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x18,0x6a]
+
+    e_sbcn_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x08,0x60]
+
+    e_sbc_f r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x00,0x80]
+
+    e_sbc_f r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x20,0x80]
+
+    e_sbc_f r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x51,0x80]
+
+    e_sbc_f r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x71,0x80]
+
+    e_sbc_f r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x10,0x80]
+
+    e_sbc_f r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x00,0x80]
+
+    e_sbc_f r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x20,0x80]
+
+    e_sbc_f r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x51,0x80]
+
+    e_sbc_f r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x71,0x80]
+
+    e_sbc_f r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x10,0x80]
+
+    e_sbc_f r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x00,0x80]
+
+    e_sbc_f r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x20,0x80]
+
+    e_sbc_f r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x51,0x80]
+
+    e_sbc_f r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x71,0x80]
+
+    e_sbc_f r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x10,0x80]
+
+    e_sbc_f r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x00,0x80]
+
+    e_sbc_fs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x00,0x80]
+
+    e_sbc_fs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x20,0x80]
+
+    e_sbc_fs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x51,0x80]
+
+    e_sbc_fs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x71,0x80]
+
+    e_sbc_fs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x10,0x80]
+
+    e_sbc_fs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x00,0x80]
+
+    e_sbc_fs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x20,0x80]
+
+    e_sbc_fs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x51,0x80]
+
+    e_sbc_fs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x71,0x80]
+
+    e_sbc_fs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x10,0x80]
+
+    e_sbc_fs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x00,0x80]
+
+    e_sbc_fs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x20,0x80]
+
+    e_sbc_fs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x51,0x80]
+
+    e_sbc_fs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x71,0x80]
+
+    e_sbc_fs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x10,0x80]
+
+    e_sbc_fs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x00,0x80]
+
+    e_sbc_f_ze r0, r0, r0
+# CHECK: encoding: [0x2a,0x00,0x00,0x80]
+
+    e_sbc_f_nz r2, r2, r2
+# CHECK: encoding: [0x4a,0x88,0x20,0x80]
+
+    e_sbc_f_po r5, r5, r5
+# CHECK: encoding: [0x6a,0x54,0x51,0x80]
+
+    e_sbc_f_ne r7, r7, r7
+# CHECK: encoding: [0x8a,0xdc,0x71,0x80]
+
+    e_sbc_f r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x10,0x80]
+
+    e_sbc_f_az r0, r0, r0
+# CHECK: encoding: [0xaa,0x00,0x00,0x80]
+
+    e_sbc_f_zb r2, r2, r2
+# CHECK: encoding: [0xca,0x88,0x20,0x80]
+
+    e_sbc_f_ca r5, r5, r5
+# CHECK: encoding: [0xea,0x54,0x51,0x80]
+
+    e_sbc_f_nc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdd,0x71,0x80]
+
+    e_sbc_f_cz r1, r1, r1
+# CHECK: encoding: [0x2a,0x45,0x10,0x80]
+
+    e_sbc_f_spo r0, r0, r0
+# CHECK: encoding: [0x4a,0x01,0x00,0x80]
+
+    e_sbc_f_sne r2, r2, r2
+# CHECK: encoding: [0x6a,0x89,0x20,0x80]
+
+    e_sbc_f_nbs r5, r5, r5
+# CHECK: encoding: [0x8a,0x55,0x51,0x80]
+
+    e_sbc_f_nex r7, r7, r7
+# CHECK: encoding: [0xaa,0xdd,0x71,0x80]
+
+    e_sbc_f_bs r1, r1, r1
+# CHECK: encoding: [0xca,0x45,0x10,0x80]
+
+    e_sbc_f_ex r0, r0, r0
+# CHECK: encoding: [0xea,0x01,0x00,0x80]
+
+    e_sbc_fs_ze r0, r0, r0
+# CHECK: encoding: [0x2a,0x02,0x00,0x80]
+
+    e_sbc_fs_nz r2, r2, r2
+# CHECK: encoding: [0x4a,0x8a,0x20,0x80]
+
+    e_sbc_fs_po r5, r5, r5
+# CHECK: encoding: [0x6a,0x56,0x51,0x80]
+
+    e_sbc_fs_ne r7, r7, r7
+# CHECK: encoding: [0x8a,0xde,0x71,0x80]
+
+    e_sbc_fs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x10,0x80]
+
+    e_sbc_fs_az r0, r0, r0
+# CHECK: encoding: [0xaa,0x02,0x00,0x80]
+
+    e_sbc_fs_zb r2, r2, r2
+# CHECK: encoding: [0xca,0x8a,0x20,0x80]
+
+    e_sbc_fs_ca r5, r5, r5
+# CHECK: encoding: [0xea,0x56,0x51,0x80]
+
+    e_sbc_fs_nc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdf,0x71,0x80]
+
+    e_sbc_fs_cz r1, r1, r1
+# CHECK: encoding: [0x2a,0x47,0x10,0x80]
+
+    e_sbc_fs_spo r0, r0, r0
+# CHECK: encoding: [0x4a,0x03,0x00,0x80]
+
+    e_sbc_fs_sne r2, r2, r2
+# CHECK: encoding: [0x6a,0x8b,0x20,0x80]
+
+    e_sbc_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x8a,0x57,0x51,0x80]
+
+    e_sbc_fs_nex r7, r7, r7
+# CHECK: encoding: [0xaa,0xdf,0x71,0x80]
+
+    e_sbc_fs_bs r1, r1, r1
+# CHECK: encoding: [0xca,0x47,0x10,0x80]
+
+    e_sbc_fs_ex r0, r0, r0
+# CHECK: encoding: [0xea,0x03,0x00,0x80]
+
+    e_sbcn_f r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x08,0x80]
+
+    e_sbcn_f r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x28,0x80]
+
+    e_sbcn_f r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x59,0x80]
+
+    e_sbcn_f r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x79,0x80]
+
+    e_sbcn_f r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x18,0x80]
+
+    e_sbcn_f r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x08,0x80]
+
+    e_sbcn_f r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x28,0x80]
+
+    e_sbcn_f r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x59,0x80]
+
+    e_sbcn_f r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x79,0x80]
+
+    e_sbcn_f r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x18,0x80]
+
+    e_sbcn_f r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x08,0x80]
+
+    e_sbcn_f r2, r2, r2
+# CHECK: encoding: [0x0a,0x88,0x28,0x80]
+
+    e_sbcn_f r5, r5, r5
+# CHECK: encoding: [0x0a,0x54,0x59,0x80]
+
+    e_sbcn_f r7, r7, r7
+# CHECK: encoding: [0x0a,0xdc,0x79,0x80]
+
+    e_sbcn_f r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x18,0x80]
+
+    e_sbcn_f r0, r0, r0
+# CHECK: encoding: [0x0a,0x00,0x08,0x80]
+
+    e_sbcn_fs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x08,0x80]
+
+    e_sbcn_fs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x28,0x80]
+
+    e_sbcn_fs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x59,0x80]
+
+    e_sbcn_fs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x79,0x80]
+
+    e_sbcn_fs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x18,0x80]
+
+    e_sbcn_fs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x08,0x80]
+
+    e_sbcn_fs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x28,0x80]
+
+    e_sbcn_fs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x59,0x80]
+
+    e_sbcn_fs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x79,0x80]
+
+    e_sbcn_fs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x18,0x80]
+
+    e_sbcn_fs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x08,0x80]
+
+    e_sbcn_fs r2, r2, r2
+# CHECK: encoding: [0x0a,0x8a,0x28,0x80]
+
+    e_sbcn_fs r5, r5, r5
+# CHECK: encoding: [0x0a,0x56,0x59,0x80]
+
+    e_sbcn_fs r7, r7, r7
+# CHECK: encoding: [0x0a,0xde,0x79,0x80]
+
+    e_sbcn_fs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x18,0x80]
+
+    e_sbcn_fs r0, r0, r0
+# CHECK: encoding: [0x0a,0x02,0x08,0x80]
+
+    e_sbcn_f_ze r0, r0, r0
+# CHECK: encoding: [0x2a,0x00,0x08,0x80]
+
+    e_sbcn_f_nz r2, r2, r2
+# CHECK: encoding: [0x4a,0x88,0x28,0x80]
+
+    e_sbcn_f_po r5, r5, r5
+# CHECK: encoding: [0x6a,0x54,0x59,0x80]
+
+    e_sbcn_f_ne r7, r7, r7
+# CHECK: encoding: [0x8a,0xdc,0x79,0x80]
+
+    e_sbcn_f r1, r1, r1
+# CHECK: encoding: [0x0a,0x44,0x18,0x80]
+
+    e_sbcn_f_az r0, r0, r0
+# CHECK: encoding: [0xaa,0x00,0x08,0x80]
+
+    e_sbcn_f_zb r2, r2, r2
+# CHECK: encoding: [0xca,0x88,0x28,0x80]
+
+    e_sbcn_f_ca r5, r5, r5
+# CHECK: encoding: [0xea,0x54,0x59,0x80]
+
+    e_sbcn_f_nc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdd,0x79,0x80]
+
+    e_sbcn_f_cz r1, r1, r1
+# CHECK: encoding: [0x2a,0x45,0x18,0x80]
+
+    e_sbcn_f_spo r0, r0, r0
+# CHECK: encoding: [0x4a,0x01,0x08,0x80]
+
+    e_sbcn_f_sne r2, r2, r2
+# CHECK: encoding: [0x6a,0x89,0x28,0x80]
+
+    e_sbcn_f_nbs r5, r5, r5
+# CHECK: encoding: [0x8a,0x55,0x59,0x80]
+
+    e_sbcn_f_nex r7, r7, r7
+# CHECK: encoding: [0xaa,0xdd,0x79,0x80]
+
+    e_sbcn_f_bs r1, r1, r1
+# CHECK: encoding: [0xca,0x45,0x18,0x80]
+
+    e_sbcn_f_ex r0, r0, r0
+# CHECK: encoding: [0xea,0x01,0x08,0x80]
+
+    e_sbcn_fs_ze r0, r0, r0
+# CHECK: encoding: [0x2a,0x02,0x08,0x80]
+
+    e_sbcn_fs_nz r2, r2, r2
+# CHECK: encoding: [0x4a,0x8a,0x28,0x80]
+
+    e_sbcn_fs_po r5, r5, r5
+# CHECK: encoding: [0x6a,0x56,0x59,0x80]
+
+    e_sbcn_fs_ne r7, r7, r7
+# CHECK: encoding: [0x8a,0xde,0x79,0x80]
+
+    e_sbcn_fs r1, r1, r1
+# CHECK: encoding: [0x0a,0x46,0x18,0x80]
+
+    e_sbcn_fs_az r0, r0, r0
+# CHECK: encoding: [0xaa,0x02,0x08,0x80]
+
+    e_sbcn_fs_zb r2, r2, r2
+# CHECK: encoding: [0xca,0x8a,0x28,0x80]
+
+    e_sbcn_fs_ca r5, r5, r5
+# CHECK: encoding: [0xea,0x56,0x59,0x80]
+
+    e_sbcn_fs_nc r7, r7, r7
+# CHECK: encoding: [0x0a,0xdf,0x79,0x80]
+
+    e_sbcn_fs_cz r1, r1, r1
+# CHECK: encoding: [0x2a,0x47,0x18,0x80]
+
+    e_sbcn_fs_spo r0, r0, r0
+# CHECK: encoding: [0x4a,0x03,0x08,0x80]
+
+    e_sbcn_fs_sne r2, r2, r2
+# CHECK: encoding: [0x6a,0x8b,0x28,0x80]
+
+    e_sbcn_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x8a,0x57,0x59,0x80]
+
+    e_sbcn_fs_nex r7, r7, r7
+# CHECK: encoding: [0xaa,0xdf,0x79,0x80]
+
+    e_sbcn_fs_bs r1, r1, r1
+# CHECK: encoding: [0xca,0x47,0x18,0x80]
+
+    e_sbcn_fs_ex r0, r0, r0
+# CHECK: encoding: [0xea,0x03,0x08,0x80]
+
+    e_sbc_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x80]
+
+    e_sbc_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x85]
+
+    e_sbc_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x8f]
+
+    e_sbc_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x9f]
+
+    e_sbc_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x8a]
+
+    e_sbc_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x80]
+
+    e_sbc_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x85]
+
+    e_sbc_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x8f]
+
+    e_sbc_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x9f]
+
+    e_sbc_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x8a]
+
+    e_sbc_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x80]
+
+    e_sbc_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0x85]
+
+    e_sbc_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0x8f]
+
+    e_sbc_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0x9f]
+
+    e_sbc_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x8a]
+
+    e_sbc_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0x80]
+
+    e_sbc_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x80]
+
+    e_sbc_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x85]
+
+    e_sbc_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x8f]
+
+    e_sbc_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x9f]
+
+    e_sbc_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x8a]
+
+    e_sbc_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x80]
+
+    e_sbc_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x85]
+
+    e_sbc_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x8f]
+
+    e_sbc_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x9f]
+
+    e_sbc_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x8a]
+
+    e_sbc_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x80]
+
+    e_sbc_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0x85]
+
+    e_sbc_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0x8f]
+
+    e_sbc_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0x9f]
+
+    e_sbc_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x8a]
+
+    e_sbc_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0x80]
+
+    e_sbc_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x00,0x80]
+
+    e_sbc_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x20,0x85]
+
+    e_sbc_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x51,0x8f]
+
+    e_sbc_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x71,0x9f]
+
+    e_sbc_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0x8a]
+
+    e_sbc_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x00,0x80]
+
+    e_sbc_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x20,0x85]
+
+    e_sbc_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x51,0x8f]
+
+    e_sbc_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x71,0x9f]
+
+    e_sbc_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x10,0x8a]
+
+    e_sbc_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x00,0x80]
+
+    e_sbc_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x20,0x85]
+
+    e_sbc_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x51,0x8f]
+
+    e_sbc_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x71,0x9f]
+
+    e_sbc_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x10,0x8a]
+
+    e_sbc_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x00,0x80]
+
+    e_sbc_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x00,0x80]
+
+    e_sbc_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x20,0x85]
+
+    e_sbc_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x51,0x8f]
+
+    e_sbc_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x71,0x9f]
+
+    e_sbc_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0x8a]
+
+    e_sbc_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x00,0x80]
+
+    e_sbc_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x20,0x85]
+
+    e_sbc_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x51,0x8f]
+
+    e_sbc_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x71,0x9f]
+
+    e_sbc_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x10,0x8a]
+
+    e_sbc_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x00,0x80]
+
+    e_sbc_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x20,0x85]
+
+    e_sbc_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x51,0x8f]
+
+    e_sbc_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x71,0x9f]
+
+    e_sbc_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x10,0x8a]
+
+    e_sbc_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x00,0x80]
+
+    e_sbcn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x80]
+
+    e_sbcn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x85]
+
+    e_sbcn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x8f]
+
+    e_sbcn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x9f]
+
+    e_sbcn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x8a]
+
+    e_sbcn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x80]
+
+    e_sbcn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x85]
+
+    e_sbcn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x8f]
+
+    e_sbcn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x9f]
+
+    e_sbcn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x8a]
+
+    e_sbcn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x80]
+
+    e_sbcn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0x85]
+
+    e_sbcn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0x8f]
+
+    e_sbcn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0x9f]
+
+    e_sbcn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x8a]
+
+    e_sbcn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0x80]
+
+    e_sbcn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x80]
+
+    e_sbcn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x85]
+
+    e_sbcn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x8f]
+
+    e_sbcn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x9f]
+
+    e_sbcn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x8a]
+
+    e_sbcn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x80]
+
+    e_sbcn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x85]
+
+    e_sbcn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x8f]
+
+    e_sbcn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x9f]
+
+    e_sbcn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x8a]
+
+    e_sbcn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x80]
+
+    e_sbcn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0x85]
+
+    e_sbcn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0x8f]
+
+    e_sbcn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0x9f]
+
+    e_sbcn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x8a]
+
+    e_sbcn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0x80]
+
+    e_sbcn_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x08,0x80]
+
+    e_sbcn_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x28,0x85]
+
+    e_sbcn_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x59,0x8f]
+
+    e_sbcn_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x79,0x9f]
+
+    e_sbcn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0x8a]
+
+    e_sbcn_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x08,0x80]
+
+    e_sbcn_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x28,0x85]
+
+    e_sbcn_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x59,0x8f]
+
+    e_sbcn_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x79,0x9f]
+
+    e_sbcn_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x18,0x8a]
+
+    e_sbcn_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x08,0x80]
+
+    e_sbcn_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x28,0x85]
+
+    e_sbcn_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x59,0x8f]
+
+    e_sbcn_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x79,0x9f]
+
+    e_sbcn_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x18,0x8a]
+
+    e_sbcn_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x08,0x80]
+
+    e_sbcn_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x08,0x80]
+
+    e_sbcn_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x28,0x85]
+
+    e_sbcn_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x59,0x8f]
+
+    e_sbcn_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x79,0x9f]
+
+    e_sbcn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0x8a]
+
+    e_sbcn_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x08,0x80]
+
+    e_sbcn_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x28,0x85]
+
+    e_sbcn_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x59,0x8f]
+
+    e_sbcn_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x79,0x9f]
+
+    e_sbcn_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x18,0x8a]
+
+    e_sbcn_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x08,0x80]
+
+    e_sbcn_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x28,0x85]
+
+    e_sbcn_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x59,0x8f]
+
+    e_sbcn_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x79,0x9f]
+
+    e_sbcn_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x18,0x8a]
+
+    e_sbcn_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x08,0x80]
+
+    e_sbc_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xc0]
+
+    e_sbc_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xc5]
+
+    e_sbc_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xcf]
+
+    e_sbc_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xdf]
+
+    e_sbc_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xca]
+
+    e_sbc_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xc0]
+
+    e_sbc_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xc5]
+
+    e_sbc_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xcf]
+
+    e_sbc_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xdf]
+
+    e_sbc_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xca]
+
+    e_sbc_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xc0]
+
+    e_sbc_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xc5]
+
+    e_sbc_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xcf]
+
+    e_sbc_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xdf]
+
+    e_sbc_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xca]
+
+    e_sbc_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xc0]
+
+    e_sbc_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xc0]
+
+    e_sbc_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xc5]
+
+    e_sbc_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xcf]
+
+    e_sbc_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xdf]
+
+    e_sbc_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xca]
+
+    e_sbc_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xc0]
+
+    e_sbc_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xc5]
+
+    e_sbc_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xcf]
+
+    e_sbc_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xdf]
+
+    e_sbc_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xca]
+
+    e_sbc_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xc0]
+
+    e_sbc_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xc5]
+
+    e_sbc_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xcf]
+
+    e_sbc_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xdf]
+
+    e_sbc_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xca]
+
+    e_sbc_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xc0]
+
+    e_sbc_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x00,0xc0]
+
+    e_sbc_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x20,0xc5]
+
+    e_sbc_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x51,0xcf]
+
+    e_sbc_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x71,0xdf]
+
+    e_sbc_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xca]
+
+    e_sbc_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x00,0xc0]
+
+    e_sbc_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x20,0xc5]
+
+    e_sbc_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x51,0xcf]
+
+    e_sbc_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x71,0xdf]
+
+    e_sbc_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x10,0xca]
+
+    e_sbc_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x00,0xc0]
+
+    e_sbc_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x20,0xc5]
+
+    e_sbc_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x51,0xcf]
+
+    e_sbc_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x71,0xdf]
+
+    e_sbc_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x10,0xca]
+
+    e_sbc_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x00,0xc0]
+
+    e_sbc_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x00,0xc0]
+
+    e_sbc_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x20,0xc5]
+
+    e_sbc_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x51,0xcf]
+
+    e_sbc_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x71,0xdf]
+
+    e_sbc_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xca]
+
+    e_sbc_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x00,0xc0]
+
+    e_sbc_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x20,0xc5]
+
+    e_sbc_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x51,0xcf]
+
+    e_sbc_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x71,0xdf]
+
+    e_sbc_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x10,0xca]
+
+    e_sbc_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x00,0xc0]
+
+    e_sbc_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x20,0xc5]
+
+    e_sbc_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x51,0xcf]
+
+    e_sbc_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x71,0xdf]
+
+    e_sbc_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x10,0xca]
+
+    e_sbc_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x00,0xc0]
+
+    e_sbcn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xc0]
+
+    e_sbcn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xc5]
+
+    e_sbcn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xcf]
+
+    e_sbcn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xdf]
+
+    e_sbcn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xca]
+
+    e_sbcn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xc0]
+
+    e_sbcn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xc5]
+
+    e_sbcn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xcf]
+
+    e_sbcn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xdf]
+
+    e_sbcn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xca]
+
+    e_sbcn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xc0]
+
+    e_sbcn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xc5]
+
+    e_sbcn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xcf]
+
+    e_sbcn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xdf]
+
+    e_sbcn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xca]
+
+    e_sbcn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xc0]
+
+    e_sbcn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xc0]
+
+    e_sbcn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xc5]
+
+    e_sbcn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xcf]
+
+    e_sbcn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xdf]
+
+    e_sbcn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xca]
+
+    e_sbcn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xc0]
+
+    e_sbcn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xc5]
+
+    e_sbcn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xcf]
+
+    e_sbcn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xdf]
+
+    e_sbcn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xca]
+
+    e_sbcn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xc0]
+
+    e_sbcn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xc5]
+
+    e_sbcn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xcf]
+
+    e_sbcn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xdf]
+
+    e_sbcn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xca]
+
+    e_sbcn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xc0]
+
+    e_sbcn_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x08,0xc0]
+
+    e_sbcn_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x28,0xc5]
+
+    e_sbcn_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x59,0xcf]
+
+    e_sbcn_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x79,0xdf]
+
+    e_sbcn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xca]
+
+    e_sbcn_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x08,0xc0]
+
+    e_sbcn_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x28,0xc5]
+
+    e_sbcn_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x59,0xcf]
+
+    e_sbcn_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x79,0xdf]
+
+    e_sbcn_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x18,0xca]
+
+    e_sbcn_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x08,0xc0]
+
+    e_sbcn_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x28,0xc5]
+
+    e_sbcn_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x59,0xcf]
+
+    e_sbcn_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x79,0xdf]
+
+    e_sbcn_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x18,0xca]
+
+    e_sbcn_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x08,0xc0]
+
+    e_sbcn_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x08,0xc0]
+
+    e_sbcn_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x28,0xc5]
+
+    e_sbcn_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x59,0xcf]
+
+    e_sbcn_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x79,0xdf]
+
+    e_sbcn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xca]
+
+    e_sbcn_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x08,0xc0]
+
+    e_sbcn_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x28,0xc5]
+
+    e_sbcn_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x59,0xcf]
+
+    e_sbcn_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x79,0xdf]
+
+    e_sbcn_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x18,0xca]
+
+    e_sbcn_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x08,0xc0]
+
+    e_sbcn_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x28,0xc5]
+
+    e_sbcn_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x59,0xcf]
+
+    e_sbcn_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x79,0xdf]
+
+    e_sbcn_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x18,0xca]
+
+    e_sbcn_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x08,0xc0]
+
+    e_sbc_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xa0]
+
+    e_sbc_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xa5]
+
+    e_sbc_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xaf]
+
+    e_sbc_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xbf]
+
+    e_sbc_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xaa]
+
+    e_sbc_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xa0]
+
+    e_sbc_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xa5]
+
+    e_sbc_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xaf]
+
+    e_sbc_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xbf]
+
+    e_sbc_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xaa]
+
+    e_sbc_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xa0]
+
+    e_sbc_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xa5]
+
+    e_sbc_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xaf]
+
+    e_sbc_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xbf]
+
+    e_sbc_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xaa]
+
+    e_sbc_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xa0]
+
+    e_sbc_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xa0]
+
+    e_sbc_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xa5]
+
+    e_sbc_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xaf]
+
+    e_sbc_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xbf]
+
+    e_sbc_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xaa]
+
+    e_sbc_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xa0]
+
+    e_sbc_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xa5]
+
+    e_sbc_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xaf]
+
+    e_sbc_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xbf]
+
+    e_sbc_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xaa]
+
+    e_sbc_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xa0]
+
+    e_sbc_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xa5]
+
+    e_sbc_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xaf]
+
+    e_sbc_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xbf]
+
+    e_sbc_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xaa]
+
+    e_sbc_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xa0]
+
+    e_sbc_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x00,0xa0]
+
+    e_sbc_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x20,0xa5]
+
+    e_sbc_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x51,0xaf]
+
+    e_sbc_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x71,0xbf]
+
+    e_sbc_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xaa]
+
+    e_sbc_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x00,0xa0]
+
+    e_sbc_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x20,0xa5]
+
+    e_sbc_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x51,0xaf]
+
+    e_sbc_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x71,0xbf]
+
+    e_sbc_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x10,0xaa]
+
+    e_sbc_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x00,0xa0]
+
+    e_sbc_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x20,0xa5]
+
+    e_sbc_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x51,0xaf]
+
+    e_sbc_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x71,0xbf]
+
+    e_sbc_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x10,0xaa]
+
+    e_sbc_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x00,0xa0]
+
+    e_sbc_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x00,0xa0]
+
+    e_sbc_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x20,0xa5]
+
+    e_sbc_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x51,0xaf]
+
+    e_sbc_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x71,0xbf]
+
+    e_sbc_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xaa]
+
+    e_sbc_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x00,0xa0]
+
+    e_sbc_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x20,0xa5]
+
+    e_sbc_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x51,0xaf]
+
+    e_sbc_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x71,0xbf]
+
+    e_sbc_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x10,0xaa]
+
+    e_sbc_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x00,0xa0]
+
+    e_sbc_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x20,0xa5]
+
+    e_sbc_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x51,0xaf]
+
+    e_sbc_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x71,0xbf]
+
+    e_sbc_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x10,0xaa]
+
+    e_sbc_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x00,0xa0]
+
+    e_sbcn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xa0]
+
+    e_sbcn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xa5]
+
+    e_sbcn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xaf]
+
+    e_sbcn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xbf]
+
+    e_sbcn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xaa]
+
+    e_sbcn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xa0]
+
+    e_sbcn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xa5]
+
+    e_sbcn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xaf]
+
+    e_sbcn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xbf]
+
+    e_sbcn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xaa]
+
+    e_sbcn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xa0]
+
+    e_sbcn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xa5]
+
+    e_sbcn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xaf]
+
+    e_sbcn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xbf]
+
+    e_sbcn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xaa]
+
+    e_sbcn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xa0]
+
+    e_sbcn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xa0]
+
+    e_sbcn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xa5]
+
+    e_sbcn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xaf]
+
+    e_sbcn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xbf]
+
+    e_sbcn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xaa]
+
+    e_sbcn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xa0]
+
+    e_sbcn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xa5]
+
+    e_sbcn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xaf]
+
+    e_sbcn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xbf]
+
+    e_sbcn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xaa]
+
+    e_sbcn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xa0]
+
+    e_sbcn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xa5]
+
+    e_sbcn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xaf]
+
+    e_sbcn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xbf]
+
+    e_sbcn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xaa]
+
+    e_sbcn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xa0]
+
+    e_sbcn_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x08,0xa0]
+
+    e_sbcn_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x28,0xa5]
+
+    e_sbcn_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x59,0xaf]
+
+    e_sbcn_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x79,0xbf]
+
+    e_sbcn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xaa]
+
+    e_sbcn_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x08,0xa0]
+
+    e_sbcn_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x28,0xa5]
+
+    e_sbcn_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x59,0xaf]
+
+    e_sbcn_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x79,0xbf]
+
+    e_sbcn_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x18,0xaa]
+
+    e_sbcn_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x08,0xa0]
+
+    e_sbcn_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x28,0xa5]
+
+    e_sbcn_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x59,0xaf]
+
+    e_sbcn_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x79,0xbf]
+
+    e_sbcn_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x18,0xaa]
+
+    e_sbcn_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x08,0xa0]
+
+    e_sbcn_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x08,0xa0]
+
+    e_sbcn_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x28,0xa5]
+
+    e_sbcn_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x59,0xaf]
+
+    e_sbcn_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x79,0xbf]
+
+    e_sbcn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xaa]
+
+    e_sbcn_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x08,0xa0]
+
+    e_sbcn_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x28,0xa5]
+
+    e_sbcn_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x59,0xaf]
+
+    e_sbcn_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x79,0xbf]
+
+    e_sbcn_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x18,0xaa]
+
+    e_sbcn_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x08,0xa0]
+
+    e_sbcn_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x28,0xa5]
+
+    e_sbcn_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x59,0xaf]
+
+    e_sbcn_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x79,0xbf]
+
+    e_sbcn_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x18,0xaa]
+
+    e_sbcn_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x08,0xa0]
+
+    e_sbc_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xe0]
+
+    e_sbc_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xe5]
+
+    e_sbc_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xef]
+
+    e_sbc_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xff]
+
+    e_sbc_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xea]
+
+    e_sbc_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xe0]
+
+    e_sbc_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xe5]
+
+    e_sbc_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xef]
+
+    e_sbc_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xff]
+
+    e_sbc_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xea]
+
+    e_sbc_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xe0]
+
+    e_sbc_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x20,0xe5]
+
+    e_sbc_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x51,0xef]
+
+    e_sbc_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x71,0xff]
+
+    e_sbc_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xea]
+
+    e_sbc_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x00,0xe0]
+
+    e_sbc_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xe0]
+
+    e_sbc_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xe5]
+
+    e_sbc_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xef]
+
+    e_sbc_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xff]
+
+    e_sbc_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xea]
+
+    e_sbc_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xe0]
+
+    e_sbc_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xe5]
+
+    e_sbc_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xef]
+
+    e_sbc_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xff]
+
+    e_sbc_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xea]
+
+    e_sbc_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xe0]
+
+    e_sbc_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x20,0xe5]
+
+    e_sbc_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x51,0xef]
+
+    e_sbc_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x71,0xff]
+
+    e_sbc_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xea]
+
+    e_sbc_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x00,0xe0]
+
+    e_sbc_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x00,0xe0]
+
+    e_sbc_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x20,0xe5]
+
+    e_sbc_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x51,0xef]
+
+    e_sbc_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x71,0xff]
+
+    e_sbc_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x10,0xea]
+
+    e_sbc_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x00,0xe0]
+
+    e_sbc_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x20,0xe5]
+
+    e_sbc_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x51,0xef]
+
+    e_sbc_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x71,0xff]
+
+    e_sbc_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x10,0xea]
+
+    e_sbc_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x00,0xe0]
+
+    e_sbc_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x20,0xe5]
+
+    e_sbc_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x51,0xef]
+
+    e_sbc_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x71,0xff]
+
+    e_sbc_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x10,0xea]
+
+    e_sbc_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x00,0xe0]
+
+    e_sbc_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x00,0xe0]
+
+    e_sbc_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x20,0xe5]
+
+    e_sbc_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x51,0xef]
+
+    e_sbc_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x71,0xff]
+
+    e_sbc_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x10,0xea]
+
+    e_sbc_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x00,0xe0]
+
+    e_sbc_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x20,0xe5]
+
+    e_sbc_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x51,0xef]
+
+    e_sbc_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x71,0xff]
+
+    e_sbc_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x10,0xea]
+
+    e_sbc_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x00,0xe0]
+
+    e_sbc_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x20,0xe5]
+
+    e_sbc_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x51,0xef]
+
+    e_sbc_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x71,0xff]
+
+    e_sbc_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x10,0xea]
+
+    e_sbc_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x00,0xe0]
+
+    e_sbcn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xe0]
+
+    e_sbcn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xe5]
+
+    e_sbcn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xef]
+
+    e_sbcn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xff]
+
+    e_sbcn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xea]
+
+    e_sbcn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xe0]
+
+    e_sbcn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xe5]
+
+    e_sbcn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xef]
+
+    e_sbcn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xff]
+
+    e_sbcn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xea]
+
+    e_sbcn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xe0]
+
+    e_sbcn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x88,0x28,0xe5]
+
+    e_sbcn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x54,0x59,0xef]
+
+    e_sbcn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdc,0x79,0xff]
+
+    e_sbcn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xea]
+
+    e_sbcn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x00,0x08,0xe0]
+
+    e_sbcn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xe0]
+
+    e_sbcn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xe5]
+
+    e_sbcn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xef]
+
+    e_sbcn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xff]
+
+    e_sbcn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xea]
+
+    e_sbcn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xe0]
+
+    e_sbcn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xe5]
+
+    e_sbcn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xef]
+
+    e_sbcn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xff]
+
+    e_sbcn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xea]
+
+    e_sbcn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xe0]
+
+    e_sbcn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0a,0x8a,0x28,0xe5]
+
+    e_sbcn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0a,0x56,0x59,0xef]
+
+    e_sbcn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xde,0x79,0xff]
+
+    e_sbcn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xea]
+
+    e_sbcn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0a,0x02,0x08,0xe0]
+
+    e_sbcn_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x00,0x08,0xe0]
+
+    e_sbcn_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x88,0x28,0xe5]
+
+    e_sbcn_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x54,0x59,0xef]
+
+    e_sbcn_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xdc,0x79,0xff]
+
+    e_sbcn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x44,0x18,0xea]
+
+    e_sbcn_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x00,0x08,0xe0]
+
+    e_sbcn_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x88,0x28,0xe5]
+
+    e_sbcn_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x54,0x59,0xef]
+
+    e_sbcn_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdd,0x79,0xff]
+
+    e_sbcn_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x45,0x18,0xea]
+
+    e_sbcn_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x01,0x08,0xe0]
+
+    e_sbcn_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x89,0x28,0xe5]
+
+    e_sbcn_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x55,0x59,0xef]
+
+    e_sbcn_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdd,0x79,0xff]
+
+    e_sbcn_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x45,0x18,0xea]
+
+    e_sbcn_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x01,0x08,0xe0]
+
+    e_sbcn_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2a,0x02,0x08,0xe0]
+
+    e_sbcn_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4a,0x8a,0x28,0xe5]
+
+    e_sbcn_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6a,0x56,0x59,0xef]
+
+    e_sbcn_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8a,0xde,0x79,0xff]
+
+    e_sbcn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0a,0x46,0x18,0xea]
+
+    e_sbcn_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xaa,0x02,0x08,0xe0]
+
+    e_sbcn_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xca,0x8a,0x28,0xe5]
+
+    e_sbcn_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xea,0x56,0x59,0xef]
+
+    e_sbcn_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0a,0xdf,0x79,0xff]
+
+    e_sbcn_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2a,0x47,0x18,0xea]
+
+    e_sbcn_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4a,0x03,0x08,0xe0]
+
+    e_sbcn_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6a,0x8b,0x28,0xe5]
+
+    e_sbcn_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8a,0x57,0x59,0xef]
+
+    e_sbcn_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xaa,0xdf,0x79,0xff]
+
+    e_sbcn_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xca,0x47,0x18,0xea]
+
+    e_sbcn_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xea,0x03,0x08,0xe0]
+
+    e_or r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x00,0x00]
+
+    e_or r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x20,0x00]
+
+    e_or r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x51,0x00]
+
+    e_or r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x71,0x00]
+
+    e_or r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x10,0x00]
+
+    e_or r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x00,0x00]
+
+    e_or r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x20,0x00]
+
+    e_or r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x51,0x00]
+
+    e_or r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x71,0x00]
+
+    e_or r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x10,0x00]
+
+    e_or r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x00,0x00]
+
+    e_or r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x20,0x00]
+
+    e_or r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x51,0x00]
+
+    e_or r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x71,0x00]
+
+    e_or r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x10,0x00]
+
+    e_or r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x00,0x00]
+
+    e_ors r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x00,0x00]
+
+    e_ors r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x20,0x00]
+
+    e_ors r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x51,0x00]
+
+    e_ors r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x71,0x00]
+
+    e_ors r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x10,0x00]
+
+    e_ors r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x00,0x00]
+
+    e_ors r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x20,0x00]
+
+    e_ors r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x51,0x00]
+
+    e_ors r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x71,0x00]
+
+    e_ors r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x10,0x00]
+
+    e_ors r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x00,0x00]
+
+    e_ors r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x20,0x00]
+
+    e_ors r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x51,0x00]
+
+    e_ors r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x71,0x00]
+
+    e_ors r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x10,0x00]
+
+    e_ors r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x00,0x00]
+
+    e_or_ze r0, r0, r0
+# CHECK: encoding: [0x2c,0x00,0x00,0x00]
+
+    e_or_nz r2, r2, r2
+# CHECK: encoding: [0x4c,0x88,0x20,0x00]
+
+    e_or_po r5, r5, r5
+# CHECK: encoding: [0x6c,0x54,0x51,0x00]
+
+    e_or_ne r7, r7, r7
+# CHECK: encoding: [0x8c,0xdc,0x71,0x00]
+
+    e_or r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x10,0x00]
+
+    e_or_az r0, r0, r0
+# CHECK: encoding: [0xac,0x00,0x00,0x00]
+
+    e_or_zb r2, r2, r2
+# CHECK: encoding: [0xcc,0x88,0x20,0x00]
+
+    e_or_ca r5, r5, r5
+# CHECK: encoding: [0xec,0x54,0x51,0x00]
+
+    e_or_nc r7, r7, r7
+# CHECK: encoding: [0x0c,0xdd,0x71,0x00]
+
+    e_or_cz r1, r1, r1
+# CHECK: encoding: [0x2c,0x45,0x10,0x00]
+
+    e_or_spo r0, r0, r0
+# CHECK: encoding: [0x4c,0x01,0x00,0x00]
+
+    e_or_sne r2, r2, r2
+# CHECK: encoding: [0x6c,0x89,0x20,0x00]
+
+    e_or_nbs r5, r5, r5
+# CHECK: encoding: [0x8c,0x55,0x51,0x00]
+
+    e_or_nex r7, r7, r7
+# CHECK: encoding: [0xac,0xdd,0x71,0x00]
+
+    e_or_bs r1, r1, r1
+# CHECK: encoding: [0xcc,0x45,0x10,0x00]
+
+    e_or_ex r0, r0, r0
+# CHECK: encoding: [0xec,0x01,0x00,0x00]
+
+    e_ors_ze r0, r0, r0
+# CHECK: encoding: [0x2c,0x02,0x00,0x00]
+
+    e_ors_nz r2, r2, r2
+# CHECK: encoding: [0x4c,0x8a,0x20,0x00]
+
+    e_ors_po r5, r5, r5
+# CHECK: encoding: [0x6c,0x56,0x51,0x00]
+
+    e_ors_ne r7, r7, r7
+# CHECK: encoding: [0x8c,0xde,0x71,0x00]
+
+    e_ors r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x10,0x00]
+
+    e_ors_az r0, r0, r0
+# CHECK: encoding: [0xac,0x02,0x00,0x00]
+
+    e_ors_zb r2, r2, r2
+# CHECK: encoding: [0xcc,0x8a,0x20,0x00]
+
+    e_ors_ca r5, r5, r5
+# CHECK: encoding: [0xec,0x56,0x51,0x00]
+
+    e_ors_nc r7, r7, r7
+# CHECK: encoding: [0x0c,0xdf,0x71,0x00]
+
+    e_ors_cz r1, r1, r1
+# CHECK: encoding: [0x2c,0x47,0x10,0x00]
+
+    e_ors_spo r0, r0, r0
+# CHECK: encoding: [0x4c,0x03,0x00,0x00]
+
+    e_ors_sne r2, r2, r2
+# CHECK: encoding: [0x6c,0x8b,0x20,0x00]
+
+    e_ors_nbs r5, r5, r5
+# CHECK: encoding: [0x8c,0x57,0x51,0x00]
+
+    e_ors_nex r7, r7, r7
+# CHECK: encoding: [0xac,0xdf,0x71,0x00]
+
+    e_ors_bs r1, r1, r1
+# CHECK: encoding: [0xcc,0x47,0x10,0x00]
+
+    e_ors_ex r0, r0, r0
+# CHECK: encoding: [0xec,0x03,0x00,0x00]
+
+    e_orn r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x08,0x00]
+
+    e_orn r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x28,0x00]
+
+    e_orn r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x59,0x00]
+
+    e_orn r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x79,0x00]
+
+    e_orn r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x18,0x00]
+
+    e_orn r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x08,0x00]
+
+    e_orn r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x28,0x00]
+
+    e_orn r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x59,0x00]
+
+    e_orn r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x79,0x00]
+
+    e_orn r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x18,0x00]
+
+    e_orn r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x08,0x00]
+
+    e_orn r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x28,0x00]
+
+    e_orn r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x59,0x00]
+
+    e_orn r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x79,0x00]
+
+    e_orn r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x18,0x00]
+
+    e_orn r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x08,0x00]
+
+    e_orns r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x08,0x00]
+
+    e_orns r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x28,0x00]
+
+    e_orns r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x59,0x00]
+
+    e_orns r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x79,0x00]
+
+    e_orns r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x18,0x00]
+
+    e_orns r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x08,0x00]
+
+    e_orns r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x28,0x00]
+
+    e_orns r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x59,0x00]
+
+    e_orns r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x79,0x00]
+
+    e_orns r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x18,0x00]
+
+    e_orns r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x08,0x00]
+
+    e_orns r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x28,0x00]
+
+    e_orns r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x59,0x00]
+
+    e_orns r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x79,0x00]
+
+    e_orns r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x18,0x00]
+
+    e_orns r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x08,0x00]
+
+    e_orn_ze r0, r0, r0
+# CHECK: encoding: [0x2c,0x00,0x08,0x00]
+
+    e_orn_nz r2, r2, r2
+# CHECK: encoding: [0x4c,0x88,0x28,0x00]
+
+    e_orn_po r5, r5, r5
+# CHECK: encoding: [0x6c,0x54,0x59,0x00]
+
+    e_orn_ne r7, r7, r7
+# CHECK: encoding: [0x8c,0xdc,0x79,0x00]
+
+    e_orn r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x18,0x00]
+
+    e_orn_az r0, r0, r0
+# CHECK: encoding: [0xac,0x00,0x08,0x00]
+
+    e_orn_zb r2, r2, r2
+# CHECK: encoding: [0xcc,0x88,0x28,0x00]
+
+    e_orn_ca r5, r5, r5
+# CHECK: encoding: [0xec,0x54,0x59,0x00]
+
+    e_orn_nc r7, r7, r7
+# CHECK: encoding: [0x0c,0xdd,0x79,0x00]
+
+    e_orn_cz r1, r1, r1
+# CHECK: encoding: [0x2c,0x45,0x18,0x00]
+
+    e_orn_spo r0, r0, r0
+# CHECK: encoding: [0x4c,0x01,0x08,0x00]
+
+    e_orn_sne r2, r2, r2
+# CHECK: encoding: [0x6c,0x89,0x28,0x00]
+
+    e_orn_nbs r5, r5, r5
+# CHECK: encoding: [0x8c,0x55,0x59,0x00]
+
+    e_orn_nex r7, r7, r7
+# CHECK: encoding: [0xac,0xdd,0x79,0x00]
+
+    e_orn_bs r1, r1, r1
+# CHECK: encoding: [0xcc,0x45,0x18,0x00]
+
+    e_orn_ex r0, r0, r0
+# CHECK: encoding: [0xec,0x01,0x08,0x00]
+
+    e_orns_ze r0, r0, r0
+# CHECK: encoding: [0x2c,0x02,0x08,0x00]
+
+    e_orns_nz r2, r2, r2
+# CHECK: encoding: [0x4c,0x8a,0x28,0x00]
+
+    e_orns_po r5, r5, r5
+# CHECK: encoding: [0x6c,0x56,0x59,0x00]
+
+    e_orns_ne r7, r7, r7
+# CHECK: encoding: [0x8c,0xde,0x79,0x00]
+
+    e_orns r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x18,0x00]
+
+    e_orns_az r0, r0, r0
+# CHECK: encoding: [0xac,0x02,0x08,0x00]
+
+    e_orns_zb r2, r2, r2
+# CHECK: encoding: [0xcc,0x8a,0x28,0x00]
+
+    e_orns_ca r5, r5, r5
+# CHECK: encoding: [0xec,0x56,0x59,0x00]
+
+    e_orns_nc r7, r7, r7
+# CHECK: encoding: [0x0c,0xdf,0x79,0x00]
+
+    e_orns_cz r1, r1, r1
+# CHECK: encoding: [0x2c,0x47,0x18,0x00]
+
+    e_orns_spo r0, r0, r0
+# CHECK: encoding: [0x4c,0x03,0x08,0x00]
+
+    e_orns_sne r2, r2, r2
+# CHECK: encoding: [0x6c,0x8b,0x28,0x00]
+
+    e_orns_nbs r5, r5, r5
+# CHECK: encoding: [0x8c,0x57,0x59,0x00]
+
+    e_orns_nex r7, r7, r7
+# CHECK: encoding: [0xac,0xdf,0x79,0x00]
+
+    e_orns_bs r1, r1, r1
+# CHECK: encoding: [0xcc,0x47,0x18,0x00]
+
+    e_orns_ex r0, r0, r0
+# CHECK: encoding: [0xec,0x03,0x08,0x00]
+
+    e_or_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x00,0xf4,0x3f]
+
+    e_or_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x88,0x14,0xc0]
+
+    e_or_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x54,0xf5,0x1f]
+
+    e_or_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdc,0x15,0xe0]
+
+    e_or_imm r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x44,0x14,0x00]
+
+    e_or_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x00,0xf4,0x3f]
+
+    e_or_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x88,0x14,0xc0]
+
+    e_or_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x54,0xf5,0x1f]
+
+    e_or_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdc,0x15,0xe0]
+
+    e_or_imm r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x44,0x14,0x00]
+
+    e_or_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x00,0xf4,0x3f]
+
+    e_or_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x88,0x14,0xc0]
+
+    e_or_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x54,0xf5,0x1f]
+
+    e_or_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdc,0x15,0xe0]
+
+    e_or_imm r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x44,0x14,0x00]
+
+    e_or_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x00,0xf4,0x3f]
+
+    e_or_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x02,0xf4,0x3f]
+
+    e_or_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x8a,0x14,0xc0]
+
+    e_or_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x56,0xf5,0x1f]
+
+    e_or_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xde,0x15,0xe0]
+
+    e_or_imms r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x46,0x14,0x00]
+
+    e_or_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x02,0xf4,0x3f]
+
+    e_or_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x8a,0x14,0xc0]
+
+    e_or_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x56,0xf5,0x1f]
+
+    e_or_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xde,0x15,0xe0]
+
+    e_or_imms r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x46,0x14,0x00]
+
+    e_or_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x02,0xf4,0x3f]
+
+    e_or_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x8a,0x14,0xc0]
+
+    e_or_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x56,0xf5,0x1f]
+
+    e_or_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xde,0x15,0xe0]
+
+    e_or_imms r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x46,0x14,0x00]
+
+    e_or_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x02,0xf4,0x3f]
+
+    e_or_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2c,0x00,0xf4,0x3f]
+
+    e_or_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4c,0x88,0x14,0xc0]
+
+    e_or_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6c,0x54,0xf5,0x1f]
+
+    e_or_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8c,0xdc,0x15,0xe0]
+
+    e_or_imm r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x44,0x14,0x00]
+
+    e_or_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xac,0x00,0xf4,0x3f]
+
+    e_or_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xcc,0x88,0x14,0xc0]
+
+    e_or_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xec,0x54,0xf5,0x1f]
+
+    e_or_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdd,0x15,0xe0]
+
+    e_or_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x2c,0x45,0x14,0x00]
+
+    e_or_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4c,0x01,0xf4,0x3f]
+
+    e_or_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6c,0x89,0x14,0xc0]
+
+    e_or_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8c,0x55,0xf5,0x1f]
+
+    e_or_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xac,0xdd,0x15,0xe0]
+
+    e_or_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xcc,0x45,0x14,0x00]
+
+    e_or_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xec,0x01,0xf4,0x3f]
+
+    e_or_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2c,0x02,0xf4,0x3f]
+
+    e_or_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4c,0x8a,0x14,0xc0]
+
+    e_or_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6c,0x56,0xf5,0x1f]
+
+    e_or_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8c,0xde,0x15,0xe0]
+
+    e_or_imms r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x46,0x14,0x00]
+
+    e_or_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xac,0x02,0xf4,0x3f]
+
+    e_or_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xcc,0x8a,0x14,0xc0]
+
+    e_or_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xec,0x56,0xf5,0x1f]
+
+    e_or_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdf,0x15,0xe0]
+
+    e_or_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x2c,0x47,0x14,0x00]
+
+    e_or_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4c,0x03,0xf4,0x3f]
+
+    e_or_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6c,0x8b,0x14,0xc0]
+
+    e_or_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8c,0x57,0xf5,0x1f]
+
+    e_or_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xac,0xdf,0x15,0xe0]
+
+    e_or_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xcc,0x47,0x14,0x00]
+
+    e_or_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xec,0x03,0xf4,0x3f]
+
+    e_orn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x00,0xfc,0x3f]
+
+    e_orn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x88,0x1c,0xc0]
+
+    e_orn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x54,0xfd,0x1f]
+
+    e_orn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdc,0x1d,0xe0]
+
+    e_orn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x44,0x1c,0x00]
+
+    e_orn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x00,0xfc,0x3f]
+
+    e_orn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x88,0x1c,0xc0]
+
+    e_orn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x54,0xfd,0x1f]
+
+    e_orn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdc,0x1d,0xe0]
+
+    e_orn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x44,0x1c,0x00]
+
+    e_orn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x00,0xfc,0x3f]
+
+    e_orn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x88,0x1c,0xc0]
+
+    e_orn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x54,0xfd,0x1f]
+
+    e_orn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdc,0x1d,0xe0]
+
+    e_orn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x44,0x1c,0x00]
+
+    e_orn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x00,0xfc,0x3f]
+
+    e_orn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x02,0xfc,0x3f]
+
+    e_orn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x8a,0x1c,0xc0]
+
+    e_orn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x56,0xfd,0x1f]
+
+    e_orn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xde,0x1d,0xe0]
+
+    e_orn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x46,0x1c,0x00]
+
+    e_orn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x02,0xfc,0x3f]
+
+    e_orn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x8a,0x1c,0xc0]
+
+    e_orn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x56,0xfd,0x1f]
+
+    e_orn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xde,0x1d,0xe0]
+
+    e_orn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x46,0x1c,0x00]
+
+    e_orn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x02,0xfc,0x3f]
+
+    e_orn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0c,0x8a,0x1c,0xc0]
+
+    e_orn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0c,0x56,0xfd,0x1f]
+
+    e_orn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xde,0x1d,0xe0]
+
+    e_orn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x46,0x1c,0x00]
+
+    e_orn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0c,0x02,0xfc,0x3f]
+
+    e_orn_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2c,0x00,0xfc,0x3f]
+
+    e_orn_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4c,0x88,0x1c,0xc0]
+
+    e_orn_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6c,0x54,0xfd,0x1f]
+
+    e_orn_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8c,0xdc,0x1d,0xe0]
+
+    e_orn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x44,0x1c,0x00]
+
+    e_orn_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xac,0x00,0xfc,0x3f]
+
+    e_orn_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xcc,0x88,0x1c,0xc0]
+
+    e_orn_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xec,0x54,0xfd,0x1f]
+
+    e_orn_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdd,0x1d,0xe0]
+
+    e_orn_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x2c,0x45,0x1c,0x00]
+
+    e_orn_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4c,0x01,0xfc,0x3f]
+
+    e_orn_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6c,0x89,0x1c,0xc0]
+
+    e_orn_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8c,0x55,0xfd,0x1f]
+
+    e_orn_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xac,0xdd,0x1d,0xe0]
+
+    e_orn_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xcc,0x45,0x1c,0x00]
+
+    e_orn_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xec,0x01,0xfc,0x3f]
+
+    e_orn_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2c,0x02,0xfc,0x3f]
+
+    e_orn_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4c,0x8a,0x1c,0xc0]
+
+    e_orn_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6c,0x56,0xfd,0x1f]
+
+    e_orn_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8c,0xde,0x1d,0xe0]
+
+    e_orn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0c,0x46,0x1c,0x00]
+
+    e_orn_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xac,0x02,0xfc,0x3f]
+
+    e_orn_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xcc,0x8a,0x1c,0xc0]
+
+    e_orn_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xec,0x56,0xfd,0x1f]
+
+    e_orn_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0c,0xdf,0x1d,0xe0]
+
+    e_orn_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x2c,0x47,0x1c,0x00]
+
+    e_orn_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4c,0x03,0xfc,0x3f]
+
+    e_orn_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6c,0x8b,0x1c,0xc0]
+
+    e_orn_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8c,0x57,0xfd,0x1f]
+
+    e_orn_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xac,0xdf,0x1d,0xe0]
+
+    e_orn_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xcc,0x47,0x1c,0x00]
+
+    e_orn_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xec,0x03,0xfc,0x3f]
+
+    e_or_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x00]
+
+    e_or_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x05]
+
+    e_or_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x0f]
+
+    e_or_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x1f]
+
+    e_or_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x0a]
+
+    e_or_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x00]
+
+    e_or_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x05]
+
+    e_or_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x0f]
+
+    e_or_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x1f]
+
+    e_or_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x0a]
+
+    e_or_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x00]
+
+    e_or_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x05]
+
+    e_or_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x0f]
+
+    e_or_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x1f]
+
+    e_or_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x0a]
+
+    e_or_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x00]
+
+    e_or_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x00]
+
+    e_or_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x05]
+
+    e_or_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x0f]
+
+    e_or_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x1f]
+
+    e_or_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x0a]
+
+    e_or_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x00]
+
+    e_or_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x05]
+
+    e_or_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x0f]
+
+    e_or_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x1f]
+
+    e_or_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x0a]
+
+    e_or_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x00]
+
+    e_or_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x05]
+
+    e_or_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x0f]
+
+    e_or_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x1f]
+
+    e_or_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x0a]
+
+    e_or_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x00]
+
+    e_or_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x00,0x00]
+
+    e_or_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x20,0x05]
+
+    e_or_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x51,0x0f]
+
+    e_or_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x71,0x1f]
+
+    e_or_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x0a]
+
+    e_or_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x00,0x00]
+
+    e_or_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x20,0x05]
+
+    e_or_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x51,0x0f]
+
+    e_or_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x71,0x1f]
+
+    e_or_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x10,0x0a]
+
+    e_or_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x00,0x00]
+
+    e_or_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x20,0x05]
+
+    e_or_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x51,0x0f]
+
+    e_or_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x71,0x1f]
+
+    e_or_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x10,0x0a]
+
+    e_or_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x00,0x00]
+
+    e_or_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x00,0x00]
+
+    e_or_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x20,0x05]
+
+    e_or_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x51,0x0f]
+
+    e_or_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x71,0x1f]
+
+    e_or_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x0a]
+
+    e_or_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x00,0x00]
+
+    e_or_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x20,0x05]
+
+    e_or_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x51,0x0f]
+
+    e_or_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x71,0x1f]
+
+    e_or_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x10,0x0a]
+
+    e_or_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x00,0x00]
+
+    e_or_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x20,0x05]
+
+    e_or_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x51,0x0f]
+
+    e_or_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x71,0x1f]
+
+    e_or_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x10,0x0a]
+
+    e_or_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x00,0x00]
+
+    e_orn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x00]
+
+    e_orn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x05]
+
+    e_orn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x0f]
+
+    e_orn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x1f]
+
+    e_orn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x0a]
+
+    e_orn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x00]
+
+    e_orn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x05]
+
+    e_orn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x0f]
+
+    e_orn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x1f]
+
+    e_orn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x0a]
+
+    e_orn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x00]
+
+    e_orn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x05]
+
+    e_orn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x0f]
+
+    e_orn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x1f]
+
+    e_orn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x0a]
+
+    e_orn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x00]
+
+    e_orn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x00]
+
+    e_orn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x05]
+
+    e_orn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x0f]
+
+    e_orn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x1f]
+
+    e_orn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x0a]
+
+    e_orn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x00]
+
+    e_orn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x05]
+
+    e_orn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x0f]
+
+    e_orn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x1f]
+
+    e_orn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x0a]
+
+    e_orn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x00]
+
+    e_orn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x05]
+
+    e_orn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x0f]
+
+    e_orn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x1f]
+
+    e_orn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x0a]
+
+    e_orn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x00]
+
+    e_orn_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x08,0x00]
+
+    e_orn_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x28,0x05]
+
+    e_orn_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x59,0x0f]
+
+    e_orn_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x79,0x1f]
+
+    e_orn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x0a]
+
+    e_orn_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x08,0x00]
+
+    e_orn_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x28,0x05]
+
+    e_orn_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x59,0x0f]
+
+    e_orn_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x79,0x1f]
+
+    e_orn_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x18,0x0a]
+
+    e_orn_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x08,0x00]
+
+    e_orn_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x28,0x05]
+
+    e_orn_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x59,0x0f]
+
+    e_orn_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x79,0x1f]
+
+    e_orn_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x18,0x0a]
+
+    e_orn_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x08,0x00]
+
+    e_orn_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x08,0x00]
+
+    e_orn_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x28,0x05]
+
+    e_orn_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x59,0x0f]
+
+    e_orn_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x79,0x1f]
+
+    e_orn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x0a]
+
+    e_orn_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x08,0x00]
+
+    e_orn_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x28,0x05]
+
+    e_orn_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x59,0x0f]
+
+    e_orn_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x79,0x1f]
+
+    e_orn_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x18,0x0a]
+
+    e_orn_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x08,0x00]
+
+    e_orn_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x28,0x05]
+
+    e_orn_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x59,0x0f]
+
+    e_orn_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x79,0x1f]
+
+    e_orn_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x18,0x0a]
+
+    e_orn_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x08,0x00]
+
+    e_or_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x40]
+
+    e_or_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x45]
+
+    e_or_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x4f]
+
+    e_or_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x5f]
+
+    e_or_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x4a]
+
+    e_or_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x40]
+
+    e_or_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x45]
+
+    e_or_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x4f]
+
+    e_or_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x5f]
+
+    e_or_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x4a]
+
+    e_or_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x40]
+
+    e_or_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x45]
+
+    e_or_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x4f]
+
+    e_or_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x5f]
+
+    e_or_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x4a]
+
+    e_or_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x40]
+
+    e_or_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x40]
+
+    e_or_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x45]
+
+    e_or_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x4f]
+
+    e_or_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x5f]
+
+    e_or_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x4a]
+
+    e_or_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x40]
+
+    e_or_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x45]
+
+    e_or_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x4f]
+
+    e_or_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x5f]
+
+    e_or_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x4a]
+
+    e_or_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x40]
+
+    e_or_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x45]
+
+    e_or_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x4f]
+
+    e_or_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x5f]
+
+    e_or_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x4a]
+
+    e_or_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x40]
+
+    e_or_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x00,0x40]
+
+    e_or_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x20,0x45]
+
+    e_or_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x51,0x4f]
+
+    e_or_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x71,0x5f]
+
+    e_or_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x4a]
+
+    e_or_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x00,0x40]
+
+    e_or_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x20,0x45]
+
+    e_or_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x51,0x4f]
+
+    e_or_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x71,0x5f]
+
+    e_or_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x10,0x4a]
+
+    e_or_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x00,0x40]
+
+    e_or_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x20,0x45]
+
+    e_or_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x51,0x4f]
+
+    e_or_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x71,0x5f]
+
+    e_or_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x10,0x4a]
+
+    e_or_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x00,0x40]
+
+    e_or_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x00,0x40]
+
+    e_or_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x20,0x45]
+
+    e_or_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x51,0x4f]
+
+    e_or_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x71,0x5f]
+
+    e_or_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x4a]
+
+    e_or_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x00,0x40]
+
+    e_or_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x20,0x45]
+
+    e_or_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x51,0x4f]
+
+    e_or_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x71,0x5f]
+
+    e_or_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x10,0x4a]
+
+    e_or_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x00,0x40]
+
+    e_or_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x20,0x45]
+
+    e_or_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x51,0x4f]
+
+    e_or_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x71,0x5f]
+
+    e_or_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x10,0x4a]
+
+    e_or_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x00,0x40]
+
+    e_orn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x40]
+
+    e_orn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x45]
+
+    e_orn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x4f]
+
+    e_orn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x5f]
+
+    e_orn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x4a]
+
+    e_orn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x40]
+
+    e_orn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x45]
+
+    e_orn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x4f]
+
+    e_orn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x5f]
+
+    e_orn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x4a]
+
+    e_orn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x40]
+
+    e_orn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x45]
+
+    e_orn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x4f]
+
+    e_orn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x5f]
+
+    e_orn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x4a]
+
+    e_orn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x40]
+
+    e_orn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x40]
+
+    e_orn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x45]
+
+    e_orn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x4f]
+
+    e_orn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x5f]
+
+    e_orn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x4a]
+
+    e_orn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x40]
+
+    e_orn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x45]
+
+    e_orn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x4f]
+
+    e_orn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x5f]
+
+    e_orn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x4a]
+
+    e_orn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x40]
+
+    e_orn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x45]
+
+    e_orn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x4f]
+
+    e_orn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x5f]
+
+    e_orn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x4a]
+
+    e_orn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x40]
+
+    e_orn_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x08,0x40]
+
+    e_orn_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x28,0x45]
+
+    e_orn_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x59,0x4f]
+
+    e_orn_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x79,0x5f]
+
+    e_orn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x4a]
+
+    e_orn_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x08,0x40]
+
+    e_orn_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x28,0x45]
+
+    e_orn_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x59,0x4f]
+
+    e_orn_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x79,0x5f]
+
+    e_orn_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x18,0x4a]
+
+    e_orn_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x08,0x40]
+
+    e_orn_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x28,0x45]
+
+    e_orn_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x59,0x4f]
+
+    e_orn_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x79,0x5f]
+
+    e_orn_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x18,0x4a]
+
+    e_orn_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x08,0x40]
+
+    e_orn_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x08,0x40]
+
+    e_orn_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x28,0x45]
+
+    e_orn_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x59,0x4f]
+
+    e_orn_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x79,0x5f]
+
+    e_orn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x4a]
+
+    e_orn_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x08,0x40]
+
+    e_orn_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x28,0x45]
+
+    e_orn_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x59,0x4f]
+
+    e_orn_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x79,0x5f]
+
+    e_orn_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x18,0x4a]
+
+    e_orn_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x08,0x40]
+
+    e_orn_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x28,0x45]
+
+    e_orn_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x59,0x4f]
+
+    e_orn_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x79,0x5f]
+
+    e_orn_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x18,0x4a]
+
+    e_orn_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x08,0x40]
+
+    e_or_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x20]
+
+    e_or_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x25]
+
+    e_or_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x2f]
+
+    e_or_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x3f]
+
+    e_or_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x2a]
+
+    e_or_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x20]
+
+    e_or_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x25]
+
+    e_or_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x2f]
+
+    e_or_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x3f]
+
+    e_or_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x2a]
+
+    e_or_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x20]
+
+    e_or_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x25]
+
+    e_or_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x2f]
+
+    e_or_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x3f]
+
+    e_or_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x2a]
+
+    e_or_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x20]
+
+    e_or_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x20]
+
+    e_or_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x25]
+
+    e_or_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x2f]
+
+    e_or_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x3f]
+
+    e_or_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x2a]
+
+    e_or_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x20]
+
+    e_or_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x25]
+
+    e_or_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x2f]
+
+    e_or_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x3f]
+
+    e_or_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x2a]
+
+    e_or_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x20]
+
+    e_or_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x25]
+
+    e_or_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x2f]
+
+    e_or_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x3f]
+
+    e_or_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x2a]
+
+    e_or_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x20]
+
+    e_or_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x00,0x20]
+
+    e_or_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x20,0x25]
+
+    e_or_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x51,0x2f]
+
+    e_or_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x71,0x3f]
+
+    e_or_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x2a]
+
+    e_or_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x00,0x20]
+
+    e_or_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x20,0x25]
+
+    e_or_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x51,0x2f]
+
+    e_or_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x71,0x3f]
+
+    e_or_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x10,0x2a]
+
+    e_or_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x00,0x20]
+
+    e_or_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x20,0x25]
+
+    e_or_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x51,0x2f]
+
+    e_or_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x71,0x3f]
+
+    e_or_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x10,0x2a]
+
+    e_or_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x00,0x20]
+
+    e_or_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x00,0x20]
+
+    e_or_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x20,0x25]
+
+    e_or_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x51,0x2f]
+
+    e_or_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x71,0x3f]
+
+    e_or_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x2a]
+
+    e_or_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x00,0x20]
+
+    e_or_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x20,0x25]
+
+    e_or_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x51,0x2f]
+
+    e_or_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x71,0x3f]
+
+    e_or_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x10,0x2a]
+
+    e_or_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x00,0x20]
+
+    e_or_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x20,0x25]
+
+    e_or_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x51,0x2f]
+
+    e_or_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x71,0x3f]
+
+    e_or_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x10,0x2a]
+
+    e_or_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x00,0x20]
+
+    e_orn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x20]
+
+    e_orn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x25]
+
+    e_orn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x2f]
+
+    e_orn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x3f]
+
+    e_orn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x2a]
+
+    e_orn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x20]
+
+    e_orn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x25]
+
+    e_orn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x2f]
+
+    e_orn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x3f]
+
+    e_orn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x2a]
+
+    e_orn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x20]
+
+    e_orn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x25]
+
+    e_orn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x2f]
+
+    e_orn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x3f]
+
+    e_orn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x2a]
+
+    e_orn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x20]
+
+    e_orn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x20]
+
+    e_orn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x25]
+
+    e_orn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x2f]
+
+    e_orn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x3f]
+
+    e_orn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x2a]
+
+    e_orn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x20]
+
+    e_orn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x25]
+
+    e_orn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x2f]
+
+    e_orn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x3f]
+
+    e_orn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x2a]
+
+    e_orn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x20]
+
+    e_orn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x25]
+
+    e_orn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x2f]
+
+    e_orn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x3f]
+
+    e_orn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x2a]
+
+    e_orn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x20]
+
+    e_orn_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x08,0x20]
+
+    e_orn_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x28,0x25]
+
+    e_orn_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x59,0x2f]
+
+    e_orn_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x79,0x3f]
+
+    e_orn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x2a]
+
+    e_orn_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x08,0x20]
+
+    e_orn_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x28,0x25]
+
+    e_orn_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x59,0x2f]
+
+    e_orn_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x79,0x3f]
+
+    e_orn_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x18,0x2a]
+
+    e_orn_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x08,0x20]
+
+    e_orn_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x28,0x25]
+
+    e_orn_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x59,0x2f]
+
+    e_orn_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x79,0x3f]
+
+    e_orn_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x18,0x2a]
+
+    e_orn_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x08,0x20]
+
+    e_orn_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x08,0x20]
+
+    e_orn_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x28,0x25]
+
+    e_orn_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x59,0x2f]
+
+    e_orn_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x79,0x3f]
+
+    e_orn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x2a]
+
+    e_orn_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x08,0x20]
+
+    e_orn_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x28,0x25]
+
+    e_orn_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x59,0x2f]
+
+    e_orn_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x79,0x3f]
+
+    e_orn_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x18,0x2a]
+
+    e_orn_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x08,0x20]
+
+    e_orn_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x28,0x25]
+
+    e_orn_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x59,0x2f]
+
+    e_orn_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x79,0x3f]
+
+    e_orn_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x18,0x2a]
+
+    e_orn_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x08,0x20]
+
+    e_or_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x60]
+
+    e_or_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x65]
+
+    e_or_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x6f]
+
+    e_or_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x7f]
+
+    e_or_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x6a]
+
+    e_or_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x60]
+
+    e_or_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x65]
+
+    e_or_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x6f]
+
+    e_or_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x7f]
+
+    e_or_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x6a]
+
+    e_or_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x60]
+
+    e_or_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x65]
+
+    e_or_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x6f]
+
+    e_or_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x7f]
+
+    e_or_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x6a]
+
+    e_or_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x60]
+
+    e_or_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x60]
+
+    e_or_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x65]
+
+    e_or_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x6f]
+
+    e_or_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x7f]
+
+    e_or_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x6a]
+
+    e_or_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x60]
+
+    e_or_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x65]
+
+    e_or_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x6f]
+
+    e_or_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x7f]
+
+    e_or_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x6a]
+
+    e_or_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x60]
+
+    e_or_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x65]
+
+    e_or_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x6f]
+
+    e_or_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x7f]
+
+    e_or_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x6a]
+
+    e_or_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x60]
+
+    e_or_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x00,0x60]
+
+    e_or_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x20,0x65]
+
+    e_or_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x51,0x6f]
+
+    e_or_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x71,0x7f]
+
+    e_or_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x6a]
+
+    e_or_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x00,0x60]
+
+    e_or_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x20,0x65]
+
+    e_or_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x51,0x6f]
+
+    e_or_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x71,0x7f]
+
+    e_or_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x10,0x6a]
+
+    e_or_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x00,0x60]
+
+    e_or_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x20,0x65]
+
+    e_or_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x51,0x6f]
+
+    e_or_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x71,0x7f]
+
+    e_or_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x10,0x6a]
+
+    e_or_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x00,0x60]
+
+    e_or_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x00,0x60]
+
+    e_or_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x20,0x65]
+
+    e_or_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x51,0x6f]
+
+    e_or_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x71,0x7f]
+
+    e_or_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x6a]
+
+    e_or_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x00,0x60]
+
+    e_or_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x20,0x65]
+
+    e_or_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x51,0x6f]
+
+    e_or_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x71,0x7f]
+
+    e_or_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x10,0x6a]
+
+    e_or_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x00,0x60]
+
+    e_or_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x20,0x65]
+
+    e_or_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x51,0x6f]
+
+    e_or_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x71,0x7f]
+
+    e_or_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x10,0x6a]
+
+    e_or_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x00,0x60]
+
+    e_orn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x60]
+
+    e_orn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x65]
+
+    e_orn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x6f]
+
+    e_orn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x7f]
+
+    e_orn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x6a]
+
+    e_orn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x60]
+
+    e_orn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x65]
+
+    e_orn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x6f]
+
+    e_orn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x7f]
+
+    e_orn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x6a]
+
+    e_orn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x60]
+
+    e_orn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x65]
+
+    e_orn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x6f]
+
+    e_orn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x7f]
+
+    e_orn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x6a]
+
+    e_orn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x60]
+
+    e_orn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x60]
+
+    e_orn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x65]
+
+    e_orn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x6f]
+
+    e_orn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x7f]
+
+    e_orn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x6a]
+
+    e_orn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x60]
+
+    e_orn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x65]
+
+    e_orn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x6f]
+
+    e_orn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x7f]
+
+    e_orn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x6a]
+
+    e_orn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x60]
+
+    e_orn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x65]
+
+    e_orn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x6f]
+
+    e_orn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x7f]
+
+    e_orn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x6a]
+
+    e_orn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x60]
+
+    e_orn_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x08,0x60]
+
+    e_orn_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x28,0x65]
+
+    e_orn_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x59,0x6f]
+
+    e_orn_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x79,0x7f]
+
+    e_orn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x6a]
+
+    e_orn_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x08,0x60]
+
+    e_orn_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x28,0x65]
+
+    e_orn_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x59,0x6f]
+
+    e_orn_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x79,0x7f]
+
+    e_orn_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x18,0x6a]
+
+    e_orn_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x08,0x60]
+
+    e_orn_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x28,0x65]
+
+    e_orn_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x59,0x6f]
+
+    e_orn_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x79,0x7f]
+
+    e_orn_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x18,0x6a]
+
+    e_orn_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x08,0x60]
+
+    e_orn_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x08,0x60]
+
+    e_orn_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x28,0x65]
+
+    e_orn_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x59,0x6f]
+
+    e_orn_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x79,0x7f]
+
+    e_orn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x6a]
+
+    e_orn_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x08,0x60]
+
+    e_orn_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x28,0x65]
+
+    e_orn_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x59,0x6f]
+
+    e_orn_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x79,0x7f]
+
+    e_orn_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x18,0x6a]
+
+    e_orn_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x08,0x60]
+
+    e_orn_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x28,0x65]
+
+    e_orn_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x59,0x6f]
+
+    e_orn_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x79,0x7f]
+
+    e_orn_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x18,0x6a]
+
+    e_orn_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x08,0x60]
+
+    e_or_f r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x00,0x80]
+
+    e_or_f r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x20,0x80]
+
+    e_or_f r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x51,0x80]
+
+    e_or_f r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x71,0x80]
+
+    e_or_f r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x10,0x80]
+
+    e_or_f r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x00,0x80]
+
+    e_or_f r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x20,0x80]
+
+    e_or_f r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x51,0x80]
+
+    e_or_f r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x71,0x80]
+
+    e_or_f r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x10,0x80]
+
+    e_or_f r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x00,0x80]
+
+    e_or_f r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x20,0x80]
+
+    e_or_f r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x51,0x80]
+
+    e_or_f r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x71,0x80]
+
+    e_or_f r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x10,0x80]
+
+    e_or_f r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x00,0x80]
+
+    e_or_fs r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x00,0x80]
+
+    e_or_fs r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x20,0x80]
+
+    e_or_fs r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x51,0x80]
+
+    e_or_fs r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x71,0x80]
+
+    e_or_fs r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x10,0x80]
+
+    e_or_fs r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x00,0x80]
+
+    e_or_fs r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x20,0x80]
+
+    e_or_fs r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x51,0x80]
+
+    e_or_fs r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x71,0x80]
+
+    e_or_fs r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x10,0x80]
+
+    e_or_fs r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x00,0x80]
+
+    e_or_fs r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x20,0x80]
+
+    e_or_fs r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x51,0x80]
+
+    e_or_fs r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x71,0x80]
+
+    e_or_fs r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x10,0x80]
+
+    e_or_fs r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x00,0x80]
+
+    e_or_f_ze r0, r0, r0
+# CHECK: encoding: [0x2c,0x00,0x00,0x80]
+
+    e_or_f_nz r2, r2, r2
+# CHECK: encoding: [0x4c,0x88,0x20,0x80]
+
+    e_or_f_po r5, r5, r5
+# CHECK: encoding: [0x6c,0x54,0x51,0x80]
+
+    e_or_f_ne r7, r7, r7
+# CHECK: encoding: [0x8c,0xdc,0x71,0x80]
+
+    e_or_f r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x10,0x80]
+
+    e_or_f_az r0, r0, r0
+# CHECK: encoding: [0xac,0x00,0x00,0x80]
+
+    e_or_f_zb r2, r2, r2
+# CHECK: encoding: [0xcc,0x88,0x20,0x80]
+
+    e_or_f_ca r5, r5, r5
+# CHECK: encoding: [0xec,0x54,0x51,0x80]
+
+    e_or_f_nc r7, r7, r7
+# CHECK: encoding: [0x0c,0xdd,0x71,0x80]
+
+    e_or_f_cz r1, r1, r1
+# CHECK: encoding: [0x2c,0x45,0x10,0x80]
+
+    e_or_f_spo r0, r0, r0
+# CHECK: encoding: [0x4c,0x01,0x00,0x80]
+
+    e_or_f_sne r2, r2, r2
+# CHECK: encoding: [0x6c,0x89,0x20,0x80]
+
+    e_or_f_nbs r5, r5, r5
+# CHECK: encoding: [0x8c,0x55,0x51,0x80]
+
+    e_or_f_nex r7, r7, r7
+# CHECK: encoding: [0xac,0xdd,0x71,0x80]
+
+    e_or_f_bs r1, r1, r1
+# CHECK: encoding: [0xcc,0x45,0x10,0x80]
+
+    e_or_f_ex r0, r0, r0
+# CHECK: encoding: [0xec,0x01,0x00,0x80]
+
+    e_or_fs_ze r0, r0, r0
+# CHECK: encoding: [0x2c,0x02,0x00,0x80]
+
+    e_or_fs_nz r2, r2, r2
+# CHECK: encoding: [0x4c,0x8a,0x20,0x80]
+
+    e_or_fs_po r5, r5, r5
+# CHECK: encoding: [0x6c,0x56,0x51,0x80]
+
+    e_or_fs_ne r7, r7, r7
+# CHECK: encoding: [0x8c,0xde,0x71,0x80]
+
+    e_or_fs r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x10,0x80]
+
+    e_or_fs_az r0, r0, r0
+# CHECK: encoding: [0xac,0x02,0x00,0x80]
+
+    e_or_fs_zb r2, r2, r2
+# CHECK: encoding: [0xcc,0x8a,0x20,0x80]
+
+    e_or_fs_ca r5, r5, r5
+# CHECK: encoding: [0xec,0x56,0x51,0x80]
+
+    e_or_fs_nc r7, r7, r7
+# CHECK: encoding: [0x0c,0xdf,0x71,0x80]
+
+    e_or_fs_cz r1, r1, r1
+# CHECK: encoding: [0x2c,0x47,0x10,0x80]
+
+    e_or_fs_spo r0, r0, r0
+# CHECK: encoding: [0x4c,0x03,0x00,0x80]
+
+    e_or_fs_sne r2, r2, r2
+# CHECK: encoding: [0x6c,0x8b,0x20,0x80]
+
+    e_or_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x8c,0x57,0x51,0x80]
+
+    e_or_fs_nex r7, r7, r7
+# CHECK: encoding: [0xac,0xdf,0x71,0x80]
+
+    e_or_fs_bs r1, r1, r1
+# CHECK: encoding: [0xcc,0x47,0x10,0x80]
+
+    e_or_fs_ex r0, r0, r0
+# CHECK: encoding: [0xec,0x03,0x00,0x80]
+
+    e_orn_f r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x08,0x80]
+
+    e_orn_f r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x28,0x80]
+
+    e_orn_f r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x59,0x80]
+
+    e_orn_f r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x79,0x80]
+
+    e_orn_f r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x18,0x80]
+
+    e_orn_f r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x08,0x80]
+
+    e_orn_f r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x28,0x80]
+
+    e_orn_f r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x59,0x80]
+
+    e_orn_f r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x79,0x80]
+
+    e_orn_f r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x18,0x80]
+
+    e_orn_f r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x08,0x80]
+
+    e_orn_f r2, r2, r2
+# CHECK: encoding: [0x0c,0x88,0x28,0x80]
+
+    e_orn_f r5, r5, r5
+# CHECK: encoding: [0x0c,0x54,0x59,0x80]
+
+    e_orn_f r7, r7, r7
+# CHECK: encoding: [0x0c,0xdc,0x79,0x80]
+
+    e_orn_f r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x18,0x80]
+
+    e_orn_f r0, r0, r0
+# CHECK: encoding: [0x0c,0x00,0x08,0x80]
+
+    e_orn_fs r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x08,0x80]
+
+    e_orn_fs r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x28,0x80]
+
+    e_orn_fs r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x59,0x80]
+
+    e_orn_fs r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x79,0x80]
+
+    e_orn_fs r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x18,0x80]
+
+    e_orn_fs r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x08,0x80]
+
+    e_orn_fs r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x28,0x80]
+
+    e_orn_fs r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x59,0x80]
+
+    e_orn_fs r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x79,0x80]
+
+    e_orn_fs r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x18,0x80]
+
+    e_orn_fs r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x08,0x80]
+
+    e_orn_fs r2, r2, r2
+# CHECK: encoding: [0x0c,0x8a,0x28,0x80]
+
+    e_orn_fs r5, r5, r5
+# CHECK: encoding: [0x0c,0x56,0x59,0x80]
+
+    e_orn_fs r7, r7, r7
+# CHECK: encoding: [0x0c,0xde,0x79,0x80]
+
+    e_orn_fs r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x18,0x80]
+
+    e_orn_fs r0, r0, r0
+# CHECK: encoding: [0x0c,0x02,0x08,0x80]
+
+    e_orn_f_ze r0, r0, r0
+# CHECK: encoding: [0x2c,0x00,0x08,0x80]
+
+    e_orn_f_nz r2, r2, r2
+# CHECK: encoding: [0x4c,0x88,0x28,0x80]
+
+    e_orn_f_po r5, r5, r5
+# CHECK: encoding: [0x6c,0x54,0x59,0x80]
+
+    e_orn_f_ne r7, r7, r7
+# CHECK: encoding: [0x8c,0xdc,0x79,0x80]
+
+    e_orn_f r1, r1, r1
+# CHECK: encoding: [0x0c,0x44,0x18,0x80]
+
+    e_orn_f_az r0, r0, r0
+# CHECK: encoding: [0xac,0x00,0x08,0x80]
+
+    e_orn_f_zb r2, r2, r2
+# CHECK: encoding: [0xcc,0x88,0x28,0x80]
+
+    e_orn_f_ca r5, r5, r5
+# CHECK: encoding: [0xec,0x54,0x59,0x80]
+
+    e_orn_f_nc r7, r7, r7
+# CHECK: encoding: [0x0c,0xdd,0x79,0x80]
+
+    e_orn_f_cz r1, r1, r1
+# CHECK: encoding: [0x2c,0x45,0x18,0x80]
+
+    e_orn_f_spo r0, r0, r0
+# CHECK: encoding: [0x4c,0x01,0x08,0x80]
+
+    e_orn_f_sne r2, r2, r2
+# CHECK: encoding: [0x6c,0x89,0x28,0x80]
+
+    e_orn_f_nbs r5, r5, r5
+# CHECK: encoding: [0x8c,0x55,0x59,0x80]
+
+    e_orn_f_nex r7, r7, r7
+# CHECK: encoding: [0xac,0xdd,0x79,0x80]
+
+    e_orn_f_bs r1, r1, r1
+# CHECK: encoding: [0xcc,0x45,0x18,0x80]
+
+    e_orn_f_ex r0, r0, r0
+# CHECK: encoding: [0xec,0x01,0x08,0x80]
+
+    e_orn_fs_ze r0, r0, r0
+# CHECK: encoding: [0x2c,0x02,0x08,0x80]
+
+    e_orn_fs_nz r2, r2, r2
+# CHECK: encoding: [0x4c,0x8a,0x28,0x80]
+
+    e_orn_fs_po r5, r5, r5
+# CHECK: encoding: [0x6c,0x56,0x59,0x80]
+
+    e_orn_fs_ne r7, r7, r7
+# CHECK: encoding: [0x8c,0xde,0x79,0x80]
+
+    e_orn_fs r1, r1, r1
+# CHECK: encoding: [0x0c,0x46,0x18,0x80]
+
+    e_orn_fs_az r0, r0, r0
+# CHECK: encoding: [0xac,0x02,0x08,0x80]
+
+    e_orn_fs_zb r2, r2, r2
+# CHECK: encoding: [0xcc,0x8a,0x28,0x80]
+
+    e_orn_fs_ca r5, r5, r5
+# CHECK: encoding: [0xec,0x56,0x59,0x80]
+
+    e_orn_fs_nc r7, r7, r7
+# CHECK: encoding: [0x0c,0xdf,0x79,0x80]
+
+    e_orn_fs_cz r1, r1, r1
+# CHECK: encoding: [0x2c,0x47,0x18,0x80]
+
+    e_orn_fs_spo r0, r0, r0
+# CHECK: encoding: [0x4c,0x03,0x08,0x80]
+
+    e_orn_fs_sne r2, r2, r2
+# CHECK: encoding: [0x6c,0x8b,0x28,0x80]
+
+    e_orn_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x8c,0x57,0x59,0x80]
+
+    e_orn_fs_nex r7, r7, r7
+# CHECK: encoding: [0xac,0xdf,0x79,0x80]
+
+    e_orn_fs_bs r1, r1, r1
+# CHECK: encoding: [0xcc,0x47,0x18,0x80]
+
+    e_orn_fs_ex r0, r0, r0
+# CHECK: encoding: [0xec,0x03,0x08,0x80]
+
+    e_or_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x80]
+
+    e_or_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x85]
+
+    e_or_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x8f]
+
+    e_or_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x9f]
+
+    e_or_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x8a]
+
+    e_or_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x80]
+
+    e_or_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x85]
+
+    e_or_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x8f]
+
+    e_or_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x9f]
+
+    e_or_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x8a]
+
+    e_or_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x80]
+
+    e_or_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0x85]
+
+    e_or_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0x8f]
+
+    e_or_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0x9f]
+
+    e_or_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x8a]
+
+    e_or_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0x80]
+
+    e_or_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x80]
+
+    e_or_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x85]
+
+    e_or_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x8f]
+
+    e_or_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x9f]
+
+    e_or_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x8a]
+
+    e_or_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x80]
+
+    e_or_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x85]
+
+    e_or_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x8f]
+
+    e_or_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x9f]
+
+    e_or_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x8a]
+
+    e_or_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x80]
+
+    e_or_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0x85]
+
+    e_or_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0x8f]
+
+    e_or_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0x9f]
+
+    e_or_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x8a]
+
+    e_or_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0x80]
+
+    e_or_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x00,0x80]
+
+    e_or_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x20,0x85]
+
+    e_or_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x51,0x8f]
+
+    e_or_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x71,0x9f]
+
+    e_or_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0x8a]
+
+    e_or_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x00,0x80]
+
+    e_or_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x20,0x85]
+
+    e_or_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x51,0x8f]
+
+    e_or_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x71,0x9f]
+
+    e_or_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x10,0x8a]
+
+    e_or_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x00,0x80]
+
+    e_or_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x20,0x85]
+
+    e_or_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x51,0x8f]
+
+    e_or_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x71,0x9f]
+
+    e_or_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x10,0x8a]
+
+    e_or_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x00,0x80]
+
+    e_or_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x00,0x80]
+
+    e_or_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x20,0x85]
+
+    e_or_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x51,0x8f]
+
+    e_or_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x71,0x9f]
+
+    e_or_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0x8a]
+
+    e_or_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x00,0x80]
+
+    e_or_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x20,0x85]
+
+    e_or_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x51,0x8f]
+
+    e_or_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x71,0x9f]
+
+    e_or_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x10,0x8a]
+
+    e_or_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x00,0x80]
+
+    e_or_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x20,0x85]
+
+    e_or_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x51,0x8f]
+
+    e_or_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x71,0x9f]
+
+    e_or_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x10,0x8a]
+
+    e_or_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x00,0x80]
+
+    e_orn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x80]
+
+    e_orn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x85]
+
+    e_orn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x8f]
+
+    e_orn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x9f]
+
+    e_orn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x8a]
+
+    e_orn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x80]
+
+    e_orn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x85]
+
+    e_orn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x8f]
+
+    e_orn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x9f]
+
+    e_orn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x8a]
+
+    e_orn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x80]
+
+    e_orn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0x85]
+
+    e_orn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0x8f]
+
+    e_orn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0x9f]
+
+    e_orn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x8a]
+
+    e_orn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0x80]
+
+    e_orn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x80]
+
+    e_orn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x85]
+
+    e_orn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x8f]
+
+    e_orn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x9f]
+
+    e_orn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x8a]
+
+    e_orn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x80]
+
+    e_orn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x85]
+
+    e_orn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x8f]
+
+    e_orn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x9f]
+
+    e_orn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x8a]
+
+    e_orn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x80]
+
+    e_orn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0x85]
+
+    e_orn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0x8f]
+
+    e_orn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0x9f]
+
+    e_orn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x8a]
+
+    e_orn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0x80]
+
+    e_orn_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x08,0x80]
+
+    e_orn_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x28,0x85]
+
+    e_orn_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x59,0x8f]
+
+    e_orn_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x79,0x9f]
+
+    e_orn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0x8a]
+
+    e_orn_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x08,0x80]
+
+    e_orn_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x28,0x85]
+
+    e_orn_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x59,0x8f]
+
+    e_orn_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x79,0x9f]
+
+    e_orn_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x18,0x8a]
+
+    e_orn_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x08,0x80]
+
+    e_orn_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x28,0x85]
+
+    e_orn_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x59,0x8f]
+
+    e_orn_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x79,0x9f]
+
+    e_orn_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x18,0x8a]
+
+    e_orn_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x08,0x80]
+
+    e_orn_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x08,0x80]
+
+    e_orn_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x28,0x85]
+
+    e_orn_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x59,0x8f]
+
+    e_orn_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x79,0x9f]
+
+    e_orn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0x8a]
+
+    e_orn_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x08,0x80]
+
+    e_orn_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x28,0x85]
+
+    e_orn_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x59,0x8f]
+
+    e_orn_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x79,0x9f]
+
+    e_orn_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x18,0x8a]
+
+    e_orn_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x08,0x80]
+
+    e_orn_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x28,0x85]
+
+    e_orn_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x59,0x8f]
+
+    e_orn_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x79,0x9f]
+
+    e_orn_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x18,0x8a]
+
+    e_orn_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x08,0x80]
+
+    e_or_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xc0]
+
+    e_or_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xc5]
+
+    e_or_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xcf]
+
+    e_or_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xdf]
+
+    e_or_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xca]
+
+    e_or_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xc0]
+
+    e_or_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xc5]
+
+    e_or_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xcf]
+
+    e_or_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xdf]
+
+    e_or_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xca]
+
+    e_or_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xc0]
+
+    e_or_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xc5]
+
+    e_or_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xcf]
+
+    e_or_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xdf]
+
+    e_or_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xca]
+
+    e_or_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xc0]
+
+    e_or_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xc0]
+
+    e_or_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xc5]
+
+    e_or_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xcf]
+
+    e_or_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xdf]
+
+    e_or_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xca]
+
+    e_or_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xc0]
+
+    e_or_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xc5]
+
+    e_or_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xcf]
+
+    e_or_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xdf]
+
+    e_or_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xca]
+
+    e_or_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xc0]
+
+    e_or_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xc5]
+
+    e_or_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xcf]
+
+    e_or_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xdf]
+
+    e_or_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xca]
+
+    e_or_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xc0]
+
+    e_or_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x00,0xc0]
+
+    e_or_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x20,0xc5]
+
+    e_or_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x51,0xcf]
+
+    e_or_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x71,0xdf]
+
+    e_or_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xca]
+
+    e_or_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x00,0xc0]
+
+    e_or_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x20,0xc5]
+
+    e_or_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x51,0xcf]
+
+    e_or_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x71,0xdf]
+
+    e_or_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x10,0xca]
+
+    e_or_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x00,0xc0]
+
+    e_or_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x20,0xc5]
+
+    e_or_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x51,0xcf]
+
+    e_or_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x71,0xdf]
+
+    e_or_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x10,0xca]
+
+    e_or_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x00,0xc0]
+
+    e_or_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x00,0xc0]
+
+    e_or_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x20,0xc5]
+
+    e_or_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x51,0xcf]
+
+    e_or_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x71,0xdf]
+
+    e_or_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xca]
+
+    e_or_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x00,0xc0]
+
+    e_or_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x20,0xc5]
+
+    e_or_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x51,0xcf]
+
+    e_or_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x71,0xdf]
+
+    e_or_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x10,0xca]
+
+    e_or_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x00,0xc0]
+
+    e_or_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x20,0xc5]
+
+    e_or_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x51,0xcf]
+
+    e_or_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x71,0xdf]
+
+    e_or_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x10,0xca]
+
+    e_or_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x00,0xc0]
+
+    e_orn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xc0]
+
+    e_orn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xc5]
+
+    e_orn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xcf]
+
+    e_orn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xdf]
+
+    e_orn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xca]
+
+    e_orn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xc0]
+
+    e_orn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xc5]
+
+    e_orn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xcf]
+
+    e_orn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xdf]
+
+    e_orn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xca]
+
+    e_orn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xc0]
+
+    e_orn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xc5]
+
+    e_orn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xcf]
+
+    e_orn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xdf]
+
+    e_orn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xca]
+
+    e_orn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xc0]
+
+    e_orn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xc0]
+
+    e_orn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xc5]
+
+    e_orn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xcf]
+
+    e_orn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xdf]
+
+    e_orn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xca]
+
+    e_orn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xc0]
+
+    e_orn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xc5]
+
+    e_orn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xcf]
+
+    e_orn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xdf]
+
+    e_orn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xca]
+
+    e_orn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xc0]
+
+    e_orn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xc5]
+
+    e_orn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xcf]
+
+    e_orn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xdf]
+
+    e_orn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xca]
+
+    e_orn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xc0]
+
+    e_orn_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x08,0xc0]
+
+    e_orn_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x28,0xc5]
+
+    e_orn_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x59,0xcf]
+
+    e_orn_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x79,0xdf]
+
+    e_orn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xca]
+
+    e_orn_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x08,0xc0]
+
+    e_orn_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x28,0xc5]
+
+    e_orn_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x59,0xcf]
+
+    e_orn_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x79,0xdf]
+
+    e_orn_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x18,0xca]
+
+    e_orn_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x08,0xc0]
+
+    e_orn_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x28,0xc5]
+
+    e_orn_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x59,0xcf]
+
+    e_orn_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x79,0xdf]
+
+    e_orn_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x18,0xca]
+
+    e_orn_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x08,0xc0]
+
+    e_orn_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x08,0xc0]
+
+    e_orn_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x28,0xc5]
+
+    e_orn_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x59,0xcf]
+
+    e_orn_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x79,0xdf]
+
+    e_orn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xca]
+
+    e_orn_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x08,0xc0]
+
+    e_orn_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x28,0xc5]
+
+    e_orn_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x59,0xcf]
+
+    e_orn_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x79,0xdf]
+
+    e_orn_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x18,0xca]
+
+    e_orn_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x08,0xc0]
+
+    e_orn_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x28,0xc5]
+
+    e_orn_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x59,0xcf]
+
+    e_orn_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x79,0xdf]
+
+    e_orn_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x18,0xca]
+
+    e_orn_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x08,0xc0]
+
+    e_or_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xa0]
+
+    e_or_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xa5]
+
+    e_or_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xaf]
+
+    e_or_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xbf]
+
+    e_or_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xaa]
+
+    e_or_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xa0]
+
+    e_or_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xa5]
+
+    e_or_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xaf]
+
+    e_or_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xbf]
+
+    e_or_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xaa]
+
+    e_or_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xa0]
+
+    e_or_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xa5]
+
+    e_or_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xaf]
+
+    e_or_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xbf]
+
+    e_or_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xaa]
+
+    e_or_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xa0]
+
+    e_or_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xa0]
+
+    e_or_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xa5]
+
+    e_or_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xaf]
+
+    e_or_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xbf]
+
+    e_or_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xaa]
+
+    e_or_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xa0]
+
+    e_or_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xa5]
+
+    e_or_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xaf]
+
+    e_or_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xbf]
+
+    e_or_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xaa]
+
+    e_or_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xa0]
+
+    e_or_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xa5]
+
+    e_or_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xaf]
+
+    e_or_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xbf]
+
+    e_or_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xaa]
+
+    e_or_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xa0]
+
+    e_or_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x00,0xa0]
+
+    e_or_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x20,0xa5]
+
+    e_or_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x51,0xaf]
+
+    e_or_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x71,0xbf]
+
+    e_or_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xaa]
+
+    e_or_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x00,0xa0]
+
+    e_or_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x20,0xa5]
+
+    e_or_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x51,0xaf]
+
+    e_or_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x71,0xbf]
+
+    e_or_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x10,0xaa]
+
+    e_or_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x00,0xa0]
+
+    e_or_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x20,0xa5]
+
+    e_or_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x51,0xaf]
+
+    e_or_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x71,0xbf]
+
+    e_or_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x10,0xaa]
+
+    e_or_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x00,0xa0]
+
+    e_or_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x00,0xa0]
+
+    e_or_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x20,0xa5]
+
+    e_or_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x51,0xaf]
+
+    e_or_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x71,0xbf]
+
+    e_or_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xaa]
+
+    e_or_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x00,0xa0]
+
+    e_or_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x20,0xa5]
+
+    e_or_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x51,0xaf]
+
+    e_or_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x71,0xbf]
+
+    e_or_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x10,0xaa]
+
+    e_or_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x00,0xa0]
+
+    e_or_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x20,0xa5]
+
+    e_or_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x51,0xaf]
+
+    e_or_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x71,0xbf]
+
+    e_or_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x10,0xaa]
+
+    e_or_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x00,0xa0]
+
+    e_orn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xa0]
+
+    e_orn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xa5]
+
+    e_orn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xaf]
+
+    e_orn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xbf]
+
+    e_orn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xaa]
+
+    e_orn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xa0]
+
+    e_orn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xa5]
+
+    e_orn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xaf]
+
+    e_orn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xbf]
+
+    e_orn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xaa]
+
+    e_orn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xa0]
+
+    e_orn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xa5]
+
+    e_orn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xaf]
+
+    e_orn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xbf]
+
+    e_orn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xaa]
+
+    e_orn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xa0]
+
+    e_orn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xa0]
+
+    e_orn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xa5]
+
+    e_orn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xaf]
+
+    e_orn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xbf]
+
+    e_orn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xaa]
+
+    e_orn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xa0]
+
+    e_orn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xa5]
+
+    e_orn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xaf]
+
+    e_orn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xbf]
+
+    e_orn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xaa]
+
+    e_orn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xa0]
+
+    e_orn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xa5]
+
+    e_orn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xaf]
+
+    e_orn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xbf]
+
+    e_orn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xaa]
+
+    e_orn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xa0]
+
+    e_orn_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x08,0xa0]
+
+    e_orn_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x28,0xa5]
+
+    e_orn_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x59,0xaf]
+
+    e_orn_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x79,0xbf]
+
+    e_orn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xaa]
+
+    e_orn_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x08,0xa0]
+
+    e_orn_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x28,0xa5]
+
+    e_orn_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x59,0xaf]
+
+    e_orn_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x79,0xbf]
+
+    e_orn_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x18,0xaa]
+
+    e_orn_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x08,0xa0]
+
+    e_orn_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x28,0xa5]
+
+    e_orn_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x59,0xaf]
+
+    e_orn_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x79,0xbf]
+
+    e_orn_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x18,0xaa]
+
+    e_orn_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x08,0xa0]
+
+    e_orn_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x08,0xa0]
+
+    e_orn_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x28,0xa5]
+
+    e_orn_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x59,0xaf]
+
+    e_orn_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x79,0xbf]
+
+    e_orn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xaa]
+
+    e_orn_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x08,0xa0]
+
+    e_orn_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x28,0xa5]
+
+    e_orn_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x59,0xaf]
+
+    e_orn_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x79,0xbf]
+
+    e_orn_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x18,0xaa]
+
+    e_orn_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x08,0xa0]
+
+    e_orn_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x28,0xa5]
+
+    e_orn_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x59,0xaf]
+
+    e_orn_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x79,0xbf]
+
+    e_orn_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x18,0xaa]
+
+    e_orn_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x08,0xa0]
+
+    e_or_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xe0]
+
+    e_or_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xe5]
+
+    e_or_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xef]
+
+    e_or_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xff]
+
+    e_or_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xea]
+
+    e_or_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xe0]
+
+    e_or_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xe5]
+
+    e_or_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xef]
+
+    e_or_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xff]
+
+    e_or_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xea]
+
+    e_or_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xe0]
+
+    e_or_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x20,0xe5]
+
+    e_or_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x51,0xef]
+
+    e_or_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x71,0xff]
+
+    e_or_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xea]
+
+    e_or_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x00,0xe0]
+
+    e_or_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xe0]
+
+    e_or_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xe5]
+
+    e_or_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xef]
+
+    e_or_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xff]
+
+    e_or_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xea]
+
+    e_or_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xe0]
+
+    e_or_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xe5]
+
+    e_or_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xef]
+
+    e_or_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xff]
+
+    e_or_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xea]
+
+    e_or_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xe0]
+
+    e_or_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x20,0xe5]
+
+    e_or_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x51,0xef]
+
+    e_or_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x71,0xff]
+
+    e_or_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xea]
+
+    e_or_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x00,0xe0]
+
+    e_or_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x00,0xe0]
+
+    e_or_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x20,0xe5]
+
+    e_or_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x51,0xef]
+
+    e_or_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x71,0xff]
+
+    e_or_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x10,0xea]
+
+    e_or_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x00,0xe0]
+
+    e_or_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x20,0xe5]
+
+    e_or_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x51,0xef]
+
+    e_or_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x71,0xff]
+
+    e_or_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x10,0xea]
+
+    e_or_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x00,0xe0]
+
+    e_or_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x20,0xe5]
+
+    e_or_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x51,0xef]
+
+    e_or_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x71,0xff]
+
+    e_or_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x10,0xea]
+
+    e_or_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x00,0xe0]
+
+    e_or_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x00,0xe0]
+
+    e_or_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x20,0xe5]
+
+    e_or_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x51,0xef]
+
+    e_or_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x71,0xff]
+
+    e_or_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x10,0xea]
+
+    e_or_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x00,0xe0]
+
+    e_or_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x20,0xe5]
+
+    e_or_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x51,0xef]
+
+    e_or_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x71,0xff]
+
+    e_or_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x10,0xea]
+
+    e_or_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x00,0xe0]
+
+    e_or_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x20,0xe5]
+
+    e_or_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x51,0xef]
+
+    e_or_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x71,0xff]
+
+    e_or_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x10,0xea]
+
+    e_or_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x00,0xe0]
+
+    e_orn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xe0]
+
+    e_orn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xe5]
+
+    e_orn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xef]
+
+    e_orn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xff]
+
+    e_orn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xea]
+
+    e_orn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xe0]
+
+    e_orn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xe5]
+
+    e_orn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xef]
+
+    e_orn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xff]
+
+    e_orn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xea]
+
+    e_orn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xe0]
+
+    e_orn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x88,0x28,0xe5]
+
+    e_orn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x54,0x59,0xef]
+
+    e_orn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdc,0x79,0xff]
+
+    e_orn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xea]
+
+    e_orn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x00,0x08,0xe0]
+
+    e_orn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xe0]
+
+    e_orn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xe5]
+
+    e_orn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xef]
+
+    e_orn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xff]
+
+    e_orn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xea]
+
+    e_orn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xe0]
+
+    e_orn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xe5]
+
+    e_orn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xef]
+
+    e_orn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xff]
+
+    e_orn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xea]
+
+    e_orn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xe0]
+
+    e_orn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0c,0x8a,0x28,0xe5]
+
+    e_orn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0c,0x56,0x59,0xef]
+
+    e_orn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xde,0x79,0xff]
+
+    e_orn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xea]
+
+    e_orn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0c,0x02,0x08,0xe0]
+
+    e_orn_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x00,0x08,0xe0]
+
+    e_orn_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x88,0x28,0xe5]
+
+    e_orn_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x54,0x59,0xef]
+
+    e_orn_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xdc,0x79,0xff]
+
+    e_orn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x44,0x18,0xea]
+
+    e_orn_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x00,0x08,0xe0]
+
+    e_orn_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x88,0x28,0xe5]
+
+    e_orn_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x54,0x59,0xef]
+
+    e_orn_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdd,0x79,0xff]
+
+    e_orn_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x45,0x18,0xea]
+
+    e_orn_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x01,0x08,0xe0]
+
+    e_orn_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x89,0x28,0xe5]
+
+    e_orn_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x55,0x59,0xef]
+
+    e_orn_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdd,0x79,0xff]
+
+    e_orn_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x45,0x18,0xea]
+
+    e_orn_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x01,0x08,0xe0]
+
+    e_orn_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2c,0x02,0x08,0xe0]
+
+    e_orn_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4c,0x8a,0x28,0xe5]
+
+    e_orn_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6c,0x56,0x59,0xef]
+
+    e_orn_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8c,0xde,0x79,0xff]
+
+    e_orn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0c,0x46,0x18,0xea]
+
+    e_orn_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xac,0x02,0x08,0xe0]
+
+    e_orn_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcc,0x8a,0x28,0xe5]
+
+    e_orn_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xec,0x56,0x59,0xef]
+
+    e_orn_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0c,0xdf,0x79,0xff]
+
+    e_orn_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2c,0x47,0x18,0xea]
+
+    e_orn_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4c,0x03,0x08,0xe0]
+
+    e_orn_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6c,0x8b,0x28,0xe5]
+
+    e_orn_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8c,0x57,0x59,0xef]
+
+    e_orn_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xac,0xdf,0x79,0xff]
+
+    e_orn_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcc,0x47,0x18,0xea]
+
+    e_orn_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xec,0x03,0x08,0xe0]
+
+    e_and r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x00,0x00]
+
+    e_and r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x20,0x00]
+
+    e_and r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x51,0x00]
+
+    e_and r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x71,0x00]
+
+    e_and r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x10,0x00]
+
+    e_and r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x00,0x00]
+
+    e_and r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x20,0x00]
+
+    e_and r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x51,0x00]
+
+    e_and r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x71,0x00]
+
+    e_and r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x10,0x00]
+
+    e_and r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x00,0x00]
+
+    e_and r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x20,0x00]
+
+    e_and r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x51,0x00]
+
+    e_and r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x71,0x00]
+
+    e_and r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x10,0x00]
+
+    e_and r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x00,0x00]
+
+    e_ands r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x00,0x00]
+
+    e_ands r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x20,0x00]
+
+    e_ands r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x51,0x00]
+
+    e_ands r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x71,0x00]
+
+    e_ands r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x10,0x00]
+
+    e_ands r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x00,0x00]
+
+    e_ands r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x20,0x00]
+
+    e_ands r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x51,0x00]
+
+    e_ands r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x71,0x00]
+
+    e_ands r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x10,0x00]
+
+    e_ands r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x00,0x00]
+
+    e_ands r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x20,0x00]
+
+    e_ands r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x51,0x00]
+
+    e_ands r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x71,0x00]
+
+    e_ands r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x10,0x00]
+
+    e_ands r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x00,0x00]
+
+    e_and_ze r0, r0, r0
+# CHECK: encoding: [0x2d,0x00,0x00,0x00]
+
+    e_and_nz r2, r2, r2
+# CHECK: encoding: [0x4d,0x88,0x20,0x00]
+
+    e_and_po r5, r5, r5
+# CHECK: encoding: [0x6d,0x54,0x51,0x00]
+
+    e_and_ne r7, r7, r7
+# CHECK: encoding: [0x8d,0xdc,0x71,0x00]
+
+    e_and r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x10,0x00]
+
+    e_and_az r0, r0, r0
+# CHECK: encoding: [0xad,0x00,0x00,0x00]
+
+    e_and_zb r2, r2, r2
+# CHECK: encoding: [0xcd,0x88,0x20,0x00]
+
+    e_and_ca r5, r5, r5
+# CHECK: encoding: [0xed,0x54,0x51,0x00]
+
+    e_and_nc r7, r7, r7
+# CHECK: encoding: [0x0d,0xdd,0x71,0x00]
+
+    e_and_cz r1, r1, r1
+# CHECK: encoding: [0x2d,0x45,0x10,0x00]
+
+    e_and_spo r0, r0, r0
+# CHECK: encoding: [0x4d,0x01,0x00,0x00]
+
+    e_and_sne r2, r2, r2
+# CHECK: encoding: [0x6d,0x89,0x20,0x00]
+
+    e_and_nbs r5, r5, r5
+# CHECK: encoding: [0x8d,0x55,0x51,0x00]
+
+    e_and_nex r7, r7, r7
+# CHECK: encoding: [0xad,0xdd,0x71,0x00]
+
+    e_and_bs r1, r1, r1
+# CHECK: encoding: [0xcd,0x45,0x10,0x00]
+
+    e_and_ex r0, r0, r0
+# CHECK: encoding: [0xed,0x01,0x00,0x00]
+
+    e_ands_ze r0, r0, r0
+# CHECK: encoding: [0x2d,0x02,0x00,0x00]
+
+    e_ands_nz r2, r2, r2
+# CHECK: encoding: [0x4d,0x8a,0x20,0x00]
+
+    e_ands_po r5, r5, r5
+# CHECK: encoding: [0x6d,0x56,0x51,0x00]
+
+    e_ands_ne r7, r7, r7
+# CHECK: encoding: [0x8d,0xde,0x71,0x00]
+
+    e_ands r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x10,0x00]
+
+    e_ands_az r0, r0, r0
+# CHECK: encoding: [0xad,0x02,0x00,0x00]
+
+    e_ands_zb r2, r2, r2
+# CHECK: encoding: [0xcd,0x8a,0x20,0x00]
+
+    e_ands_ca r5, r5, r5
+# CHECK: encoding: [0xed,0x56,0x51,0x00]
+
+    e_ands_nc r7, r7, r7
+# CHECK: encoding: [0x0d,0xdf,0x71,0x00]
+
+    e_ands_cz r1, r1, r1
+# CHECK: encoding: [0x2d,0x47,0x10,0x00]
+
+    e_ands_spo r0, r0, r0
+# CHECK: encoding: [0x4d,0x03,0x00,0x00]
+
+    e_ands_sne r2, r2, r2
+# CHECK: encoding: [0x6d,0x8b,0x20,0x00]
+
+    e_ands_nbs r5, r5, r5
+# CHECK: encoding: [0x8d,0x57,0x51,0x00]
+
+    e_ands_nex r7, r7, r7
+# CHECK: encoding: [0xad,0xdf,0x71,0x00]
+
+    e_ands_bs r1, r1, r1
+# CHECK: encoding: [0xcd,0x47,0x10,0x00]
+
+    e_ands_ex r0, r0, r0
+# CHECK: encoding: [0xed,0x03,0x00,0x00]
+
+    e_andn r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x08,0x00]
+
+    e_andn r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x28,0x00]
+
+    e_andn r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x59,0x00]
+
+    e_andn r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x79,0x00]
+
+    e_andn r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x18,0x00]
+
+    e_andn r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x08,0x00]
+
+    e_andn r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x28,0x00]
+
+    e_andn r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x59,0x00]
+
+    e_andn r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x79,0x00]
+
+    e_andn r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x18,0x00]
+
+    e_andn r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x08,0x00]
+
+    e_andn r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x28,0x00]
+
+    e_andn r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x59,0x00]
+
+    e_andn r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x79,0x00]
+
+    e_andn r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x18,0x00]
+
+    e_andn r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x08,0x00]
+
+    e_andns r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x08,0x00]
+
+    e_andns r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x28,0x00]
+
+    e_andns r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x59,0x00]
+
+    e_andns r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x79,0x00]
+
+    e_andns r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x18,0x00]
+
+    e_andns r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x08,0x00]
+
+    e_andns r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x28,0x00]
+
+    e_andns r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x59,0x00]
+
+    e_andns r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x79,0x00]
+
+    e_andns r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x18,0x00]
+
+    e_andns r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x08,0x00]
+
+    e_andns r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x28,0x00]
+
+    e_andns r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x59,0x00]
+
+    e_andns r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x79,0x00]
+
+    e_andns r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x18,0x00]
+
+    e_andns r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x08,0x00]
+
+    e_andn_ze r0, r0, r0
+# CHECK: encoding: [0x2d,0x00,0x08,0x00]
+
+    e_andn_nz r2, r2, r2
+# CHECK: encoding: [0x4d,0x88,0x28,0x00]
+
+    e_andn_po r5, r5, r5
+# CHECK: encoding: [0x6d,0x54,0x59,0x00]
+
+    e_andn_ne r7, r7, r7
+# CHECK: encoding: [0x8d,0xdc,0x79,0x00]
+
+    e_andn r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x18,0x00]
+
+    e_andn_az r0, r0, r0
+# CHECK: encoding: [0xad,0x00,0x08,0x00]
+
+    e_andn_zb r2, r2, r2
+# CHECK: encoding: [0xcd,0x88,0x28,0x00]
+
+    e_andn_ca r5, r5, r5
+# CHECK: encoding: [0xed,0x54,0x59,0x00]
+
+    e_andn_nc r7, r7, r7
+# CHECK: encoding: [0x0d,0xdd,0x79,0x00]
+
+    e_andn_cz r1, r1, r1
+# CHECK: encoding: [0x2d,0x45,0x18,0x00]
+
+    e_andn_spo r0, r0, r0
+# CHECK: encoding: [0x4d,0x01,0x08,0x00]
+
+    e_andn_sne r2, r2, r2
+# CHECK: encoding: [0x6d,0x89,0x28,0x00]
+
+    e_andn_nbs r5, r5, r5
+# CHECK: encoding: [0x8d,0x55,0x59,0x00]
+
+    e_andn_nex r7, r7, r7
+# CHECK: encoding: [0xad,0xdd,0x79,0x00]
+
+    e_andn_bs r1, r1, r1
+# CHECK: encoding: [0xcd,0x45,0x18,0x00]
+
+    e_andn_ex r0, r0, r0
+# CHECK: encoding: [0xed,0x01,0x08,0x00]
+
+    e_andns_ze r0, r0, r0
+# CHECK: encoding: [0x2d,0x02,0x08,0x00]
+
+    e_andns_nz r2, r2, r2
+# CHECK: encoding: [0x4d,0x8a,0x28,0x00]
+
+    e_andns_po r5, r5, r5
+# CHECK: encoding: [0x6d,0x56,0x59,0x00]
+
+    e_andns_ne r7, r7, r7
+# CHECK: encoding: [0x8d,0xde,0x79,0x00]
+
+    e_andns r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x18,0x00]
+
+    e_andns_az r0, r0, r0
+# CHECK: encoding: [0xad,0x02,0x08,0x00]
+
+    e_andns_zb r2, r2, r2
+# CHECK: encoding: [0xcd,0x8a,0x28,0x00]
+
+    e_andns_ca r5, r5, r5
+# CHECK: encoding: [0xed,0x56,0x59,0x00]
+
+    e_andns_nc r7, r7, r7
+# CHECK: encoding: [0x0d,0xdf,0x79,0x00]
+
+    e_andns_cz r1, r1, r1
+# CHECK: encoding: [0x2d,0x47,0x18,0x00]
+
+    e_andns_spo r0, r0, r0
+# CHECK: encoding: [0x4d,0x03,0x08,0x00]
+
+    e_andns_sne r2, r2, r2
+# CHECK: encoding: [0x6d,0x8b,0x28,0x00]
+
+    e_andns_nbs r5, r5, r5
+# CHECK: encoding: [0x8d,0x57,0x59,0x00]
+
+    e_andns_nex r7, r7, r7
+# CHECK: encoding: [0xad,0xdf,0x79,0x00]
+
+    e_andns_bs r1, r1, r1
+# CHECK: encoding: [0xcd,0x47,0x18,0x00]
+
+    e_andns_ex r0, r0, r0
+# CHECK: encoding: [0xed,0x03,0x08,0x00]
+
+    e_and_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x00,0xf4,0x3f]
+
+    e_and_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x88,0x14,0xc0]
+
+    e_and_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x54,0xf5,0x1f]
+
+    e_and_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdc,0x15,0xe0]
+
+    e_and_imm r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x44,0x14,0x00]
+
+    e_and_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x00,0xf4,0x3f]
+
+    e_and_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x88,0x14,0xc0]
+
+    e_and_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x54,0xf5,0x1f]
+
+    e_and_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdc,0x15,0xe0]
+
+    e_and_imm r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x44,0x14,0x00]
+
+    e_and_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x00,0xf4,0x3f]
+
+    e_and_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x88,0x14,0xc0]
+
+    e_and_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x54,0xf5,0x1f]
+
+    e_and_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdc,0x15,0xe0]
+
+    e_and_imm r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x44,0x14,0x00]
+
+    e_and_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x00,0xf4,0x3f]
+
+    e_and_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x02,0xf4,0x3f]
+
+    e_and_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x8a,0x14,0xc0]
+
+    e_and_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x56,0xf5,0x1f]
+
+    e_and_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xde,0x15,0xe0]
+
+    e_and_imms r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x46,0x14,0x00]
+
+    e_and_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x02,0xf4,0x3f]
+
+    e_and_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x8a,0x14,0xc0]
+
+    e_and_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x56,0xf5,0x1f]
+
+    e_and_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xde,0x15,0xe0]
+
+    e_and_imms r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x46,0x14,0x00]
+
+    e_and_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x02,0xf4,0x3f]
+
+    e_and_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x8a,0x14,0xc0]
+
+    e_and_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x56,0xf5,0x1f]
+
+    e_and_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xde,0x15,0xe0]
+
+    e_and_imms r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x46,0x14,0x00]
+
+    e_and_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x02,0xf4,0x3f]
+
+    e_and_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2d,0x00,0xf4,0x3f]
+
+    e_and_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4d,0x88,0x14,0xc0]
+
+    e_and_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6d,0x54,0xf5,0x1f]
+
+    e_and_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8d,0xdc,0x15,0xe0]
+
+    e_and_imm r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x44,0x14,0x00]
+
+    e_and_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xad,0x00,0xf4,0x3f]
+
+    e_and_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xcd,0x88,0x14,0xc0]
+
+    e_and_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xed,0x54,0xf5,0x1f]
+
+    e_and_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdd,0x15,0xe0]
+
+    e_and_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x2d,0x45,0x14,0x00]
+
+    e_and_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4d,0x01,0xf4,0x3f]
+
+    e_and_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6d,0x89,0x14,0xc0]
+
+    e_and_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8d,0x55,0xf5,0x1f]
+
+    e_and_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xad,0xdd,0x15,0xe0]
+
+    e_and_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xcd,0x45,0x14,0x00]
+
+    e_and_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xed,0x01,0xf4,0x3f]
+
+    e_and_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2d,0x02,0xf4,0x3f]
+
+    e_and_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4d,0x8a,0x14,0xc0]
+
+    e_and_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6d,0x56,0xf5,0x1f]
+
+    e_and_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8d,0xde,0x15,0xe0]
+
+    e_and_imms r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x46,0x14,0x00]
+
+    e_and_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xad,0x02,0xf4,0x3f]
+
+    e_and_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xcd,0x8a,0x14,0xc0]
+
+    e_and_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xed,0x56,0xf5,0x1f]
+
+    e_and_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdf,0x15,0xe0]
+
+    e_and_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x2d,0x47,0x14,0x00]
+
+    e_and_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4d,0x03,0xf4,0x3f]
+
+    e_and_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6d,0x8b,0x14,0xc0]
+
+    e_and_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8d,0x57,0xf5,0x1f]
+
+    e_and_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xad,0xdf,0x15,0xe0]
+
+    e_and_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xcd,0x47,0x14,0x00]
+
+    e_and_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xed,0x03,0xf4,0x3f]
+
+    e_andn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x00,0xfc,0x3f]
+
+    e_andn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x88,0x1c,0xc0]
+
+    e_andn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x54,0xfd,0x1f]
+
+    e_andn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdc,0x1d,0xe0]
+
+    e_andn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x44,0x1c,0x00]
+
+    e_andn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x00,0xfc,0x3f]
+
+    e_andn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x88,0x1c,0xc0]
+
+    e_andn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x54,0xfd,0x1f]
+
+    e_andn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdc,0x1d,0xe0]
+
+    e_andn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x44,0x1c,0x00]
+
+    e_andn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x00,0xfc,0x3f]
+
+    e_andn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x88,0x1c,0xc0]
+
+    e_andn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x54,0xfd,0x1f]
+
+    e_andn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdc,0x1d,0xe0]
+
+    e_andn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x44,0x1c,0x00]
+
+    e_andn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x00,0xfc,0x3f]
+
+    e_andn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x02,0xfc,0x3f]
+
+    e_andn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x8a,0x1c,0xc0]
+
+    e_andn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x56,0xfd,0x1f]
+
+    e_andn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xde,0x1d,0xe0]
+
+    e_andn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x46,0x1c,0x00]
+
+    e_andn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x02,0xfc,0x3f]
+
+    e_andn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x8a,0x1c,0xc0]
+
+    e_andn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x56,0xfd,0x1f]
+
+    e_andn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xde,0x1d,0xe0]
+
+    e_andn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x46,0x1c,0x00]
+
+    e_andn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x02,0xfc,0x3f]
+
+    e_andn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0d,0x8a,0x1c,0xc0]
+
+    e_andn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0d,0x56,0xfd,0x1f]
+
+    e_andn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xde,0x1d,0xe0]
+
+    e_andn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x46,0x1c,0x00]
+
+    e_andn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0d,0x02,0xfc,0x3f]
+
+    e_andn_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2d,0x00,0xfc,0x3f]
+
+    e_andn_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4d,0x88,0x1c,0xc0]
+
+    e_andn_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6d,0x54,0xfd,0x1f]
+
+    e_andn_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8d,0xdc,0x1d,0xe0]
+
+    e_andn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x44,0x1c,0x00]
+
+    e_andn_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xad,0x00,0xfc,0x3f]
+
+    e_andn_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xcd,0x88,0x1c,0xc0]
+
+    e_andn_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xed,0x54,0xfd,0x1f]
+
+    e_andn_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdd,0x1d,0xe0]
+
+    e_andn_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x2d,0x45,0x1c,0x00]
+
+    e_andn_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4d,0x01,0xfc,0x3f]
+
+    e_andn_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6d,0x89,0x1c,0xc0]
+
+    e_andn_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8d,0x55,0xfd,0x1f]
+
+    e_andn_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xad,0xdd,0x1d,0xe0]
+
+    e_andn_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xcd,0x45,0x1c,0x00]
+
+    e_andn_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xed,0x01,0xfc,0x3f]
+
+    e_andn_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2d,0x02,0xfc,0x3f]
+
+    e_andn_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4d,0x8a,0x1c,0xc0]
+
+    e_andn_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6d,0x56,0xfd,0x1f]
+
+    e_andn_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8d,0xde,0x1d,0xe0]
+
+    e_andn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0d,0x46,0x1c,0x00]
+
+    e_andn_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xad,0x02,0xfc,0x3f]
+
+    e_andn_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xcd,0x8a,0x1c,0xc0]
+
+    e_andn_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xed,0x56,0xfd,0x1f]
+
+    e_andn_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0d,0xdf,0x1d,0xe0]
+
+    e_andn_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x2d,0x47,0x1c,0x00]
+
+    e_andn_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4d,0x03,0xfc,0x3f]
+
+    e_andn_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6d,0x8b,0x1c,0xc0]
+
+    e_andn_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8d,0x57,0xfd,0x1f]
+
+    e_andn_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xad,0xdf,0x1d,0xe0]
+
+    e_andn_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xcd,0x47,0x1c,0x00]
+
+    e_andn_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xed,0x03,0xfc,0x3f]
+
+    e_and_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x00]
+
+    e_and_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x05]
+
+    e_and_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x0f]
+
+    e_and_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x1f]
+
+    e_and_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x0a]
+
+    e_and_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x00]
+
+    e_and_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x05]
+
+    e_and_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x0f]
+
+    e_and_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x1f]
+
+    e_and_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x0a]
+
+    e_and_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x00]
+
+    e_and_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x05]
+
+    e_and_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x0f]
+
+    e_and_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x1f]
+
+    e_and_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x0a]
+
+    e_and_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x00]
+
+    e_and_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x00]
+
+    e_and_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x05]
+
+    e_and_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x0f]
+
+    e_and_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x1f]
+
+    e_and_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x0a]
+
+    e_and_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x00]
+
+    e_and_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x05]
+
+    e_and_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x0f]
+
+    e_and_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x1f]
+
+    e_and_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x0a]
+
+    e_and_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x00]
+
+    e_and_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x05]
+
+    e_and_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x0f]
+
+    e_and_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x1f]
+
+    e_and_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x0a]
+
+    e_and_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x00]
+
+    e_and_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x00,0x00]
+
+    e_and_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x20,0x05]
+
+    e_and_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x51,0x0f]
+
+    e_and_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x71,0x1f]
+
+    e_and_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x0a]
+
+    e_and_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x00,0x00]
+
+    e_and_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x20,0x05]
+
+    e_and_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x51,0x0f]
+
+    e_and_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x71,0x1f]
+
+    e_and_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x10,0x0a]
+
+    e_and_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x00,0x00]
+
+    e_and_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x20,0x05]
+
+    e_and_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x51,0x0f]
+
+    e_and_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x71,0x1f]
+
+    e_and_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x10,0x0a]
+
+    e_and_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x00,0x00]
+
+    e_and_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x00,0x00]
+
+    e_and_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x20,0x05]
+
+    e_and_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x51,0x0f]
+
+    e_and_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x71,0x1f]
+
+    e_and_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x0a]
+
+    e_and_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x00,0x00]
+
+    e_and_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x20,0x05]
+
+    e_and_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x51,0x0f]
+
+    e_and_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x71,0x1f]
+
+    e_and_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x10,0x0a]
+
+    e_and_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x00,0x00]
+
+    e_and_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x20,0x05]
+
+    e_and_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x51,0x0f]
+
+    e_and_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x71,0x1f]
+
+    e_and_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x10,0x0a]
+
+    e_and_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x00,0x00]
+
+    e_andn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x00]
+
+    e_andn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x05]
+
+    e_andn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x0f]
+
+    e_andn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x1f]
+
+    e_andn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x0a]
+
+    e_andn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x00]
+
+    e_andn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x05]
+
+    e_andn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x0f]
+
+    e_andn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x1f]
+
+    e_andn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x0a]
+
+    e_andn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x00]
+
+    e_andn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x05]
+
+    e_andn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x0f]
+
+    e_andn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x1f]
+
+    e_andn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x0a]
+
+    e_andn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x00]
+
+    e_andn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x00]
+
+    e_andn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x05]
+
+    e_andn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x0f]
+
+    e_andn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x1f]
+
+    e_andn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x0a]
+
+    e_andn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x00]
+
+    e_andn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x05]
+
+    e_andn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x0f]
+
+    e_andn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x1f]
+
+    e_andn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x0a]
+
+    e_andn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x00]
+
+    e_andn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x05]
+
+    e_andn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x0f]
+
+    e_andn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x1f]
+
+    e_andn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x0a]
+
+    e_andn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x00]
+
+    e_andn_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x08,0x00]
+
+    e_andn_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x28,0x05]
+
+    e_andn_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x59,0x0f]
+
+    e_andn_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x79,0x1f]
+
+    e_andn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x0a]
+
+    e_andn_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x08,0x00]
+
+    e_andn_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x28,0x05]
+
+    e_andn_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x59,0x0f]
+
+    e_andn_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x79,0x1f]
+
+    e_andn_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x18,0x0a]
+
+    e_andn_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x08,0x00]
+
+    e_andn_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x28,0x05]
+
+    e_andn_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x59,0x0f]
+
+    e_andn_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x79,0x1f]
+
+    e_andn_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x18,0x0a]
+
+    e_andn_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x08,0x00]
+
+    e_andn_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x08,0x00]
+
+    e_andn_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x28,0x05]
+
+    e_andn_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x59,0x0f]
+
+    e_andn_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x79,0x1f]
+
+    e_andn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x0a]
+
+    e_andn_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x08,0x00]
+
+    e_andn_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x28,0x05]
+
+    e_andn_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x59,0x0f]
+
+    e_andn_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x79,0x1f]
+
+    e_andn_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x18,0x0a]
+
+    e_andn_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x08,0x00]
+
+    e_andn_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x28,0x05]
+
+    e_andn_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x59,0x0f]
+
+    e_andn_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x79,0x1f]
+
+    e_andn_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x18,0x0a]
+
+    e_andn_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x08,0x00]
+
+    e_and_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x40]
+
+    e_and_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x45]
+
+    e_and_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x4f]
+
+    e_and_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x5f]
+
+    e_and_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x4a]
+
+    e_and_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x40]
+
+    e_and_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x45]
+
+    e_and_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x4f]
+
+    e_and_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x5f]
+
+    e_and_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x4a]
+
+    e_and_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x40]
+
+    e_and_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x45]
+
+    e_and_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x4f]
+
+    e_and_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x5f]
+
+    e_and_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x4a]
+
+    e_and_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x40]
+
+    e_and_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x40]
+
+    e_and_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x45]
+
+    e_and_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x4f]
+
+    e_and_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x5f]
+
+    e_and_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x4a]
+
+    e_and_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x40]
+
+    e_and_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x45]
+
+    e_and_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x4f]
+
+    e_and_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x5f]
+
+    e_and_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x4a]
+
+    e_and_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x40]
+
+    e_and_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x45]
+
+    e_and_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x4f]
+
+    e_and_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x5f]
+
+    e_and_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x4a]
+
+    e_and_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x40]
+
+    e_and_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x00,0x40]
+
+    e_and_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x20,0x45]
+
+    e_and_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x51,0x4f]
+
+    e_and_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x71,0x5f]
+
+    e_and_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x4a]
+
+    e_and_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x00,0x40]
+
+    e_and_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x20,0x45]
+
+    e_and_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x51,0x4f]
+
+    e_and_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x71,0x5f]
+
+    e_and_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x10,0x4a]
+
+    e_and_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x00,0x40]
+
+    e_and_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x20,0x45]
+
+    e_and_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x51,0x4f]
+
+    e_and_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x71,0x5f]
+
+    e_and_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x10,0x4a]
+
+    e_and_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x00,0x40]
+
+    e_and_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x00,0x40]
+
+    e_and_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x20,0x45]
+
+    e_and_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x51,0x4f]
+
+    e_and_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x71,0x5f]
+
+    e_and_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x4a]
+
+    e_and_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x00,0x40]
+
+    e_and_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x20,0x45]
+
+    e_and_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x51,0x4f]
+
+    e_and_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x71,0x5f]
+
+    e_and_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x10,0x4a]
+
+    e_and_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x00,0x40]
+
+    e_and_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x20,0x45]
+
+    e_and_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x51,0x4f]
+
+    e_and_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x71,0x5f]
+
+    e_and_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x10,0x4a]
+
+    e_and_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x00,0x40]
+
+    e_andn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x40]
+
+    e_andn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x45]
+
+    e_andn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x4f]
+
+    e_andn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x5f]
+
+    e_andn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x4a]
+
+    e_andn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x40]
+
+    e_andn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x45]
+
+    e_andn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x4f]
+
+    e_andn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x5f]
+
+    e_andn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x4a]
+
+    e_andn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x40]
+
+    e_andn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x45]
+
+    e_andn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x4f]
+
+    e_andn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x5f]
+
+    e_andn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x4a]
+
+    e_andn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x40]
+
+    e_andn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x40]
+
+    e_andn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x45]
+
+    e_andn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x4f]
+
+    e_andn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x5f]
+
+    e_andn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x4a]
+
+    e_andn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x40]
+
+    e_andn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x45]
+
+    e_andn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x4f]
+
+    e_andn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x5f]
+
+    e_andn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x4a]
+
+    e_andn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x40]
+
+    e_andn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x45]
+
+    e_andn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x4f]
+
+    e_andn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x5f]
+
+    e_andn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x4a]
+
+    e_andn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x40]
+
+    e_andn_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x08,0x40]
+
+    e_andn_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x28,0x45]
+
+    e_andn_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x59,0x4f]
+
+    e_andn_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x79,0x5f]
+
+    e_andn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x4a]
+
+    e_andn_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x08,0x40]
+
+    e_andn_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x28,0x45]
+
+    e_andn_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x59,0x4f]
+
+    e_andn_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x79,0x5f]
+
+    e_andn_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x18,0x4a]
+
+    e_andn_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x08,0x40]
+
+    e_andn_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x28,0x45]
+
+    e_andn_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x59,0x4f]
+
+    e_andn_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x79,0x5f]
+
+    e_andn_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x18,0x4a]
+
+    e_andn_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x08,0x40]
+
+    e_andn_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x08,0x40]
+
+    e_andn_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x28,0x45]
+
+    e_andn_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x59,0x4f]
+
+    e_andn_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x79,0x5f]
+
+    e_andn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x4a]
+
+    e_andn_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x08,0x40]
+
+    e_andn_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x28,0x45]
+
+    e_andn_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x59,0x4f]
+
+    e_andn_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x79,0x5f]
+
+    e_andn_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x18,0x4a]
+
+    e_andn_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x08,0x40]
+
+    e_andn_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x28,0x45]
+
+    e_andn_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x59,0x4f]
+
+    e_andn_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x79,0x5f]
+
+    e_andn_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x18,0x4a]
+
+    e_andn_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x08,0x40]
+
+    e_and_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x20]
+
+    e_and_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x25]
+
+    e_and_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x2f]
+
+    e_and_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x3f]
+
+    e_and_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x2a]
+
+    e_and_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x20]
+
+    e_and_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x25]
+
+    e_and_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x2f]
+
+    e_and_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x3f]
+
+    e_and_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x2a]
+
+    e_and_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x20]
+
+    e_and_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x25]
+
+    e_and_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x2f]
+
+    e_and_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x3f]
+
+    e_and_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x2a]
+
+    e_and_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x20]
+
+    e_and_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x20]
+
+    e_and_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x25]
+
+    e_and_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x2f]
+
+    e_and_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x3f]
+
+    e_and_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x2a]
+
+    e_and_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x20]
+
+    e_and_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x25]
+
+    e_and_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x2f]
+
+    e_and_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x3f]
+
+    e_and_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x2a]
+
+    e_and_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x20]
+
+    e_and_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x25]
+
+    e_and_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x2f]
+
+    e_and_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x3f]
+
+    e_and_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x2a]
+
+    e_and_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x20]
+
+    e_and_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x00,0x20]
+
+    e_and_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x20,0x25]
+
+    e_and_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x51,0x2f]
+
+    e_and_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x71,0x3f]
+
+    e_and_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x2a]
+
+    e_and_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x00,0x20]
+
+    e_and_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x20,0x25]
+
+    e_and_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x51,0x2f]
+
+    e_and_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x71,0x3f]
+
+    e_and_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x10,0x2a]
+
+    e_and_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x00,0x20]
+
+    e_and_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x20,0x25]
+
+    e_and_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x51,0x2f]
+
+    e_and_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x71,0x3f]
+
+    e_and_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x10,0x2a]
+
+    e_and_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x00,0x20]
+
+    e_and_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x00,0x20]
+
+    e_and_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x20,0x25]
+
+    e_and_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x51,0x2f]
+
+    e_and_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x71,0x3f]
+
+    e_and_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x2a]
+
+    e_and_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x00,0x20]
+
+    e_and_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x20,0x25]
+
+    e_and_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x51,0x2f]
+
+    e_and_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x71,0x3f]
+
+    e_and_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x10,0x2a]
+
+    e_and_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x00,0x20]
+
+    e_and_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x20,0x25]
+
+    e_and_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x51,0x2f]
+
+    e_and_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x71,0x3f]
+
+    e_and_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x10,0x2a]
+
+    e_and_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x00,0x20]
+
+    e_andn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x20]
+
+    e_andn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x25]
+
+    e_andn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x2f]
+
+    e_andn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x3f]
+
+    e_andn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x2a]
+
+    e_andn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x20]
+
+    e_andn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x25]
+
+    e_andn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x2f]
+
+    e_andn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x3f]
+
+    e_andn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x2a]
+
+    e_andn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x20]
+
+    e_andn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x25]
+
+    e_andn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x2f]
+
+    e_andn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x3f]
+
+    e_andn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x2a]
+
+    e_andn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x20]
+
+    e_andn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x20]
+
+    e_andn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x25]
+
+    e_andn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x2f]
+
+    e_andn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x3f]
+
+    e_andn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x2a]
+
+    e_andn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x20]
+
+    e_andn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x25]
+
+    e_andn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x2f]
+
+    e_andn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x3f]
+
+    e_andn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x2a]
+
+    e_andn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x20]
+
+    e_andn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x25]
+
+    e_andn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x2f]
+
+    e_andn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x3f]
+
+    e_andn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x2a]
+
+    e_andn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x20]
+
+    e_andn_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x08,0x20]
+
+    e_andn_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x28,0x25]
+
+    e_andn_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x59,0x2f]
+
+    e_andn_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x79,0x3f]
+
+    e_andn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x2a]
+
+    e_andn_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x08,0x20]
+
+    e_andn_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x28,0x25]
+
+    e_andn_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x59,0x2f]
+
+    e_andn_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x79,0x3f]
+
+    e_andn_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x18,0x2a]
+
+    e_andn_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x08,0x20]
+
+    e_andn_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x28,0x25]
+
+    e_andn_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x59,0x2f]
+
+    e_andn_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x79,0x3f]
+
+    e_andn_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x18,0x2a]
+
+    e_andn_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x08,0x20]
+
+    e_andn_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x08,0x20]
+
+    e_andn_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x28,0x25]
+
+    e_andn_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x59,0x2f]
+
+    e_andn_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x79,0x3f]
+
+    e_andn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x2a]
+
+    e_andn_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x08,0x20]
+
+    e_andn_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x28,0x25]
+
+    e_andn_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x59,0x2f]
+
+    e_andn_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x79,0x3f]
+
+    e_andn_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x18,0x2a]
+
+    e_andn_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x08,0x20]
+
+    e_andn_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x28,0x25]
+
+    e_andn_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x59,0x2f]
+
+    e_andn_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x79,0x3f]
+
+    e_andn_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x18,0x2a]
+
+    e_andn_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x08,0x20]
+
+    e_and_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x60]
+
+    e_and_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x65]
+
+    e_and_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x6f]
+
+    e_and_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x7f]
+
+    e_and_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x6a]
+
+    e_and_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x60]
+
+    e_and_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x65]
+
+    e_and_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x6f]
+
+    e_and_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x7f]
+
+    e_and_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x6a]
+
+    e_and_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x60]
+
+    e_and_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x65]
+
+    e_and_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x6f]
+
+    e_and_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x7f]
+
+    e_and_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x6a]
+
+    e_and_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x60]
+
+    e_and_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x60]
+
+    e_and_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x65]
+
+    e_and_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x6f]
+
+    e_and_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x7f]
+
+    e_and_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x6a]
+
+    e_and_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x60]
+
+    e_and_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x65]
+
+    e_and_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x6f]
+
+    e_and_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x7f]
+
+    e_and_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x6a]
+
+    e_and_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x60]
+
+    e_and_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x65]
+
+    e_and_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x6f]
+
+    e_and_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x7f]
+
+    e_and_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x6a]
+
+    e_and_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x60]
+
+    e_and_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x00,0x60]
+
+    e_and_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x20,0x65]
+
+    e_and_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x51,0x6f]
+
+    e_and_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x71,0x7f]
+
+    e_and_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x6a]
+
+    e_and_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x00,0x60]
+
+    e_and_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x20,0x65]
+
+    e_and_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x51,0x6f]
+
+    e_and_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x71,0x7f]
+
+    e_and_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x10,0x6a]
+
+    e_and_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x00,0x60]
+
+    e_and_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x20,0x65]
+
+    e_and_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x51,0x6f]
+
+    e_and_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x71,0x7f]
+
+    e_and_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x10,0x6a]
+
+    e_and_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x00,0x60]
+
+    e_and_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x00,0x60]
+
+    e_and_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x20,0x65]
+
+    e_and_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x51,0x6f]
+
+    e_and_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x71,0x7f]
+
+    e_and_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x6a]
+
+    e_and_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x00,0x60]
+
+    e_and_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x20,0x65]
+
+    e_and_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x51,0x6f]
+
+    e_and_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x71,0x7f]
+
+    e_and_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x10,0x6a]
+
+    e_and_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x00,0x60]
+
+    e_and_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x20,0x65]
+
+    e_and_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x51,0x6f]
+
+    e_and_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x71,0x7f]
+
+    e_and_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x10,0x6a]
+
+    e_and_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x00,0x60]
+
+    e_andn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x60]
+
+    e_andn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x65]
+
+    e_andn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x6f]
+
+    e_andn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x7f]
+
+    e_andn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x6a]
+
+    e_andn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x60]
+
+    e_andn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x65]
+
+    e_andn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x6f]
+
+    e_andn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x7f]
+
+    e_andn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x6a]
+
+    e_andn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x60]
+
+    e_andn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x65]
+
+    e_andn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x6f]
+
+    e_andn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x7f]
+
+    e_andn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x6a]
+
+    e_andn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x60]
+
+    e_andn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x60]
+
+    e_andn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x65]
+
+    e_andn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x6f]
+
+    e_andn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x7f]
+
+    e_andn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x6a]
+
+    e_andn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x60]
+
+    e_andn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x65]
+
+    e_andn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x6f]
+
+    e_andn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x7f]
+
+    e_andn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x6a]
+
+    e_andn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x60]
+
+    e_andn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x65]
+
+    e_andn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x6f]
+
+    e_andn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x7f]
+
+    e_andn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x6a]
+
+    e_andn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x60]
+
+    e_andn_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x08,0x60]
+
+    e_andn_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x28,0x65]
+
+    e_andn_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x59,0x6f]
+
+    e_andn_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x79,0x7f]
+
+    e_andn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x6a]
+
+    e_andn_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x08,0x60]
+
+    e_andn_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x28,0x65]
+
+    e_andn_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x59,0x6f]
+
+    e_andn_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x79,0x7f]
+
+    e_andn_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x18,0x6a]
+
+    e_andn_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x08,0x60]
+
+    e_andn_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x28,0x65]
+
+    e_andn_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x59,0x6f]
+
+    e_andn_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x79,0x7f]
+
+    e_andn_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x18,0x6a]
+
+    e_andn_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x08,0x60]
+
+    e_andn_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x08,0x60]
+
+    e_andn_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x28,0x65]
+
+    e_andn_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x59,0x6f]
+
+    e_andn_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x79,0x7f]
+
+    e_andn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x6a]
+
+    e_andn_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x08,0x60]
+
+    e_andn_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x28,0x65]
+
+    e_andn_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x59,0x6f]
+
+    e_andn_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x79,0x7f]
+
+    e_andn_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x18,0x6a]
+
+    e_andn_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x08,0x60]
+
+    e_andn_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x28,0x65]
+
+    e_andn_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x59,0x6f]
+
+    e_andn_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x79,0x7f]
+
+    e_andn_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x18,0x6a]
+
+    e_andn_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x08,0x60]
+
+    e_and_f r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x00,0x80]
+
+    e_and_f r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x20,0x80]
+
+    e_and_f r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x51,0x80]
+
+    e_and_f r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x71,0x80]
+
+    e_and_f r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x10,0x80]
+
+    e_and_f r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x00,0x80]
+
+    e_and_f r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x20,0x80]
+
+    e_and_f r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x51,0x80]
+
+    e_and_f r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x71,0x80]
+
+    e_and_f r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x10,0x80]
+
+    e_and_f r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x00,0x80]
+
+    e_and_f r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x20,0x80]
+
+    e_and_f r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x51,0x80]
+
+    e_and_f r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x71,0x80]
+
+    e_and_f r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x10,0x80]
+
+    e_and_f r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x00,0x80]
+
+    e_and_fs r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x00,0x80]
+
+    e_and_fs r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x20,0x80]
+
+    e_and_fs r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x51,0x80]
+
+    e_and_fs r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x71,0x80]
+
+    e_and_fs r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x10,0x80]
+
+    e_and_fs r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x00,0x80]
+
+    e_and_fs r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x20,0x80]
+
+    e_and_fs r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x51,0x80]
+
+    e_and_fs r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x71,0x80]
+
+    e_and_fs r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x10,0x80]
+
+    e_and_fs r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x00,0x80]
+
+    e_and_fs r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x20,0x80]
+
+    e_and_fs r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x51,0x80]
+
+    e_and_fs r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x71,0x80]
+
+    e_and_fs r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x10,0x80]
+
+    e_and_fs r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x00,0x80]
+
+    e_and_f_ze r0, r0, r0
+# CHECK: encoding: [0x2d,0x00,0x00,0x80]
+
+    e_and_f_nz r2, r2, r2
+# CHECK: encoding: [0x4d,0x88,0x20,0x80]
+
+    e_and_f_po r5, r5, r5
+# CHECK: encoding: [0x6d,0x54,0x51,0x80]
+
+    e_and_f_ne r7, r7, r7
+# CHECK: encoding: [0x8d,0xdc,0x71,0x80]
+
+    e_and_f r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x10,0x80]
+
+    e_and_f_az r0, r0, r0
+# CHECK: encoding: [0xad,0x00,0x00,0x80]
+
+    e_and_f_zb r2, r2, r2
+# CHECK: encoding: [0xcd,0x88,0x20,0x80]
+
+    e_and_f_ca r5, r5, r5
+# CHECK: encoding: [0xed,0x54,0x51,0x80]
+
+    e_and_f_nc r7, r7, r7
+# CHECK: encoding: [0x0d,0xdd,0x71,0x80]
+
+    e_and_f_cz r1, r1, r1
+# CHECK: encoding: [0x2d,0x45,0x10,0x80]
+
+    e_and_f_spo r0, r0, r0
+# CHECK: encoding: [0x4d,0x01,0x00,0x80]
+
+    e_and_f_sne r2, r2, r2
+# CHECK: encoding: [0x6d,0x89,0x20,0x80]
+
+    e_and_f_nbs r5, r5, r5
+# CHECK: encoding: [0x8d,0x55,0x51,0x80]
+
+    e_and_f_nex r7, r7, r7
+# CHECK: encoding: [0xad,0xdd,0x71,0x80]
+
+    e_and_f_bs r1, r1, r1
+# CHECK: encoding: [0xcd,0x45,0x10,0x80]
+
+    e_and_f_ex r0, r0, r0
+# CHECK: encoding: [0xed,0x01,0x00,0x80]
+
+    e_and_fs_ze r0, r0, r0
+# CHECK: encoding: [0x2d,0x02,0x00,0x80]
+
+    e_and_fs_nz r2, r2, r2
+# CHECK: encoding: [0x4d,0x8a,0x20,0x80]
+
+    e_and_fs_po r5, r5, r5
+# CHECK: encoding: [0x6d,0x56,0x51,0x80]
+
+    e_and_fs_ne r7, r7, r7
+# CHECK: encoding: [0x8d,0xde,0x71,0x80]
+
+    e_and_fs r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x10,0x80]
+
+    e_and_fs_az r0, r0, r0
+# CHECK: encoding: [0xad,0x02,0x00,0x80]
+
+    e_and_fs_zb r2, r2, r2
+# CHECK: encoding: [0xcd,0x8a,0x20,0x80]
+
+    e_and_fs_ca r5, r5, r5
+# CHECK: encoding: [0xed,0x56,0x51,0x80]
+
+    e_and_fs_nc r7, r7, r7
+# CHECK: encoding: [0x0d,0xdf,0x71,0x80]
+
+    e_and_fs_cz r1, r1, r1
+# CHECK: encoding: [0x2d,0x47,0x10,0x80]
+
+    e_and_fs_spo r0, r0, r0
+# CHECK: encoding: [0x4d,0x03,0x00,0x80]
+
+    e_and_fs_sne r2, r2, r2
+# CHECK: encoding: [0x6d,0x8b,0x20,0x80]
+
+    e_and_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x8d,0x57,0x51,0x80]
+
+    e_and_fs_nex r7, r7, r7
+# CHECK: encoding: [0xad,0xdf,0x71,0x80]
+
+    e_and_fs_bs r1, r1, r1
+# CHECK: encoding: [0xcd,0x47,0x10,0x80]
+
+    e_and_fs_ex r0, r0, r0
+# CHECK: encoding: [0xed,0x03,0x00,0x80]
+
+    e_andn_f r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x08,0x80]
+
+    e_andn_f r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x28,0x80]
+
+    e_andn_f r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x59,0x80]
+
+    e_andn_f r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x79,0x80]
+
+    e_andn_f r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x18,0x80]
+
+    e_andn_f r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x08,0x80]
+
+    e_andn_f r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x28,0x80]
+
+    e_andn_f r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x59,0x80]
+
+    e_andn_f r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x79,0x80]
+
+    e_andn_f r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x18,0x80]
+
+    e_andn_f r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x08,0x80]
+
+    e_andn_f r2, r2, r2
+# CHECK: encoding: [0x0d,0x88,0x28,0x80]
+
+    e_andn_f r5, r5, r5
+# CHECK: encoding: [0x0d,0x54,0x59,0x80]
+
+    e_andn_f r7, r7, r7
+# CHECK: encoding: [0x0d,0xdc,0x79,0x80]
+
+    e_andn_f r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x18,0x80]
+
+    e_andn_f r0, r0, r0
+# CHECK: encoding: [0x0d,0x00,0x08,0x80]
+
+    e_andn_fs r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x08,0x80]
+
+    e_andn_fs r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x28,0x80]
+
+    e_andn_fs r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x59,0x80]
+
+    e_andn_fs r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x79,0x80]
+
+    e_andn_fs r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x18,0x80]
+
+    e_andn_fs r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x08,0x80]
+
+    e_andn_fs r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x28,0x80]
+
+    e_andn_fs r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x59,0x80]
+
+    e_andn_fs r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x79,0x80]
+
+    e_andn_fs r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x18,0x80]
+
+    e_andn_fs r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x08,0x80]
+
+    e_andn_fs r2, r2, r2
+# CHECK: encoding: [0x0d,0x8a,0x28,0x80]
+
+    e_andn_fs r5, r5, r5
+# CHECK: encoding: [0x0d,0x56,0x59,0x80]
+
+    e_andn_fs r7, r7, r7
+# CHECK: encoding: [0x0d,0xde,0x79,0x80]
+
+    e_andn_fs r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x18,0x80]
+
+    e_andn_fs r0, r0, r0
+# CHECK: encoding: [0x0d,0x02,0x08,0x80]
+
+    e_andn_f_ze r0, r0, r0
+# CHECK: encoding: [0x2d,0x00,0x08,0x80]
+
+    e_andn_f_nz r2, r2, r2
+# CHECK: encoding: [0x4d,0x88,0x28,0x80]
+
+    e_andn_f_po r5, r5, r5
+# CHECK: encoding: [0x6d,0x54,0x59,0x80]
+
+    e_andn_f_ne r7, r7, r7
+# CHECK: encoding: [0x8d,0xdc,0x79,0x80]
+
+    e_andn_f r1, r1, r1
+# CHECK: encoding: [0x0d,0x44,0x18,0x80]
+
+    e_andn_f_az r0, r0, r0
+# CHECK: encoding: [0xad,0x00,0x08,0x80]
+
+    e_andn_f_zb r2, r2, r2
+# CHECK: encoding: [0xcd,0x88,0x28,0x80]
+
+    e_andn_f_ca r5, r5, r5
+# CHECK: encoding: [0xed,0x54,0x59,0x80]
+
+    e_andn_f_nc r7, r7, r7
+# CHECK: encoding: [0x0d,0xdd,0x79,0x80]
+
+    e_andn_f_cz r1, r1, r1
+# CHECK: encoding: [0x2d,0x45,0x18,0x80]
+
+    e_andn_f_spo r0, r0, r0
+# CHECK: encoding: [0x4d,0x01,0x08,0x80]
+
+    e_andn_f_sne r2, r2, r2
+# CHECK: encoding: [0x6d,0x89,0x28,0x80]
+
+    e_andn_f_nbs r5, r5, r5
+# CHECK: encoding: [0x8d,0x55,0x59,0x80]
+
+    e_andn_f_nex r7, r7, r7
+# CHECK: encoding: [0xad,0xdd,0x79,0x80]
+
+    e_andn_f_bs r1, r1, r1
+# CHECK: encoding: [0xcd,0x45,0x18,0x80]
+
+    e_andn_f_ex r0, r0, r0
+# CHECK: encoding: [0xed,0x01,0x08,0x80]
+
+    e_andn_fs_ze r0, r0, r0
+# CHECK: encoding: [0x2d,0x02,0x08,0x80]
+
+    e_andn_fs_nz r2, r2, r2
+# CHECK: encoding: [0x4d,0x8a,0x28,0x80]
+
+    e_andn_fs_po r5, r5, r5
+# CHECK: encoding: [0x6d,0x56,0x59,0x80]
+
+    e_andn_fs_ne r7, r7, r7
+# CHECK: encoding: [0x8d,0xde,0x79,0x80]
+
+    e_andn_fs r1, r1, r1
+# CHECK: encoding: [0x0d,0x46,0x18,0x80]
+
+    e_andn_fs_az r0, r0, r0
+# CHECK: encoding: [0xad,0x02,0x08,0x80]
+
+    e_andn_fs_zb r2, r2, r2
+# CHECK: encoding: [0xcd,0x8a,0x28,0x80]
+
+    e_andn_fs_ca r5, r5, r5
+# CHECK: encoding: [0xed,0x56,0x59,0x80]
+
+    e_andn_fs_nc r7, r7, r7
+# CHECK: encoding: [0x0d,0xdf,0x79,0x80]
+
+    e_andn_fs_cz r1, r1, r1
+# CHECK: encoding: [0x2d,0x47,0x18,0x80]
+
+    e_andn_fs_spo r0, r0, r0
+# CHECK: encoding: [0x4d,0x03,0x08,0x80]
+
+    e_andn_fs_sne r2, r2, r2
+# CHECK: encoding: [0x6d,0x8b,0x28,0x80]
+
+    e_andn_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x8d,0x57,0x59,0x80]
+
+    e_andn_fs_nex r7, r7, r7
+# CHECK: encoding: [0xad,0xdf,0x79,0x80]
+
+    e_andn_fs_bs r1, r1, r1
+# CHECK: encoding: [0xcd,0x47,0x18,0x80]
+
+    e_andn_fs_ex r0, r0, r0
+# CHECK: encoding: [0xed,0x03,0x08,0x80]
+
+    e_and_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x80]
+
+    e_and_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x85]
+
+    e_and_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x8f]
+
+    e_and_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x9f]
+
+    e_and_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x8a]
+
+    e_and_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x80]
+
+    e_and_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x85]
+
+    e_and_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x8f]
+
+    e_and_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x9f]
+
+    e_and_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x8a]
+
+    e_and_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x80]
+
+    e_and_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0x85]
+
+    e_and_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0x8f]
+
+    e_and_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0x9f]
+
+    e_and_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x8a]
+
+    e_and_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0x80]
+
+    e_and_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x80]
+
+    e_and_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x85]
+
+    e_and_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x8f]
+
+    e_and_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x9f]
+
+    e_and_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x8a]
+
+    e_and_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x80]
+
+    e_and_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x85]
+
+    e_and_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x8f]
+
+    e_and_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x9f]
+
+    e_and_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x8a]
+
+    e_and_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x80]
+
+    e_and_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0x85]
+
+    e_and_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0x8f]
+
+    e_and_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0x9f]
+
+    e_and_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x8a]
+
+    e_and_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0x80]
+
+    e_and_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x00,0x80]
+
+    e_and_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x20,0x85]
+
+    e_and_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x51,0x8f]
+
+    e_and_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x71,0x9f]
+
+    e_and_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0x8a]
+
+    e_and_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x00,0x80]
+
+    e_and_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x20,0x85]
+
+    e_and_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x51,0x8f]
+
+    e_and_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x71,0x9f]
+
+    e_and_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x10,0x8a]
+
+    e_and_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x00,0x80]
+
+    e_and_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x20,0x85]
+
+    e_and_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x51,0x8f]
+
+    e_and_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x71,0x9f]
+
+    e_and_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x10,0x8a]
+
+    e_and_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x00,0x80]
+
+    e_and_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x00,0x80]
+
+    e_and_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x20,0x85]
+
+    e_and_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x51,0x8f]
+
+    e_and_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x71,0x9f]
+
+    e_and_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0x8a]
+
+    e_and_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x00,0x80]
+
+    e_and_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x20,0x85]
+
+    e_and_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x51,0x8f]
+
+    e_and_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x71,0x9f]
+
+    e_and_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x10,0x8a]
+
+    e_and_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x00,0x80]
+
+    e_and_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x20,0x85]
+
+    e_and_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x51,0x8f]
+
+    e_and_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x71,0x9f]
+
+    e_and_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x10,0x8a]
+
+    e_and_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x00,0x80]
+
+    e_andn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x80]
+
+    e_andn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x85]
+
+    e_andn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x8f]
+
+    e_andn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x9f]
+
+    e_andn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x8a]
+
+    e_andn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x80]
+
+    e_andn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x85]
+
+    e_andn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x8f]
+
+    e_andn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x9f]
+
+    e_andn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x8a]
+
+    e_andn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x80]
+
+    e_andn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0x85]
+
+    e_andn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0x8f]
+
+    e_andn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0x9f]
+
+    e_andn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x8a]
+
+    e_andn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0x80]
+
+    e_andn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x80]
+
+    e_andn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x85]
+
+    e_andn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x8f]
+
+    e_andn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x9f]
+
+    e_andn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x8a]
+
+    e_andn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x80]
+
+    e_andn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x85]
+
+    e_andn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x8f]
+
+    e_andn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x9f]
+
+    e_andn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x8a]
+
+    e_andn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x80]
+
+    e_andn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0x85]
+
+    e_andn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0x8f]
+
+    e_andn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0x9f]
+
+    e_andn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x8a]
+
+    e_andn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0x80]
+
+    e_andn_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x08,0x80]
+
+    e_andn_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x28,0x85]
+
+    e_andn_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x59,0x8f]
+
+    e_andn_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x79,0x9f]
+
+    e_andn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0x8a]
+
+    e_andn_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x08,0x80]
+
+    e_andn_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x28,0x85]
+
+    e_andn_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x59,0x8f]
+
+    e_andn_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x79,0x9f]
+
+    e_andn_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x18,0x8a]
+
+    e_andn_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x08,0x80]
+
+    e_andn_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x28,0x85]
+
+    e_andn_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x59,0x8f]
+
+    e_andn_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x79,0x9f]
+
+    e_andn_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x18,0x8a]
+
+    e_andn_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x08,0x80]
+
+    e_andn_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x08,0x80]
+
+    e_andn_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x28,0x85]
+
+    e_andn_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x59,0x8f]
+
+    e_andn_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x79,0x9f]
+
+    e_andn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0x8a]
+
+    e_andn_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x08,0x80]
+
+    e_andn_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x28,0x85]
+
+    e_andn_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x59,0x8f]
+
+    e_andn_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x79,0x9f]
+
+    e_andn_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x18,0x8a]
+
+    e_andn_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x08,0x80]
+
+    e_andn_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x28,0x85]
+
+    e_andn_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x59,0x8f]
+
+    e_andn_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x79,0x9f]
+
+    e_andn_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x18,0x8a]
+
+    e_andn_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x08,0x80]
+
+    e_and_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xc0]
+
+    e_and_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xc5]
+
+    e_and_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xcf]
+
+    e_and_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xdf]
+
+    e_and_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xca]
+
+    e_and_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xc0]
+
+    e_and_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xc5]
+
+    e_and_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xcf]
+
+    e_and_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xdf]
+
+    e_and_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xca]
+
+    e_and_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xc0]
+
+    e_and_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xc5]
+
+    e_and_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xcf]
+
+    e_and_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xdf]
+
+    e_and_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xca]
+
+    e_and_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xc0]
+
+    e_and_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xc0]
+
+    e_and_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xc5]
+
+    e_and_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xcf]
+
+    e_and_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xdf]
+
+    e_and_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xca]
+
+    e_and_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xc0]
+
+    e_and_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xc5]
+
+    e_and_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xcf]
+
+    e_and_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xdf]
+
+    e_and_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xca]
+
+    e_and_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xc0]
+
+    e_and_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xc5]
+
+    e_and_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xcf]
+
+    e_and_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xdf]
+
+    e_and_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xca]
+
+    e_and_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xc0]
+
+    e_and_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x00,0xc0]
+
+    e_and_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x20,0xc5]
+
+    e_and_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x51,0xcf]
+
+    e_and_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x71,0xdf]
+
+    e_and_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xca]
+
+    e_and_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x00,0xc0]
+
+    e_and_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x20,0xc5]
+
+    e_and_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x51,0xcf]
+
+    e_and_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x71,0xdf]
+
+    e_and_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x10,0xca]
+
+    e_and_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x00,0xc0]
+
+    e_and_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x20,0xc5]
+
+    e_and_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x51,0xcf]
+
+    e_and_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x71,0xdf]
+
+    e_and_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x10,0xca]
+
+    e_and_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x00,0xc0]
+
+    e_and_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x00,0xc0]
+
+    e_and_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x20,0xc5]
+
+    e_and_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x51,0xcf]
+
+    e_and_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x71,0xdf]
+
+    e_and_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xca]
+
+    e_and_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x00,0xc0]
+
+    e_and_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x20,0xc5]
+
+    e_and_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x51,0xcf]
+
+    e_and_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x71,0xdf]
+
+    e_and_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x10,0xca]
+
+    e_and_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x00,0xc0]
+
+    e_and_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x20,0xc5]
+
+    e_and_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x51,0xcf]
+
+    e_and_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x71,0xdf]
+
+    e_and_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x10,0xca]
+
+    e_and_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x00,0xc0]
+
+    e_andn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xc0]
+
+    e_andn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xc5]
+
+    e_andn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xcf]
+
+    e_andn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xdf]
+
+    e_andn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xca]
+
+    e_andn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xc0]
+
+    e_andn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xc5]
+
+    e_andn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xcf]
+
+    e_andn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xdf]
+
+    e_andn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xca]
+
+    e_andn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xc0]
+
+    e_andn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xc5]
+
+    e_andn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xcf]
+
+    e_andn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xdf]
+
+    e_andn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xca]
+
+    e_andn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xc0]
+
+    e_andn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xc0]
+
+    e_andn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xc5]
+
+    e_andn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xcf]
+
+    e_andn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xdf]
+
+    e_andn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xca]
+
+    e_andn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xc0]
+
+    e_andn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xc5]
+
+    e_andn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xcf]
+
+    e_andn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xdf]
+
+    e_andn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xca]
+
+    e_andn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xc0]
+
+    e_andn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xc5]
+
+    e_andn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xcf]
+
+    e_andn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xdf]
+
+    e_andn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xca]
+
+    e_andn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xc0]
+
+    e_andn_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x08,0xc0]
+
+    e_andn_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x28,0xc5]
+
+    e_andn_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x59,0xcf]
+
+    e_andn_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x79,0xdf]
+
+    e_andn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xca]
+
+    e_andn_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x08,0xc0]
+
+    e_andn_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x28,0xc5]
+
+    e_andn_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x59,0xcf]
+
+    e_andn_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x79,0xdf]
+
+    e_andn_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x18,0xca]
+
+    e_andn_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x08,0xc0]
+
+    e_andn_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x28,0xc5]
+
+    e_andn_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x59,0xcf]
+
+    e_andn_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x79,0xdf]
+
+    e_andn_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x18,0xca]
+
+    e_andn_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x08,0xc0]
+
+    e_andn_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x08,0xc0]
+
+    e_andn_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x28,0xc5]
+
+    e_andn_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x59,0xcf]
+
+    e_andn_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x79,0xdf]
+
+    e_andn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xca]
+
+    e_andn_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x08,0xc0]
+
+    e_andn_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x28,0xc5]
+
+    e_andn_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x59,0xcf]
+
+    e_andn_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x79,0xdf]
+
+    e_andn_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x18,0xca]
+
+    e_andn_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x08,0xc0]
+
+    e_andn_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x28,0xc5]
+
+    e_andn_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x59,0xcf]
+
+    e_andn_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x79,0xdf]
+
+    e_andn_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x18,0xca]
+
+    e_andn_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x08,0xc0]
+
+    e_and_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xa0]
+
+    e_and_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xa5]
+
+    e_and_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xaf]
+
+    e_and_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xbf]
+
+    e_and_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xaa]
+
+    e_and_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xa0]
+
+    e_and_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xa5]
+
+    e_and_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xaf]
+
+    e_and_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xbf]
+
+    e_and_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xaa]
+
+    e_and_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xa0]
+
+    e_and_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xa5]
+
+    e_and_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xaf]
+
+    e_and_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xbf]
+
+    e_and_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xaa]
+
+    e_and_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xa0]
+
+    e_and_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xa0]
+
+    e_and_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xa5]
+
+    e_and_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xaf]
+
+    e_and_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xbf]
+
+    e_and_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xaa]
+
+    e_and_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xa0]
+
+    e_and_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xa5]
+
+    e_and_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xaf]
+
+    e_and_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xbf]
+
+    e_and_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xaa]
+
+    e_and_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xa0]
+
+    e_and_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xa5]
+
+    e_and_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xaf]
+
+    e_and_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xbf]
+
+    e_and_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xaa]
+
+    e_and_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xa0]
+
+    e_and_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x00,0xa0]
+
+    e_and_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x20,0xa5]
+
+    e_and_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x51,0xaf]
+
+    e_and_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x71,0xbf]
+
+    e_and_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xaa]
+
+    e_and_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x00,0xa0]
+
+    e_and_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x20,0xa5]
+
+    e_and_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x51,0xaf]
+
+    e_and_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x71,0xbf]
+
+    e_and_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x10,0xaa]
+
+    e_and_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x00,0xa0]
+
+    e_and_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x20,0xa5]
+
+    e_and_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x51,0xaf]
+
+    e_and_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x71,0xbf]
+
+    e_and_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x10,0xaa]
+
+    e_and_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x00,0xa0]
+
+    e_and_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x00,0xa0]
+
+    e_and_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x20,0xa5]
+
+    e_and_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x51,0xaf]
+
+    e_and_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x71,0xbf]
+
+    e_and_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xaa]
+
+    e_and_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x00,0xa0]
+
+    e_and_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x20,0xa5]
+
+    e_and_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x51,0xaf]
+
+    e_and_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x71,0xbf]
+
+    e_and_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x10,0xaa]
+
+    e_and_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x00,0xa0]
+
+    e_and_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x20,0xa5]
+
+    e_and_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x51,0xaf]
+
+    e_and_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x71,0xbf]
+
+    e_and_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x10,0xaa]
+
+    e_and_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x00,0xa0]
+
+    e_andn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xa0]
+
+    e_andn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xa5]
+
+    e_andn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xaf]
+
+    e_andn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xbf]
+
+    e_andn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xaa]
+
+    e_andn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xa0]
+
+    e_andn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xa5]
+
+    e_andn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xaf]
+
+    e_andn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xbf]
+
+    e_andn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xaa]
+
+    e_andn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xa0]
+
+    e_andn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xa5]
+
+    e_andn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xaf]
+
+    e_andn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xbf]
+
+    e_andn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xaa]
+
+    e_andn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xa0]
+
+    e_andn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xa0]
+
+    e_andn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xa5]
+
+    e_andn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xaf]
+
+    e_andn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xbf]
+
+    e_andn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xaa]
+
+    e_andn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xa0]
+
+    e_andn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xa5]
+
+    e_andn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xaf]
+
+    e_andn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xbf]
+
+    e_andn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xaa]
+
+    e_andn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xa0]
+
+    e_andn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xa5]
+
+    e_andn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xaf]
+
+    e_andn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xbf]
+
+    e_andn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xaa]
+
+    e_andn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xa0]
+
+    e_andn_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x08,0xa0]
+
+    e_andn_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x28,0xa5]
+
+    e_andn_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x59,0xaf]
+
+    e_andn_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x79,0xbf]
+
+    e_andn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xaa]
+
+    e_andn_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x08,0xa0]
+
+    e_andn_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x28,0xa5]
+
+    e_andn_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x59,0xaf]
+
+    e_andn_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x79,0xbf]
+
+    e_andn_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x18,0xaa]
+
+    e_andn_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x08,0xa0]
+
+    e_andn_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x28,0xa5]
+
+    e_andn_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x59,0xaf]
+
+    e_andn_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x79,0xbf]
+
+    e_andn_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x18,0xaa]
+
+    e_andn_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x08,0xa0]
+
+    e_andn_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x08,0xa0]
+
+    e_andn_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x28,0xa5]
+
+    e_andn_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x59,0xaf]
+
+    e_andn_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x79,0xbf]
+
+    e_andn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xaa]
+
+    e_andn_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x08,0xa0]
+
+    e_andn_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x28,0xa5]
+
+    e_andn_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x59,0xaf]
+
+    e_andn_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x79,0xbf]
+
+    e_andn_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x18,0xaa]
+
+    e_andn_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x08,0xa0]
+
+    e_andn_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x28,0xa5]
+
+    e_andn_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x59,0xaf]
+
+    e_andn_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x79,0xbf]
+
+    e_andn_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x18,0xaa]
+
+    e_andn_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x08,0xa0]
+
+    e_and_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xe0]
+
+    e_and_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xe5]
+
+    e_and_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xef]
+
+    e_and_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xff]
+
+    e_and_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xea]
+
+    e_and_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xe0]
+
+    e_and_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xe5]
+
+    e_and_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xef]
+
+    e_and_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xff]
+
+    e_and_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xea]
+
+    e_and_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xe0]
+
+    e_and_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x20,0xe5]
+
+    e_and_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x51,0xef]
+
+    e_and_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x71,0xff]
+
+    e_and_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xea]
+
+    e_and_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x00,0xe0]
+
+    e_and_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xe0]
+
+    e_and_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xe5]
+
+    e_and_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xef]
+
+    e_and_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xff]
+
+    e_and_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xea]
+
+    e_and_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xe0]
+
+    e_and_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xe5]
+
+    e_and_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xef]
+
+    e_and_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xff]
+
+    e_and_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xea]
+
+    e_and_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xe0]
+
+    e_and_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x20,0xe5]
+
+    e_and_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x51,0xef]
+
+    e_and_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x71,0xff]
+
+    e_and_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xea]
+
+    e_and_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x00,0xe0]
+
+    e_and_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x00,0xe0]
+
+    e_and_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x20,0xe5]
+
+    e_and_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x51,0xef]
+
+    e_and_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x71,0xff]
+
+    e_and_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x10,0xea]
+
+    e_and_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x00,0xe0]
+
+    e_and_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x20,0xe5]
+
+    e_and_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x51,0xef]
+
+    e_and_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x71,0xff]
+
+    e_and_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x10,0xea]
+
+    e_and_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x00,0xe0]
+
+    e_and_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x20,0xe5]
+
+    e_and_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x51,0xef]
+
+    e_and_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x71,0xff]
+
+    e_and_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x10,0xea]
+
+    e_and_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x00,0xe0]
+
+    e_and_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x00,0xe0]
+
+    e_and_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x20,0xe5]
+
+    e_and_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x51,0xef]
+
+    e_and_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x71,0xff]
+
+    e_and_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x10,0xea]
+
+    e_and_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x00,0xe0]
+
+    e_and_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x20,0xe5]
+
+    e_and_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x51,0xef]
+
+    e_and_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x71,0xff]
+
+    e_and_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x10,0xea]
+
+    e_and_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x00,0xe0]
+
+    e_and_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x20,0xe5]
+
+    e_and_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x51,0xef]
+
+    e_and_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x71,0xff]
+
+    e_and_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x10,0xea]
+
+    e_and_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x00,0xe0]
+
+    e_andn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xe0]
+
+    e_andn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xe5]
+
+    e_andn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xef]
+
+    e_andn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xff]
+
+    e_andn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xea]
+
+    e_andn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xe0]
+
+    e_andn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xe5]
+
+    e_andn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xef]
+
+    e_andn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xff]
+
+    e_andn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xea]
+
+    e_andn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xe0]
+
+    e_andn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x88,0x28,0xe5]
+
+    e_andn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x54,0x59,0xef]
+
+    e_andn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdc,0x79,0xff]
+
+    e_andn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xea]
+
+    e_andn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x00,0x08,0xe0]
+
+    e_andn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xe0]
+
+    e_andn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xe5]
+
+    e_andn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xef]
+
+    e_andn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xff]
+
+    e_andn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xea]
+
+    e_andn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xe0]
+
+    e_andn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xe5]
+
+    e_andn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xef]
+
+    e_andn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xff]
+
+    e_andn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xea]
+
+    e_andn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xe0]
+
+    e_andn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0d,0x8a,0x28,0xe5]
+
+    e_andn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0d,0x56,0x59,0xef]
+
+    e_andn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xde,0x79,0xff]
+
+    e_andn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xea]
+
+    e_andn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0d,0x02,0x08,0xe0]
+
+    e_andn_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x00,0x08,0xe0]
+
+    e_andn_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x88,0x28,0xe5]
+
+    e_andn_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x54,0x59,0xef]
+
+    e_andn_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xdc,0x79,0xff]
+
+    e_andn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x44,0x18,0xea]
+
+    e_andn_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x00,0x08,0xe0]
+
+    e_andn_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x88,0x28,0xe5]
+
+    e_andn_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x54,0x59,0xef]
+
+    e_andn_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdd,0x79,0xff]
+
+    e_andn_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x45,0x18,0xea]
+
+    e_andn_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x01,0x08,0xe0]
+
+    e_andn_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x89,0x28,0xe5]
+
+    e_andn_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x55,0x59,0xef]
+
+    e_andn_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdd,0x79,0xff]
+
+    e_andn_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x45,0x18,0xea]
+
+    e_andn_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x01,0x08,0xe0]
+
+    e_andn_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2d,0x02,0x08,0xe0]
+
+    e_andn_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4d,0x8a,0x28,0xe5]
+
+    e_andn_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6d,0x56,0x59,0xef]
+
+    e_andn_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8d,0xde,0x79,0xff]
+
+    e_andn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0d,0x46,0x18,0xea]
+
+    e_andn_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xad,0x02,0x08,0xe0]
+
+    e_andn_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xcd,0x8a,0x28,0xe5]
+
+    e_andn_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xed,0x56,0x59,0xef]
+
+    e_andn_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0d,0xdf,0x79,0xff]
+
+    e_andn_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2d,0x47,0x18,0xea]
+
+    e_andn_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4d,0x03,0x08,0xe0]
+
+    e_andn_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6d,0x8b,0x28,0xe5]
+
+    e_andn_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8d,0x57,0x59,0xef]
+
+    e_andn_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xad,0xdf,0x79,0xff]
+
+    e_andn_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xcd,0x47,0x18,0xea]
+
+    e_andn_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xed,0x03,0x08,0xe0]
+
+    e_xor r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x00,0x00]
+
+    e_xor r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x20,0x00]
+
+    e_xor r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x51,0x00]
+
+    e_xor r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x71,0x00]
+
+    e_xor r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x10,0x00]
+
+    e_xor r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x00,0x00]
+
+    e_xor r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x20,0x00]
+
+    e_xor r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x51,0x00]
+
+    e_xor r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x71,0x00]
+
+    e_xor r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x10,0x00]
+
+    e_xor r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x00,0x00]
+
+    e_xor r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x20,0x00]
+
+    e_xor r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x51,0x00]
+
+    e_xor r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x71,0x00]
+
+    e_xor r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x10,0x00]
+
+    e_xor r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x00,0x00]
+
+    e_xors r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x00,0x00]
+
+    e_xors r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x20,0x00]
+
+    e_xors r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x51,0x00]
+
+    e_xors r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x71,0x00]
+
+    e_xors r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x10,0x00]
+
+    e_xors r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x00,0x00]
+
+    e_xors r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x20,0x00]
+
+    e_xors r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x51,0x00]
+
+    e_xors r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x71,0x00]
+
+    e_xors r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x10,0x00]
+
+    e_xors r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x00,0x00]
+
+    e_xors r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x20,0x00]
+
+    e_xors r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x51,0x00]
+
+    e_xors r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x71,0x00]
+
+    e_xors r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x10,0x00]
+
+    e_xors r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x00,0x00]
+
+    e_xor_ze r0, r0, r0
+# CHECK: encoding: [0x2e,0x00,0x00,0x00]
+
+    e_xor_nz r2, r2, r2
+# CHECK: encoding: [0x4e,0x88,0x20,0x00]
+
+    e_xor_po r5, r5, r5
+# CHECK: encoding: [0x6e,0x54,0x51,0x00]
+
+    e_xor_ne r7, r7, r7
+# CHECK: encoding: [0x8e,0xdc,0x71,0x00]
+
+    e_xor r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x10,0x00]
+
+    e_xor_az r0, r0, r0
+# CHECK: encoding: [0xae,0x00,0x00,0x00]
+
+    e_xor_zb r2, r2, r2
+# CHECK: encoding: [0xce,0x88,0x20,0x00]
+
+    e_xor_ca r5, r5, r5
+# CHECK: encoding: [0xee,0x54,0x51,0x00]
+
+    e_xor_nc r7, r7, r7
+# CHECK: encoding: [0x0e,0xdd,0x71,0x00]
+
+    e_xor_cz r1, r1, r1
+# CHECK: encoding: [0x2e,0x45,0x10,0x00]
+
+    e_xor_spo r0, r0, r0
+# CHECK: encoding: [0x4e,0x01,0x00,0x00]
+
+    e_xor_sne r2, r2, r2
+# CHECK: encoding: [0x6e,0x89,0x20,0x00]
+
+    e_xor_nbs r5, r5, r5
+# CHECK: encoding: [0x8e,0x55,0x51,0x00]
+
+    e_xor_nex r7, r7, r7
+# CHECK: encoding: [0xae,0xdd,0x71,0x00]
+
+    e_xor_bs r1, r1, r1
+# CHECK: encoding: [0xce,0x45,0x10,0x00]
+
+    e_xor_ex r0, r0, r0
+# CHECK: encoding: [0xee,0x01,0x00,0x00]
+
+    e_xors_ze r0, r0, r0
+# CHECK: encoding: [0x2e,0x02,0x00,0x00]
+
+    e_xors_nz r2, r2, r2
+# CHECK: encoding: [0x4e,0x8a,0x20,0x00]
+
+    e_xors_po r5, r5, r5
+# CHECK: encoding: [0x6e,0x56,0x51,0x00]
+
+    e_xors_ne r7, r7, r7
+# CHECK: encoding: [0x8e,0xde,0x71,0x00]
+
+    e_xors r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x10,0x00]
+
+    e_xors_az r0, r0, r0
+# CHECK: encoding: [0xae,0x02,0x00,0x00]
+
+    e_xors_zb r2, r2, r2
+# CHECK: encoding: [0xce,0x8a,0x20,0x00]
+
+    e_xors_ca r5, r5, r5
+# CHECK: encoding: [0xee,0x56,0x51,0x00]
+
+    e_xors_nc r7, r7, r7
+# CHECK: encoding: [0x0e,0xdf,0x71,0x00]
+
+    e_xors_cz r1, r1, r1
+# CHECK: encoding: [0x2e,0x47,0x10,0x00]
+
+    e_xors_spo r0, r0, r0
+# CHECK: encoding: [0x4e,0x03,0x00,0x00]
+
+    e_xors_sne r2, r2, r2
+# CHECK: encoding: [0x6e,0x8b,0x20,0x00]
+
+    e_xors_nbs r5, r5, r5
+# CHECK: encoding: [0x8e,0x57,0x51,0x00]
+
+    e_xors_nex r7, r7, r7
+# CHECK: encoding: [0xae,0xdf,0x71,0x00]
+
+    e_xors_bs r1, r1, r1
+# CHECK: encoding: [0xce,0x47,0x10,0x00]
+
+    e_xors_ex r0, r0, r0
+# CHECK: encoding: [0xee,0x03,0x00,0x00]
+
+    e_xorn r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x08,0x00]
+
+    e_xorn r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x28,0x00]
+
+    e_xorn r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x59,0x00]
+
+    e_xorn r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x79,0x00]
+
+    e_xorn r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x18,0x00]
+
+    e_xorn r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x08,0x00]
+
+    e_xorn r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x28,0x00]
+
+    e_xorn r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x59,0x00]
+
+    e_xorn r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x79,0x00]
+
+    e_xorn r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x18,0x00]
+
+    e_xorn r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x08,0x00]
+
+    e_xorn r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x28,0x00]
+
+    e_xorn r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x59,0x00]
+
+    e_xorn r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x79,0x00]
+
+    e_xorn r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x18,0x00]
+
+    e_xorn r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x08,0x00]
+
+    e_xorns r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x08,0x00]
+
+    e_xorns r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x28,0x00]
+
+    e_xorns r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x59,0x00]
+
+    e_xorns r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x79,0x00]
+
+    e_xorns r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x18,0x00]
+
+    e_xorns r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x08,0x00]
+
+    e_xorns r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x28,0x00]
+
+    e_xorns r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x59,0x00]
+
+    e_xorns r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x79,0x00]
+
+    e_xorns r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x18,0x00]
+
+    e_xorns r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x08,0x00]
+
+    e_xorns r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x28,0x00]
+
+    e_xorns r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x59,0x00]
+
+    e_xorns r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x79,0x00]
+
+    e_xorns r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x18,0x00]
+
+    e_xorns r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x08,0x00]
+
+    e_xorn_ze r0, r0, r0
+# CHECK: encoding: [0x2e,0x00,0x08,0x00]
+
+    e_xorn_nz r2, r2, r2
+# CHECK: encoding: [0x4e,0x88,0x28,0x00]
+
+    e_xorn_po r5, r5, r5
+# CHECK: encoding: [0x6e,0x54,0x59,0x00]
+
+    e_xorn_ne r7, r7, r7
+# CHECK: encoding: [0x8e,0xdc,0x79,0x00]
+
+    e_xorn r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x18,0x00]
+
+    e_xorn_az r0, r0, r0
+# CHECK: encoding: [0xae,0x00,0x08,0x00]
+
+    e_xorn_zb r2, r2, r2
+# CHECK: encoding: [0xce,0x88,0x28,0x00]
+
+    e_xorn_ca r5, r5, r5
+# CHECK: encoding: [0xee,0x54,0x59,0x00]
+
+    e_xorn_nc r7, r7, r7
+# CHECK: encoding: [0x0e,0xdd,0x79,0x00]
+
+    e_xorn_cz r1, r1, r1
+# CHECK: encoding: [0x2e,0x45,0x18,0x00]
+
+    e_xorn_spo r0, r0, r0
+# CHECK: encoding: [0x4e,0x01,0x08,0x00]
+
+    e_xorn_sne r2, r2, r2
+# CHECK: encoding: [0x6e,0x89,0x28,0x00]
+
+    e_xorn_nbs r5, r5, r5
+# CHECK: encoding: [0x8e,0x55,0x59,0x00]
+
+    e_xorn_nex r7, r7, r7
+# CHECK: encoding: [0xae,0xdd,0x79,0x00]
+
+    e_xorn_bs r1, r1, r1
+# CHECK: encoding: [0xce,0x45,0x18,0x00]
+
+    e_xorn_ex r0, r0, r0
+# CHECK: encoding: [0xee,0x01,0x08,0x00]
+
+    e_xorns_ze r0, r0, r0
+# CHECK: encoding: [0x2e,0x02,0x08,0x00]
+
+    e_xorns_nz r2, r2, r2
+# CHECK: encoding: [0x4e,0x8a,0x28,0x00]
+
+    e_xorns_po r5, r5, r5
+# CHECK: encoding: [0x6e,0x56,0x59,0x00]
+
+    e_xorns_ne r7, r7, r7
+# CHECK: encoding: [0x8e,0xde,0x79,0x00]
+
+    e_xorns r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x18,0x00]
+
+    e_xorns_az r0, r0, r0
+# CHECK: encoding: [0xae,0x02,0x08,0x00]
+
+    e_xorns_zb r2, r2, r2
+# CHECK: encoding: [0xce,0x8a,0x28,0x00]
+
+    e_xorns_ca r5, r5, r5
+# CHECK: encoding: [0xee,0x56,0x59,0x00]
+
+    e_xorns_nc r7, r7, r7
+# CHECK: encoding: [0x0e,0xdf,0x79,0x00]
+
+    e_xorns_cz r1, r1, r1
+# CHECK: encoding: [0x2e,0x47,0x18,0x00]
+
+    e_xorns_spo r0, r0, r0
+# CHECK: encoding: [0x4e,0x03,0x08,0x00]
+
+    e_xorns_sne r2, r2, r2
+# CHECK: encoding: [0x6e,0x8b,0x28,0x00]
+
+    e_xorns_nbs r5, r5, r5
+# CHECK: encoding: [0x8e,0x57,0x59,0x00]
+
+    e_xorns_nex r7, r7, r7
+# CHECK: encoding: [0xae,0xdf,0x79,0x00]
+
+    e_xorns_bs r1, r1, r1
+# CHECK: encoding: [0xce,0x47,0x18,0x00]
+
+    e_xorns_ex r0, r0, r0
+# CHECK: encoding: [0xee,0x03,0x08,0x00]
+
+    e_xor_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x00,0xf4,0x3f]
+
+    e_xor_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x88,0x14,0xc0]
+
+    e_xor_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x54,0xf5,0x1f]
+
+    e_xor_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdc,0x15,0xe0]
+
+    e_xor_imm r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x44,0x14,0x00]
+
+    e_xor_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x00,0xf4,0x3f]
+
+    e_xor_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x88,0x14,0xc0]
+
+    e_xor_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x54,0xf5,0x1f]
+
+    e_xor_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdc,0x15,0xe0]
+
+    e_xor_imm r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x44,0x14,0x00]
+
+    e_xor_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x00,0xf4,0x3f]
+
+    e_xor_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x88,0x14,0xc0]
+
+    e_xor_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x54,0xf5,0x1f]
+
+    e_xor_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdc,0x15,0xe0]
+
+    e_xor_imm r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x44,0x14,0x00]
+
+    e_xor_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x00,0xf4,0x3f]
+
+    e_xor_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x02,0xf4,0x3f]
+
+    e_xor_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x8a,0x14,0xc0]
+
+    e_xor_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x56,0xf5,0x1f]
+
+    e_xor_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xde,0x15,0xe0]
+
+    e_xor_imms r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x46,0x14,0x00]
+
+    e_xor_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x02,0xf4,0x3f]
+
+    e_xor_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x8a,0x14,0xc0]
+
+    e_xor_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x56,0xf5,0x1f]
+
+    e_xor_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xde,0x15,0xe0]
+
+    e_xor_imms r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x46,0x14,0x00]
+
+    e_xor_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x02,0xf4,0x3f]
+
+    e_xor_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x8a,0x14,0xc0]
+
+    e_xor_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x56,0xf5,0x1f]
+
+    e_xor_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xde,0x15,0xe0]
+
+    e_xor_imms r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x46,0x14,0x00]
+
+    e_xor_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x02,0xf4,0x3f]
+
+    e_xor_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2e,0x00,0xf4,0x3f]
+
+    e_xor_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4e,0x88,0x14,0xc0]
+
+    e_xor_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6e,0x54,0xf5,0x1f]
+
+    e_xor_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8e,0xdc,0x15,0xe0]
+
+    e_xor_imm r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x44,0x14,0x00]
+
+    e_xor_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xae,0x00,0xf4,0x3f]
+
+    e_xor_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xce,0x88,0x14,0xc0]
+
+    e_xor_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xee,0x54,0xf5,0x1f]
+
+    e_xor_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdd,0x15,0xe0]
+
+    e_xor_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x2e,0x45,0x14,0x00]
+
+    e_xor_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4e,0x01,0xf4,0x3f]
+
+    e_xor_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6e,0x89,0x14,0xc0]
+
+    e_xor_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8e,0x55,0xf5,0x1f]
+
+    e_xor_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xae,0xdd,0x15,0xe0]
+
+    e_xor_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xce,0x45,0x14,0x00]
+
+    e_xor_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xee,0x01,0xf4,0x3f]
+
+    e_xor_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2e,0x02,0xf4,0x3f]
+
+    e_xor_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4e,0x8a,0x14,0xc0]
+
+    e_xor_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6e,0x56,0xf5,0x1f]
+
+    e_xor_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8e,0xde,0x15,0xe0]
+
+    e_xor_imms r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x46,0x14,0x00]
+
+    e_xor_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xae,0x02,0xf4,0x3f]
+
+    e_xor_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xce,0x8a,0x14,0xc0]
+
+    e_xor_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xee,0x56,0xf5,0x1f]
+
+    e_xor_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdf,0x15,0xe0]
+
+    e_xor_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x2e,0x47,0x14,0x00]
+
+    e_xor_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4e,0x03,0xf4,0x3f]
+
+    e_xor_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6e,0x8b,0x14,0xc0]
+
+    e_xor_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8e,0x57,0xf5,0x1f]
+
+    e_xor_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xae,0xdf,0x15,0xe0]
+
+    e_xor_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xce,0x47,0x14,0x00]
+
+    e_xor_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xee,0x03,0xf4,0x3f]
+
+    e_xorn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x00,0xfc,0x3f]
+
+    e_xorn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x88,0x1c,0xc0]
+
+    e_xorn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x54,0xfd,0x1f]
+
+    e_xorn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdc,0x1d,0xe0]
+
+    e_xorn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x44,0x1c,0x00]
+
+    e_xorn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x00,0xfc,0x3f]
+
+    e_xorn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x88,0x1c,0xc0]
+
+    e_xorn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x54,0xfd,0x1f]
+
+    e_xorn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdc,0x1d,0xe0]
+
+    e_xorn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x44,0x1c,0x00]
+
+    e_xorn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x00,0xfc,0x3f]
+
+    e_xorn_imm r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x88,0x1c,0xc0]
+
+    e_xorn_imm r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x54,0xfd,0x1f]
+
+    e_xorn_imm r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdc,0x1d,0xe0]
+
+    e_xorn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x44,0x1c,0x00]
+
+    e_xorn_imm r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x00,0xfc,0x3f]
+
+    e_xorn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x02,0xfc,0x3f]
+
+    e_xorn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x8a,0x1c,0xc0]
+
+    e_xorn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x56,0xfd,0x1f]
+
+    e_xorn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xde,0x1d,0xe0]
+
+    e_xorn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x46,0x1c,0x00]
+
+    e_xorn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x02,0xfc,0x3f]
+
+    e_xorn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x8a,0x1c,0xc0]
+
+    e_xorn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x56,0xfd,0x1f]
+
+    e_xorn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xde,0x1d,0xe0]
+
+    e_xorn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x46,0x1c,0x00]
+
+    e_xorn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x02,0xfc,0x3f]
+
+    e_xorn_imms r2, r2, -0x3ff
+# CHECK: encoding: [0x0e,0x8a,0x1c,0xc0]
+
+    e_xorn_imms r5, r5, 0x1ff
+# CHECK: encoding: [0x0e,0x56,0xfd,0x1f]
+
+    e_xorn_imms r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xde,0x1d,0xe0]
+
+    e_xorn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x46,0x1c,0x00]
+
+    e_xorn_imms r0, r0, 0x3ff
+# CHECK: encoding: [0x0e,0x02,0xfc,0x3f]
+
+    e_xorn_imm_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2e,0x00,0xfc,0x3f]
+
+    e_xorn_imm_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4e,0x88,0x1c,0xc0]
+
+    e_xorn_imm_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6e,0x54,0xfd,0x1f]
+
+    e_xorn_imm_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8e,0xdc,0x1d,0xe0]
+
+    e_xorn_imm r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x44,0x1c,0x00]
+
+    e_xorn_imm_az r0, r0, 0x3ff
+# CHECK: encoding: [0xae,0x00,0xfc,0x3f]
+
+    e_xorn_imm_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xce,0x88,0x1c,0xc0]
+
+    e_xorn_imm_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xee,0x54,0xfd,0x1f]
+
+    e_xorn_imm_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdd,0x1d,0xe0]
+
+    e_xorn_imm_cz r1, r1, 0x1
+# CHECK: encoding: [0x2e,0x45,0x1c,0x00]
+
+    e_xorn_imm_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4e,0x01,0xfc,0x3f]
+
+    e_xorn_imm_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6e,0x89,0x1c,0xc0]
+
+    e_xorn_imm_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8e,0x55,0xfd,0x1f]
+
+    e_xorn_imm_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xae,0xdd,0x1d,0xe0]
+
+    e_xorn_imm_bs r1, r1, 0x1
+# CHECK: encoding: [0xce,0x45,0x1c,0x00]
+
+    e_xorn_imm_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xee,0x01,0xfc,0x3f]
+
+    e_xorn_imms_ze r0, r0, 0x3ff
+# CHECK: encoding: [0x2e,0x02,0xfc,0x3f]
+
+    e_xorn_imms_nz r2, r2, -0x3ff
+# CHECK: encoding: [0x4e,0x8a,0x1c,0xc0]
+
+    e_xorn_imms_po r5, r5, 0x1ff
+# CHECK: encoding: [0x6e,0x56,0xfd,0x1f]
+
+    e_xorn_imms_ne r7, r7, -0x1ff
+# CHECK: encoding: [0x8e,0xde,0x1d,0xe0]
+
+    e_xorn_imms r1, r1, 0x1
+# CHECK: encoding: [0x0e,0x46,0x1c,0x00]
+
+    e_xorn_imms_az r0, r0, 0x3ff
+# CHECK: encoding: [0xae,0x02,0xfc,0x3f]
+
+    e_xorn_imms_zb r2, r2, -0x3ff
+# CHECK: encoding: [0xce,0x8a,0x1c,0xc0]
+
+    e_xorn_imms_ca r5, r5, 0x1ff
+# CHECK: encoding: [0xee,0x56,0xfd,0x1f]
+
+    e_xorn_imms_nc r7, r7, -0x1ff
+# CHECK: encoding: [0x0e,0xdf,0x1d,0xe0]
+
+    e_xorn_imms_cz r1, r1, 0x1
+# CHECK: encoding: [0x2e,0x47,0x1c,0x00]
+
+    e_xorn_imms_spo r0, r0, 0x3ff
+# CHECK: encoding: [0x4e,0x03,0xfc,0x3f]
+
+    e_xorn_imms_sne r2, r2, -0x3ff
+# CHECK: encoding: [0x6e,0x8b,0x1c,0xc0]
+
+    e_xorn_imms_nbs r5, r5, 0x1ff
+# CHECK: encoding: [0x8e,0x57,0xfd,0x1f]
+
+    e_xorn_imms_nex r7, r7, -0x1ff
+# CHECK: encoding: [0xae,0xdf,0x1d,0xe0]
+
+    e_xorn_imms_bs r1, r1, 0x1
+# CHECK: encoding: [0xce,0x47,0x1c,0x00]
+
+    e_xorn_imms_ex r0, r0, 0x3ff
+# CHECK: encoding: [0xee,0x03,0xfc,0x3f]
+
+    e_xor_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x00]
+
+    e_xor_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x05]
+
+    e_xor_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x0f]
+
+    e_xor_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x1f]
+
+    e_xor_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x0a]
+
+    e_xor_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x00]
+
+    e_xor_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x05]
+
+    e_xor_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x0f]
+
+    e_xor_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x1f]
+
+    e_xor_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x0a]
+
+    e_xor_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x00]
+
+    e_xor_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x05]
+
+    e_xor_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x0f]
+
+    e_xor_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x1f]
+
+    e_xor_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x0a]
+
+    e_xor_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x00]
+
+    e_xor_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x00]
+
+    e_xor_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x05]
+
+    e_xor_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x0f]
+
+    e_xor_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x1f]
+
+    e_xor_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x0a]
+
+    e_xor_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x00]
+
+    e_xor_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x05]
+
+    e_xor_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x0f]
+
+    e_xor_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x1f]
+
+    e_xor_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x0a]
+
+    e_xor_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x00]
+
+    e_xor_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x05]
+
+    e_xor_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x0f]
+
+    e_xor_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x1f]
+
+    e_xor_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x0a]
+
+    e_xor_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x00]
+
+    e_xor_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x00,0x00]
+
+    e_xor_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x20,0x05]
+
+    e_xor_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x51,0x0f]
+
+    e_xor_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x71,0x1f]
+
+    e_xor_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x0a]
+
+    e_xor_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x00,0x00]
+
+    e_xor_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x20,0x05]
+
+    e_xor_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x51,0x0f]
+
+    e_xor_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x71,0x1f]
+
+    e_xor_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x10,0x0a]
+
+    e_xor_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x00,0x00]
+
+    e_xor_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x20,0x05]
+
+    e_xor_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x51,0x0f]
+
+    e_xor_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x71,0x1f]
+
+    e_xor_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x10,0x0a]
+
+    e_xor_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x00,0x00]
+
+    e_xor_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x00,0x00]
+
+    e_xor_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x20,0x05]
+
+    e_xor_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x51,0x0f]
+
+    e_xor_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x71,0x1f]
+
+    e_xor_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x0a]
+
+    e_xor_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x00,0x00]
+
+    e_xor_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x20,0x05]
+
+    e_xor_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x51,0x0f]
+
+    e_xor_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x71,0x1f]
+
+    e_xor_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x10,0x0a]
+
+    e_xor_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x00,0x00]
+
+    e_xor_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x20,0x05]
+
+    e_xor_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x51,0x0f]
+
+    e_xor_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x71,0x1f]
+
+    e_xor_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x10,0x0a]
+
+    e_xor_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x00,0x00]
+
+    e_xorn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x00]
+
+    e_xorn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x05]
+
+    e_xorn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x0f]
+
+    e_xorn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x1f]
+
+    e_xorn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x0a]
+
+    e_xorn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x00]
+
+    e_xorn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x05]
+
+    e_xorn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x0f]
+
+    e_xorn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x1f]
+
+    e_xorn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x0a]
+
+    e_xorn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x00]
+
+    e_xorn_lsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x05]
+
+    e_xorn_lsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x0f]
+
+    e_xorn_lsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x1f]
+
+    e_xorn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x0a]
+
+    e_xorn_lsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x00]
+
+    e_xorn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x00]
+
+    e_xorn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x05]
+
+    e_xorn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x0f]
+
+    e_xorn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x1f]
+
+    e_xorn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x0a]
+
+    e_xorn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x00]
+
+    e_xorn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x05]
+
+    e_xorn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x0f]
+
+    e_xorn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x1f]
+
+    e_xorn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x0a]
+
+    e_xorn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x00]
+
+    e_xorn_lsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x05]
+
+    e_xorn_lsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x0f]
+
+    e_xorn_lsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x1f]
+
+    e_xorn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x0a]
+
+    e_xorn_lsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x00]
+
+    e_xorn_lsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x08,0x00]
+
+    e_xorn_lsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x28,0x05]
+
+    e_xorn_lsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x59,0x0f]
+
+    e_xorn_lsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x79,0x1f]
+
+    e_xorn_lsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x0a]
+
+    e_xorn_lsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x08,0x00]
+
+    e_xorn_lsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x28,0x05]
+
+    e_xorn_lsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x59,0x0f]
+
+    e_xorn_lsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x79,0x1f]
+
+    e_xorn_lsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x18,0x0a]
+
+    e_xorn_lsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x08,0x00]
+
+    e_xorn_lsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x28,0x05]
+
+    e_xorn_lsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x59,0x0f]
+
+    e_xorn_lsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x79,0x1f]
+
+    e_xorn_lsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x18,0x0a]
+
+    e_xorn_lsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x08,0x00]
+
+    e_xorn_lsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x08,0x00]
+
+    e_xorn_lsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x28,0x05]
+
+    e_xorn_lsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x59,0x0f]
+
+    e_xorn_lsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x79,0x1f]
+
+    e_xorn_lsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x0a]
+
+    e_xorn_lsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x08,0x00]
+
+    e_xorn_lsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x28,0x05]
+
+    e_xorn_lsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x59,0x0f]
+
+    e_xorn_lsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x79,0x1f]
+
+    e_xorn_lsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x18,0x0a]
+
+    e_xorn_lsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x08,0x00]
+
+    e_xorn_lsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x28,0x05]
+
+    e_xorn_lsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x59,0x0f]
+
+    e_xorn_lsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x79,0x1f]
+
+    e_xorn_lsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x18,0x0a]
+
+    e_xorn_lsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x08,0x00]
+
+    e_xor_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x40]
+
+    e_xor_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x45]
+
+    e_xor_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x4f]
+
+    e_xor_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x5f]
+
+    e_xor_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x4a]
+
+    e_xor_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x40]
+
+    e_xor_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x45]
+
+    e_xor_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x4f]
+
+    e_xor_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x5f]
+
+    e_xor_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x4a]
+
+    e_xor_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x40]
+
+    e_xor_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x45]
+
+    e_xor_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x4f]
+
+    e_xor_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x5f]
+
+    e_xor_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x4a]
+
+    e_xor_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x40]
+
+    e_xor_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x40]
+
+    e_xor_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x45]
+
+    e_xor_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x4f]
+
+    e_xor_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x5f]
+
+    e_xor_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x4a]
+
+    e_xor_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x40]
+
+    e_xor_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x45]
+
+    e_xor_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x4f]
+
+    e_xor_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x5f]
+
+    e_xor_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x4a]
+
+    e_xor_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x40]
+
+    e_xor_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x45]
+
+    e_xor_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x4f]
+
+    e_xor_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x5f]
+
+    e_xor_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x4a]
+
+    e_xor_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x40]
+
+    e_xor_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x00,0x40]
+
+    e_xor_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x20,0x45]
+
+    e_xor_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x51,0x4f]
+
+    e_xor_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x71,0x5f]
+
+    e_xor_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x4a]
+
+    e_xor_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x00,0x40]
+
+    e_xor_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x20,0x45]
+
+    e_xor_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x51,0x4f]
+
+    e_xor_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x71,0x5f]
+
+    e_xor_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x10,0x4a]
+
+    e_xor_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x00,0x40]
+
+    e_xor_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x20,0x45]
+
+    e_xor_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x51,0x4f]
+
+    e_xor_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x71,0x5f]
+
+    e_xor_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x10,0x4a]
+
+    e_xor_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x00,0x40]
+
+    e_xor_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x00,0x40]
+
+    e_xor_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x20,0x45]
+
+    e_xor_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x51,0x4f]
+
+    e_xor_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x71,0x5f]
+
+    e_xor_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x4a]
+
+    e_xor_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x00,0x40]
+
+    e_xor_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x20,0x45]
+
+    e_xor_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x51,0x4f]
+
+    e_xor_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x71,0x5f]
+
+    e_xor_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x10,0x4a]
+
+    e_xor_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x00,0x40]
+
+    e_xor_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x20,0x45]
+
+    e_xor_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x51,0x4f]
+
+    e_xor_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x71,0x5f]
+
+    e_xor_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x10,0x4a]
+
+    e_xor_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x00,0x40]
+
+    e_xorn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x40]
+
+    e_xorn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x45]
+
+    e_xorn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x4f]
+
+    e_xorn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x5f]
+
+    e_xorn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x4a]
+
+    e_xorn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x40]
+
+    e_xorn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x45]
+
+    e_xorn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x4f]
+
+    e_xorn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x5f]
+
+    e_xorn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x4a]
+
+    e_xorn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x40]
+
+    e_xorn_lsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x45]
+
+    e_xorn_lsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x4f]
+
+    e_xorn_lsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x5f]
+
+    e_xorn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x4a]
+
+    e_xorn_lsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x40]
+
+    e_xorn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x40]
+
+    e_xorn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x45]
+
+    e_xorn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x4f]
+
+    e_xorn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x5f]
+
+    e_xorn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x4a]
+
+    e_xorn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x40]
+
+    e_xorn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x45]
+
+    e_xorn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x4f]
+
+    e_xorn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x5f]
+
+    e_xorn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x4a]
+
+    e_xorn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x40]
+
+    e_xorn_lsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x45]
+
+    e_xorn_lsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x4f]
+
+    e_xorn_lsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x5f]
+
+    e_xorn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x4a]
+
+    e_xorn_lsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x40]
+
+    e_xorn_lsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x08,0x40]
+
+    e_xorn_lsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x28,0x45]
+
+    e_xorn_lsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x59,0x4f]
+
+    e_xorn_lsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x79,0x5f]
+
+    e_xorn_lsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x4a]
+
+    e_xorn_lsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x08,0x40]
+
+    e_xorn_lsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x28,0x45]
+
+    e_xorn_lsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x59,0x4f]
+
+    e_xorn_lsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x79,0x5f]
+
+    e_xorn_lsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x18,0x4a]
+
+    e_xorn_lsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x08,0x40]
+
+    e_xorn_lsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x28,0x45]
+
+    e_xorn_lsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x59,0x4f]
+
+    e_xorn_lsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x79,0x5f]
+
+    e_xorn_lsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x18,0x4a]
+
+    e_xorn_lsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x08,0x40]
+
+    e_xorn_lsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x08,0x40]
+
+    e_xorn_lsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x28,0x45]
+
+    e_xorn_lsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x59,0x4f]
+
+    e_xorn_lsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x79,0x5f]
+
+    e_xorn_lsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x4a]
+
+    e_xorn_lsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x08,0x40]
+
+    e_xorn_lsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x28,0x45]
+
+    e_xorn_lsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x59,0x4f]
+
+    e_xorn_lsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x79,0x5f]
+
+    e_xorn_lsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x18,0x4a]
+
+    e_xorn_lsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x08,0x40]
+
+    e_xorn_lsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x28,0x45]
+
+    e_xorn_lsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x59,0x4f]
+
+    e_xorn_lsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x79,0x5f]
+
+    e_xorn_lsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x18,0x4a]
+
+    e_xorn_lsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x08,0x40]
+
+    e_xor_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x20]
+
+    e_xor_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x25]
+
+    e_xor_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x2f]
+
+    e_xor_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x3f]
+
+    e_xor_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x2a]
+
+    e_xor_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x20]
+
+    e_xor_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x25]
+
+    e_xor_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x2f]
+
+    e_xor_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x3f]
+
+    e_xor_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x2a]
+
+    e_xor_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x20]
+
+    e_xor_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x25]
+
+    e_xor_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x2f]
+
+    e_xor_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x3f]
+
+    e_xor_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x2a]
+
+    e_xor_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x20]
+
+    e_xor_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x20]
+
+    e_xor_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x25]
+
+    e_xor_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x2f]
+
+    e_xor_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x3f]
+
+    e_xor_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x2a]
+
+    e_xor_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x20]
+
+    e_xor_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x25]
+
+    e_xor_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x2f]
+
+    e_xor_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x3f]
+
+    e_xor_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x2a]
+
+    e_xor_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x20]
+
+    e_xor_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x25]
+
+    e_xor_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x2f]
+
+    e_xor_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x3f]
+
+    e_xor_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x2a]
+
+    e_xor_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x20]
+
+    e_xor_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x00,0x20]
+
+    e_xor_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x20,0x25]
+
+    e_xor_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x51,0x2f]
+
+    e_xor_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x71,0x3f]
+
+    e_xor_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x2a]
+
+    e_xor_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x00,0x20]
+
+    e_xor_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x20,0x25]
+
+    e_xor_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x51,0x2f]
+
+    e_xor_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x71,0x3f]
+
+    e_xor_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x10,0x2a]
+
+    e_xor_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x00,0x20]
+
+    e_xor_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x20,0x25]
+
+    e_xor_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x51,0x2f]
+
+    e_xor_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x71,0x3f]
+
+    e_xor_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x10,0x2a]
+
+    e_xor_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x00,0x20]
+
+    e_xor_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x00,0x20]
+
+    e_xor_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x20,0x25]
+
+    e_xor_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x51,0x2f]
+
+    e_xor_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x71,0x3f]
+
+    e_xor_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x2a]
+
+    e_xor_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x00,0x20]
+
+    e_xor_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x20,0x25]
+
+    e_xor_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x51,0x2f]
+
+    e_xor_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x71,0x3f]
+
+    e_xor_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x10,0x2a]
+
+    e_xor_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x00,0x20]
+
+    e_xor_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x20,0x25]
+
+    e_xor_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x51,0x2f]
+
+    e_xor_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x71,0x3f]
+
+    e_xor_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x10,0x2a]
+
+    e_xor_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x00,0x20]
+
+    e_xorn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x20]
+
+    e_xorn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x25]
+
+    e_xorn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x2f]
+
+    e_xorn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x3f]
+
+    e_xorn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x2a]
+
+    e_xorn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x20]
+
+    e_xorn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x25]
+
+    e_xorn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x2f]
+
+    e_xorn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x3f]
+
+    e_xorn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x2a]
+
+    e_xorn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x20]
+
+    e_xorn_asr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x25]
+
+    e_xorn_asr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x2f]
+
+    e_xorn_asr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x3f]
+
+    e_xorn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x2a]
+
+    e_xorn_asr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x20]
+
+    e_xorn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x20]
+
+    e_xorn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x25]
+
+    e_xorn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x2f]
+
+    e_xorn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x3f]
+
+    e_xorn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x2a]
+
+    e_xorn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x20]
+
+    e_xorn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x25]
+
+    e_xorn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x2f]
+
+    e_xorn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x3f]
+
+    e_xorn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x2a]
+
+    e_xorn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x20]
+
+    e_xorn_asrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x25]
+
+    e_xorn_asrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x2f]
+
+    e_xorn_asrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x3f]
+
+    e_xorn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x2a]
+
+    e_xorn_asrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x20]
+
+    e_xorn_asr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x08,0x20]
+
+    e_xorn_asr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x28,0x25]
+
+    e_xorn_asr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x59,0x2f]
+
+    e_xorn_asr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x79,0x3f]
+
+    e_xorn_asr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x2a]
+
+    e_xorn_asr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x08,0x20]
+
+    e_xorn_asr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x28,0x25]
+
+    e_xorn_asr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x59,0x2f]
+
+    e_xorn_asr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x79,0x3f]
+
+    e_xorn_asr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x18,0x2a]
+
+    e_xorn_asr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x08,0x20]
+
+    e_xorn_asr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x28,0x25]
+
+    e_xorn_asr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x59,0x2f]
+
+    e_xorn_asr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x79,0x3f]
+
+    e_xorn_asr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x18,0x2a]
+
+    e_xorn_asr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x08,0x20]
+
+    e_xorn_asrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x08,0x20]
+
+    e_xorn_asrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x28,0x25]
+
+    e_xorn_asrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x59,0x2f]
+
+    e_xorn_asrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x79,0x3f]
+
+    e_xorn_asrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x2a]
+
+    e_xorn_asrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x08,0x20]
+
+    e_xorn_asrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x28,0x25]
+
+    e_xorn_asrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x59,0x2f]
+
+    e_xorn_asrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x79,0x3f]
+
+    e_xorn_asrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x18,0x2a]
+
+    e_xorn_asrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x08,0x20]
+
+    e_xorn_asrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x28,0x25]
+
+    e_xorn_asrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x59,0x2f]
+
+    e_xorn_asrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x79,0x3f]
+
+    e_xorn_asrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x18,0x2a]
+
+    e_xorn_asrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x08,0x20]
+
+    e_xor_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x60]
+
+    e_xor_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x65]
+
+    e_xor_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x6f]
+
+    e_xor_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x7f]
+
+    e_xor_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x6a]
+
+    e_xor_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x60]
+
+    e_xor_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x65]
+
+    e_xor_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x6f]
+
+    e_xor_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x7f]
+
+    e_xor_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x6a]
+
+    e_xor_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x60]
+
+    e_xor_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x65]
+
+    e_xor_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x6f]
+
+    e_xor_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x7f]
+
+    e_xor_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x6a]
+
+    e_xor_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x60]
+
+    e_xor_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x60]
+
+    e_xor_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x65]
+
+    e_xor_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x6f]
+
+    e_xor_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x7f]
+
+    e_xor_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x6a]
+
+    e_xor_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x60]
+
+    e_xor_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x65]
+
+    e_xor_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x6f]
+
+    e_xor_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x7f]
+
+    e_xor_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x6a]
+
+    e_xor_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x60]
+
+    e_xor_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x65]
+
+    e_xor_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x6f]
+
+    e_xor_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x7f]
+
+    e_xor_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x6a]
+
+    e_xor_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x60]
+
+    e_xor_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x00,0x60]
+
+    e_xor_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x20,0x65]
+
+    e_xor_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x51,0x6f]
+
+    e_xor_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x71,0x7f]
+
+    e_xor_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x6a]
+
+    e_xor_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x00,0x60]
+
+    e_xor_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x20,0x65]
+
+    e_xor_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x51,0x6f]
+
+    e_xor_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x71,0x7f]
+
+    e_xor_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x10,0x6a]
+
+    e_xor_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x00,0x60]
+
+    e_xor_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x20,0x65]
+
+    e_xor_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x51,0x6f]
+
+    e_xor_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x71,0x7f]
+
+    e_xor_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x10,0x6a]
+
+    e_xor_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x00,0x60]
+
+    e_xor_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x00,0x60]
+
+    e_xor_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x20,0x65]
+
+    e_xor_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x51,0x6f]
+
+    e_xor_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x71,0x7f]
+
+    e_xor_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x6a]
+
+    e_xor_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x00,0x60]
+
+    e_xor_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x20,0x65]
+
+    e_xor_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x51,0x6f]
+
+    e_xor_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x71,0x7f]
+
+    e_xor_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x10,0x6a]
+
+    e_xor_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x00,0x60]
+
+    e_xor_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x20,0x65]
+
+    e_xor_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x51,0x6f]
+
+    e_xor_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x71,0x7f]
+
+    e_xor_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x10,0x6a]
+
+    e_xor_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x00,0x60]
+
+    e_xorn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x60]
+
+    e_xorn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x65]
+
+    e_xorn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x6f]
+
+    e_xorn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x7f]
+
+    e_xorn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x6a]
+
+    e_xorn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x60]
+
+    e_xorn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x65]
+
+    e_xorn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x6f]
+
+    e_xorn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x7f]
+
+    e_xorn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x6a]
+
+    e_xorn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x60]
+
+    e_xorn_ror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x65]
+
+    e_xorn_ror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x6f]
+
+    e_xorn_ror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x7f]
+
+    e_xorn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x6a]
+
+    e_xorn_ror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x60]
+
+    e_xorn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x60]
+
+    e_xorn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x65]
+
+    e_xorn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x6f]
+
+    e_xorn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x7f]
+
+    e_xorn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x6a]
+
+    e_xorn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x60]
+
+    e_xorn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x65]
+
+    e_xorn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x6f]
+
+    e_xorn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x7f]
+
+    e_xorn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x6a]
+
+    e_xorn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x60]
+
+    e_xorn_rors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x65]
+
+    e_xorn_rors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x6f]
+
+    e_xorn_rors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x7f]
+
+    e_xorn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x6a]
+
+    e_xorn_rors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x60]
+
+    e_xorn_ror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x08,0x60]
+
+    e_xorn_ror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x28,0x65]
+
+    e_xorn_ror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x59,0x6f]
+
+    e_xorn_ror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x79,0x7f]
+
+    e_xorn_ror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x6a]
+
+    e_xorn_ror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x08,0x60]
+
+    e_xorn_ror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x28,0x65]
+
+    e_xorn_ror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x59,0x6f]
+
+    e_xorn_ror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x79,0x7f]
+
+    e_xorn_ror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x18,0x6a]
+
+    e_xorn_ror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x08,0x60]
+
+    e_xorn_ror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x28,0x65]
+
+    e_xorn_ror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x59,0x6f]
+
+    e_xorn_ror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x79,0x7f]
+
+    e_xorn_ror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x18,0x6a]
+
+    e_xorn_ror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x08,0x60]
+
+    e_xorn_rors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x08,0x60]
+
+    e_xorn_rors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x28,0x65]
+
+    e_xorn_rors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x59,0x6f]
+
+    e_xorn_rors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x79,0x7f]
+
+    e_xorn_rors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x6a]
+
+    e_xorn_rors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x08,0x60]
+
+    e_xorn_rors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x28,0x65]
+
+    e_xorn_rors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x59,0x6f]
+
+    e_xorn_rors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x79,0x7f]
+
+    e_xorn_rors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x18,0x6a]
+
+    e_xorn_rors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x08,0x60]
+
+    e_xorn_rors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x28,0x65]
+
+    e_xorn_rors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x59,0x6f]
+
+    e_xorn_rors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x79,0x7f]
+
+    e_xorn_rors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x18,0x6a]
+
+    e_xorn_rors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x08,0x60]
+
+    e_xor_f r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x00,0x80]
+
+    e_xor_f r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x20,0x80]
+
+    e_xor_f r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x51,0x80]
+
+    e_xor_f r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x71,0x80]
+
+    e_xor_f r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x10,0x80]
+
+    e_xor_f r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x00,0x80]
+
+    e_xor_f r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x20,0x80]
+
+    e_xor_f r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x51,0x80]
+
+    e_xor_f r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x71,0x80]
+
+    e_xor_f r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x10,0x80]
+
+    e_xor_f r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x00,0x80]
+
+    e_xor_f r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x20,0x80]
+
+    e_xor_f r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x51,0x80]
+
+    e_xor_f r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x71,0x80]
+
+    e_xor_f r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x10,0x80]
+
+    e_xor_f r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x00,0x80]
+
+    e_xor_fs r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x00,0x80]
+
+    e_xor_fs r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x20,0x80]
+
+    e_xor_fs r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x51,0x80]
+
+    e_xor_fs r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x71,0x80]
+
+    e_xor_fs r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x10,0x80]
+
+    e_xor_fs r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x00,0x80]
+
+    e_xor_fs r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x20,0x80]
+
+    e_xor_fs r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x51,0x80]
+
+    e_xor_fs r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x71,0x80]
+
+    e_xor_fs r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x10,0x80]
+
+    e_xor_fs r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x00,0x80]
+
+    e_xor_fs r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x20,0x80]
+
+    e_xor_fs r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x51,0x80]
+
+    e_xor_fs r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x71,0x80]
+
+    e_xor_fs r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x10,0x80]
+
+    e_xor_fs r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x00,0x80]
+
+    e_xor_f_ze r0, r0, r0
+# CHECK: encoding: [0x2e,0x00,0x00,0x80]
+
+    e_xor_f_nz r2, r2, r2
+# CHECK: encoding: [0x4e,0x88,0x20,0x80]
+
+    e_xor_f_po r5, r5, r5
+# CHECK: encoding: [0x6e,0x54,0x51,0x80]
+
+    e_xor_f_ne r7, r7, r7
+# CHECK: encoding: [0x8e,0xdc,0x71,0x80]
+
+    e_xor_f r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x10,0x80]
+
+    e_xor_f_az r0, r0, r0
+# CHECK: encoding: [0xae,0x00,0x00,0x80]
+
+    e_xor_f_zb r2, r2, r2
+# CHECK: encoding: [0xce,0x88,0x20,0x80]
+
+    e_xor_f_ca r5, r5, r5
+# CHECK: encoding: [0xee,0x54,0x51,0x80]
+
+    e_xor_f_nc r7, r7, r7
+# CHECK: encoding: [0x0e,0xdd,0x71,0x80]
+
+    e_xor_f_cz r1, r1, r1
+# CHECK: encoding: [0x2e,0x45,0x10,0x80]
+
+    e_xor_f_spo r0, r0, r0
+# CHECK: encoding: [0x4e,0x01,0x00,0x80]
+
+    e_xor_f_sne r2, r2, r2
+# CHECK: encoding: [0x6e,0x89,0x20,0x80]
+
+    e_xor_f_nbs r5, r5, r5
+# CHECK: encoding: [0x8e,0x55,0x51,0x80]
+
+    e_xor_f_nex r7, r7, r7
+# CHECK: encoding: [0xae,0xdd,0x71,0x80]
+
+    e_xor_f_bs r1, r1, r1
+# CHECK: encoding: [0xce,0x45,0x10,0x80]
+
+    e_xor_f_ex r0, r0, r0
+# CHECK: encoding: [0xee,0x01,0x00,0x80]
+
+    e_xor_fs_ze r0, r0, r0
+# CHECK: encoding: [0x2e,0x02,0x00,0x80]
+
+    e_xor_fs_nz r2, r2, r2
+# CHECK: encoding: [0x4e,0x8a,0x20,0x80]
+
+    e_xor_fs_po r5, r5, r5
+# CHECK: encoding: [0x6e,0x56,0x51,0x80]
+
+    e_xor_fs_ne r7, r7, r7
+# CHECK: encoding: [0x8e,0xde,0x71,0x80]
+
+    e_xor_fs r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x10,0x80]
+
+    e_xor_fs_az r0, r0, r0
+# CHECK: encoding: [0xae,0x02,0x00,0x80]
+
+    e_xor_fs_zb r2, r2, r2
+# CHECK: encoding: [0xce,0x8a,0x20,0x80]
+
+    e_xor_fs_ca r5, r5, r5
+# CHECK: encoding: [0xee,0x56,0x51,0x80]
+
+    e_xor_fs_nc r7, r7, r7
+# CHECK: encoding: [0x0e,0xdf,0x71,0x80]
+
+    e_xor_fs_cz r1, r1, r1
+# CHECK: encoding: [0x2e,0x47,0x10,0x80]
+
+    e_xor_fs_spo r0, r0, r0
+# CHECK: encoding: [0x4e,0x03,0x00,0x80]
+
+    e_xor_fs_sne r2, r2, r2
+# CHECK: encoding: [0x6e,0x8b,0x20,0x80]
+
+    e_xor_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x8e,0x57,0x51,0x80]
+
+    e_xor_fs_nex r7, r7, r7
+# CHECK: encoding: [0xae,0xdf,0x71,0x80]
+
+    e_xor_fs_bs r1, r1, r1
+# CHECK: encoding: [0xce,0x47,0x10,0x80]
+
+    e_xor_fs_ex r0, r0, r0
+# CHECK: encoding: [0xee,0x03,0x00,0x80]
+
+    e_xorn_f r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x08,0x80]
+
+    e_xorn_f r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x28,0x80]
+
+    e_xorn_f r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x59,0x80]
+
+    e_xorn_f r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x79,0x80]
+
+    e_xorn_f r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x18,0x80]
+
+    e_xorn_f r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x08,0x80]
+
+    e_xorn_f r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x28,0x80]
+
+    e_xorn_f r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x59,0x80]
+
+    e_xorn_f r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x79,0x80]
+
+    e_xorn_f r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x18,0x80]
+
+    e_xorn_f r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x08,0x80]
+
+    e_xorn_f r2, r2, r2
+# CHECK: encoding: [0x0e,0x88,0x28,0x80]
+
+    e_xorn_f r5, r5, r5
+# CHECK: encoding: [0x0e,0x54,0x59,0x80]
+
+    e_xorn_f r7, r7, r7
+# CHECK: encoding: [0x0e,0xdc,0x79,0x80]
+
+    e_xorn_f r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x18,0x80]
+
+    e_xorn_f r0, r0, r0
+# CHECK: encoding: [0x0e,0x00,0x08,0x80]
+
+    e_xorn_fs r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x08,0x80]
+
+    e_xorn_fs r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x28,0x80]
+
+    e_xorn_fs r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x59,0x80]
+
+    e_xorn_fs r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x79,0x80]
+
+    e_xorn_fs r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x18,0x80]
+
+    e_xorn_fs r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x08,0x80]
+
+    e_xorn_fs r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x28,0x80]
+
+    e_xorn_fs r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x59,0x80]
+
+    e_xorn_fs r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x79,0x80]
+
+    e_xorn_fs r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x18,0x80]
+
+    e_xorn_fs r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x08,0x80]
+
+    e_xorn_fs r2, r2, r2
+# CHECK: encoding: [0x0e,0x8a,0x28,0x80]
+
+    e_xorn_fs r5, r5, r5
+# CHECK: encoding: [0x0e,0x56,0x59,0x80]
+
+    e_xorn_fs r7, r7, r7
+# CHECK: encoding: [0x0e,0xde,0x79,0x80]
+
+    e_xorn_fs r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x18,0x80]
+
+    e_xorn_fs r0, r0, r0
+# CHECK: encoding: [0x0e,0x02,0x08,0x80]
+
+    e_xorn_f_ze r0, r0, r0
+# CHECK: encoding: [0x2e,0x00,0x08,0x80]
+
+    e_xorn_f_nz r2, r2, r2
+# CHECK: encoding: [0x4e,0x88,0x28,0x80]
+
+    e_xorn_f_po r5, r5, r5
+# CHECK: encoding: [0x6e,0x54,0x59,0x80]
+
+    e_xorn_f_ne r7, r7, r7
+# CHECK: encoding: [0x8e,0xdc,0x79,0x80]
+
+    e_xorn_f r1, r1, r1
+# CHECK: encoding: [0x0e,0x44,0x18,0x80]
+
+    e_xorn_f_az r0, r0, r0
+# CHECK: encoding: [0xae,0x00,0x08,0x80]
+
+    e_xorn_f_zb r2, r2, r2
+# CHECK: encoding: [0xce,0x88,0x28,0x80]
+
+    e_xorn_f_ca r5, r5, r5
+# CHECK: encoding: [0xee,0x54,0x59,0x80]
+
+    e_xorn_f_nc r7, r7, r7
+# CHECK: encoding: [0x0e,0xdd,0x79,0x80]
+
+    e_xorn_f_cz r1, r1, r1
+# CHECK: encoding: [0x2e,0x45,0x18,0x80]
+
+    e_xorn_f_spo r0, r0, r0
+# CHECK: encoding: [0x4e,0x01,0x08,0x80]
+
+    e_xorn_f_sne r2, r2, r2
+# CHECK: encoding: [0x6e,0x89,0x28,0x80]
+
+    e_xorn_f_nbs r5, r5, r5
+# CHECK: encoding: [0x8e,0x55,0x59,0x80]
+
+    e_xorn_f_nex r7, r7, r7
+# CHECK: encoding: [0xae,0xdd,0x79,0x80]
+
+    e_xorn_f_bs r1, r1, r1
+# CHECK: encoding: [0xce,0x45,0x18,0x80]
+
+    e_xorn_f_ex r0, r0, r0
+# CHECK: encoding: [0xee,0x01,0x08,0x80]
+
+    e_xorn_fs_ze r0, r0, r0
+# CHECK: encoding: [0x2e,0x02,0x08,0x80]
+
+    e_xorn_fs_nz r2, r2, r2
+# CHECK: encoding: [0x4e,0x8a,0x28,0x80]
+
+    e_xorn_fs_po r5, r5, r5
+# CHECK: encoding: [0x6e,0x56,0x59,0x80]
+
+    e_xorn_fs_ne r7, r7, r7
+# CHECK: encoding: [0x8e,0xde,0x79,0x80]
+
+    e_xorn_fs r1, r1, r1
+# CHECK: encoding: [0x0e,0x46,0x18,0x80]
+
+    e_xorn_fs_az r0, r0, r0
+# CHECK: encoding: [0xae,0x02,0x08,0x80]
+
+    e_xorn_fs_zb r2, r2, r2
+# CHECK: encoding: [0xce,0x8a,0x28,0x80]
+
+    e_xorn_fs_ca r5, r5, r5
+# CHECK: encoding: [0xee,0x56,0x59,0x80]
+
+    e_xorn_fs_nc r7, r7, r7
+# CHECK: encoding: [0x0e,0xdf,0x79,0x80]
+
+    e_xorn_fs_cz r1, r1, r1
+# CHECK: encoding: [0x2e,0x47,0x18,0x80]
+
+    e_xorn_fs_spo r0, r0, r0
+# CHECK: encoding: [0x4e,0x03,0x08,0x80]
+
+    e_xorn_fs_sne r2, r2, r2
+# CHECK: encoding: [0x6e,0x8b,0x28,0x80]
+
+    e_xorn_fs_nbs r5, r5, r5
+# CHECK: encoding: [0x8e,0x57,0x59,0x80]
+
+    e_xorn_fs_nex r7, r7, r7
+# CHECK: encoding: [0xae,0xdf,0x79,0x80]
+
+    e_xorn_fs_bs r1, r1, r1
+# CHECK: encoding: [0xce,0x47,0x18,0x80]
+
+    e_xorn_fs_ex r0, r0, r0
+# CHECK: encoding: [0xee,0x03,0x08,0x80]
+
+    e_xor_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x80]
+
+    e_xor_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x85]
+
+    e_xor_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x8f]
+
+    e_xor_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x9f]
+
+    e_xor_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x8a]
+
+    e_xor_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x80]
+
+    e_xor_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x85]
+
+    e_xor_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x8f]
+
+    e_xor_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x9f]
+
+    e_xor_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x8a]
+
+    e_xor_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x80]
+
+    e_xor_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0x85]
+
+    e_xor_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0x8f]
+
+    e_xor_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0x9f]
+
+    e_xor_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x8a]
+
+    e_xor_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0x80]
+
+    e_xor_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x80]
+
+    e_xor_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x85]
+
+    e_xor_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x8f]
+
+    e_xor_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x9f]
+
+    e_xor_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x8a]
+
+    e_xor_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x80]
+
+    e_xor_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x85]
+
+    e_xor_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x8f]
+
+    e_xor_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x9f]
+
+    e_xor_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x8a]
+
+    e_xor_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x80]
+
+    e_xor_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0x85]
+
+    e_xor_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0x8f]
+
+    e_xor_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0x9f]
+
+    e_xor_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x8a]
+
+    e_xor_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0x80]
+
+    e_xor_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x00,0x80]
+
+    e_xor_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x20,0x85]
+
+    e_xor_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x51,0x8f]
+
+    e_xor_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x71,0x9f]
+
+    e_xor_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0x8a]
+
+    e_xor_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x00,0x80]
+
+    e_xor_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x20,0x85]
+
+    e_xor_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x51,0x8f]
+
+    e_xor_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x71,0x9f]
+
+    e_xor_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x10,0x8a]
+
+    e_xor_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x00,0x80]
+
+    e_xor_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x20,0x85]
+
+    e_xor_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x51,0x8f]
+
+    e_xor_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x71,0x9f]
+
+    e_xor_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x10,0x8a]
+
+    e_xor_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x00,0x80]
+
+    e_xor_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x00,0x80]
+
+    e_xor_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x20,0x85]
+
+    e_xor_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x51,0x8f]
+
+    e_xor_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x71,0x9f]
+
+    e_xor_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0x8a]
+
+    e_xor_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x00,0x80]
+
+    e_xor_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x20,0x85]
+
+    e_xor_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x51,0x8f]
+
+    e_xor_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x71,0x9f]
+
+    e_xor_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x10,0x8a]
+
+    e_xor_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x00,0x80]
+
+    e_xor_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x20,0x85]
+
+    e_xor_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x51,0x8f]
+
+    e_xor_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x71,0x9f]
+
+    e_xor_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x10,0x8a]
+
+    e_xor_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x00,0x80]
+
+    e_xorn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x80]
+
+    e_xorn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x85]
+
+    e_xorn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x8f]
+
+    e_xorn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x9f]
+
+    e_xorn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x8a]
+
+    e_xorn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x80]
+
+    e_xorn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x85]
+
+    e_xorn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x8f]
+
+    e_xorn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x9f]
+
+    e_xorn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x8a]
+
+    e_xorn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x80]
+
+    e_xorn_flsl r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0x85]
+
+    e_xorn_flsl r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0x8f]
+
+    e_xorn_flsl r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0x9f]
+
+    e_xorn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x8a]
+
+    e_xorn_flsl r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0x80]
+
+    e_xorn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x80]
+
+    e_xorn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x85]
+
+    e_xorn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x8f]
+
+    e_xorn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x9f]
+
+    e_xorn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x8a]
+
+    e_xorn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x80]
+
+    e_xorn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x85]
+
+    e_xorn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x8f]
+
+    e_xorn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x9f]
+
+    e_xorn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x8a]
+
+    e_xorn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x80]
+
+    e_xorn_flsls r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0x85]
+
+    e_xorn_flsls r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0x8f]
+
+    e_xorn_flsls r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0x9f]
+
+    e_xorn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x8a]
+
+    e_xorn_flsls r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0x80]
+
+    e_xorn_flsl_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x08,0x80]
+
+    e_xorn_flsl_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x28,0x85]
+
+    e_xorn_flsl_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x59,0x8f]
+
+    e_xorn_flsl_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x79,0x9f]
+
+    e_xorn_flsl r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0x8a]
+
+    e_xorn_flsl_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x08,0x80]
+
+    e_xorn_flsl_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x28,0x85]
+
+    e_xorn_flsl_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x59,0x8f]
+
+    e_xorn_flsl_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x79,0x9f]
+
+    e_xorn_flsl_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x18,0x8a]
+
+    e_xorn_flsl_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x08,0x80]
+
+    e_xorn_flsl_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x28,0x85]
+
+    e_xorn_flsl_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x59,0x8f]
+
+    e_xorn_flsl_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x79,0x9f]
+
+    e_xorn_flsl_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x18,0x8a]
+
+    e_xorn_flsl_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x08,0x80]
+
+    e_xorn_flsls_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x08,0x80]
+
+    e_xorn_flsls_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x28,0x85]
+
+    e_xorn_flsls_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x59,0x8f]
+
+    e_xorn_flsls_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x79,0x9f]
+
+    e_xorn_flsls r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0x8a]
+
+    e_xorn_flsls_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x08,0x80]
+
+    e_xorn_flsls_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x28,0x85]
+
+    e_xorn_flsls_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x59,0x8f]
+
+    e_xorn_flsls_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x79,0x9f]
+
+    e_xorn_flsls_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x18,0x8a]
+
+    e_xorn_flsls_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x08,0x80]
+
+    e_xorn_flsls_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x28,0x85]
+
+    e_xorn_flsls_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x59,0x8f]
+
+    e_xorn_flsls_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x79,0x9f]
+
+    e_xorn_flsls_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x18,0x8a]
+
+    e_xorn_flsls_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x08,0x80]
+
+    e_xor_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xc0]
+
+    e_xor_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xc5]
+
+    e_xor_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xcf]
+
+    e_xor_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xdf]
+
+    e_xor_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xca]
+
+    e_xor_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xc0]
+
+    e_xor_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xc5]
+
+    e_xor_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xcf]
+
+    e_xor_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xdf]
+
+    e_xor_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xca]
+
+    e_xor_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xc0]
+
+    e_xor_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xc5]
+
+    e_xor_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xcf]
+
+    e_xor_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xdf]
+
+    e_xor_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xca]
+
+    e_xor_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xc0]
+
+    e_xor_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xc0]
+
+    e_xor_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xc5]
+
+    e_xor_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xcf]
+
+    e_xor_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xdf]
+
+    e_xor_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xca]
+
+    e_xor_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xc0]
+
+    e_xor_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xc5]
+
+    e_xor_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xcf]
+
+    e_xor_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xdf]
+
+    e_xor_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xca]
+
+    e_xor_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xc0]
+
+    e_xor_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xc5]
+
+    e_xor_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xcf]
+
+    e_xor_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xdf]
+
+    e_xor_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xca]
+
+    e_xor_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xc0]
+
+    e_xor_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x00,0xc0]
+
+    e_xor_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x20,0xc5]
+
+    e_xor_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x51,0xcf]
+
+    e_xor_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x71,0xdf]
+
+    e_xor_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xca]
+
+    e_xor_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x00,0xc0]
+
+    e_xor_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x20,0xc5]
+
+    e_xor_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x51,0xcf]
+
+    e_xor_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x71,0xdf]
+
+    e_xor_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x10,0xca]
+
+    e_xor_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x00,0xc0]
+
+    e_xor_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x20,0xc5]
+
+    e_xor_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x51,0xcf]
+
+    e_xor_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x71,0xdf]
+
+    e_xor_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x10,0xca]
+
+    e_xor_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x00,0xc0]
+
+    e_xor_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x00,0xc0]
+
+    e_xor_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x20,0xc5]
+
+    e_xor_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x51,0xcf]
+
+    e_xor_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x71,0xdf]
+
+    e_xor_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xca]
+
+    e_xor_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x00,0xc0]
+
+    e_xor_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x20,0xc5]
+
+    e_xor_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x51,0xcf]
+
+    e_xor_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x71,0xdf]
+
+    e_xor_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x10,0xca]
+
+    e_xor_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x00,0xc0]
+
+    e_xor_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x20,0xc5]
+
+    e_xor_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x51,0xcf]
+
+    e_xor_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x71,0xdf]
+
+    e_xor_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x10,0xca]
+
+    e_xor_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x00,0xc0]
+
+    e_xorn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xc0]
+
+    e_xorn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xc5]
+
+    e_xorn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xcf]
+
+    e_xorn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xdf]
+
+    e_xorn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xca]
+
+    e_xorn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xc0]
+
+    e_xorn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xc5]
+
+    e_xorn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xcf]
+
+    e_xorn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xdf]
+
+    e_xorn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xca]
+
+    e_xorn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xc0]
+
+    e_xorn_flsr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xc5]
+
+    e_xorn_flsr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xcf]
+
+    e_xorn_flsr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xdf]
+
+    e_xorn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xca]
+
+    e_xorn_flsr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xc0]
+
+    e_xorn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xc0]
+
+    e_xorn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xc5]
+
+    e_xorn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xcf]
+
+    e_xorn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xdf]
+
+    e_xorn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xca]
+
+    e_xorn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xc0]
+
+    e_xorn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xc5]
+
+    e_xorn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xcf]
+
+    e_xorn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xdf]
+
+    e_xorn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xca]
+
+    e_xorn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xc0]
+
+    e_xorn_flsrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xc5]
+
+    e_xorn_flsrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xcf]
+
+    e_xorn_flsrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xdf]
+
+    e_xorn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xca]
+
+    e_xorn_flsrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xc0]
+
+    e_xorn_flsr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x08,0xc0]
+
+    e_xorn_flsr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x28,0xc5]
+
+    e_xorn_flsr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x59,0xcf]
+
+    e_xorn_flsr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x79,0xdf]
+
+    e_xorn_flsr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xca]
+
+    e_xorn_flsr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x08,0xc0]
+
+    e_xorn_flsr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x28,0xc5]
+
+    e_xorn_flsr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x59,0xcf]
+
+    e_xorn_flsr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x79,0xdf]
+
+    e_xorn_flsr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x18,0xca]
+
+    e_xorn_flsr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x08,0xc0]
+
+    e_xorn_flsr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x28,0xc5]
+
+    e_xorn_flsr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x59,0xcf]
+
+    e_xorn_flsr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x79,0xdf]
+
+    e_xorn_flsr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x18,0xca]
+
+    e_xorn_flsr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x08,0xc0]
+
+    e_xorn_flsrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x08,0xc0]
+
+    e_xorn_flsrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x28,0xc5]
+
+    e_xorn_flsrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x59,0xcf]
+
+    e_xorn_flsrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x79,0xdf]
+
+    e_xorn_flsrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xca]
+
+    e_xorn_flsrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x08,0xc0]
+
+    e_xorn_flsrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x28,0xc5]
+
+    e_xorn_flsrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x59,0xcf]
+
+    e_xorn_flsrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x79,0xdf]
+
+    e_xorn_flsrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x18,0xca]
+
+    e_xorn_flsrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x08,0xc0]
+
+    e_xorn_flsrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x28,0xc5]
+
+    e_xorn_flsrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x59,0xcf]
+
+    e_xorn_flsrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x79,0xdf]
+
+    e_xorn_flsrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x18,0xca]
+
+    e_xorn_flsrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x08,0xc0]
+
+    e_xor_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xa0]
+
+    e_xor_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xa5]
+
+    e_xor_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xaf]
+
+    e_xor_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xbf]
+
+    e_xor_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xaa]
+
+    e_xor_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xa0]
+
+    e_xor_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xa5]
+
+    e_xor_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xaf]
+
+    e_xor_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xbf]
+
+    e_xor_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xaa]
+
+    e_xor_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xa0]
+
+    e_xor_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xa5]
+
+    e_xor_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xaf]
+
+    e_xor_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xbf]
+
+    e_xor_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xaa]
+
+    e_xor_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xa0]
+
+    e_xor_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xa0]
+
+    e_xor_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xa5]
+
+    e_xor_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xaf]
+
+    e_xor_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xbf]
+
+    e_xor_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xaa]
+
+    e_xor_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xa0]
+
+    e_xor_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xa5]
+
+    e_xor_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xaf]
+
+    e_xor_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xbf]
+
+    e_xor_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xaa]
+
+    e_xor_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xa0]
+
+    e_xor_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xa5]
+
+    e_xor_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xaf]
+
+    e_xor_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xbf]
+
+    e_xor_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xaa]
+
+    e_xor_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xa0]
+
+    e_xor_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x00,0xa0]
+
+    e_xor_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x20,0xa5]
+
+    e_xor_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x51,0xaf]
+
+    e_xor_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x71,0xbf]
+
+    e_xor_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xaa]
+
+    e_xor_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x00,0xa0]
+
+    e_xor_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x20,0xa5]
+
+    e_xor_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x51,0xaf]
+
+    e_xor_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x71,0xbf]
+
+    e_xor_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x10,0xaa]
+
+    e_xor_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x00,0xa0]
+
+    e_xor_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x20,0xa5]
+
+    e_xor_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x51,0xaf]
+
+    e_xor_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x71,0xbf]
+
+    e_xor_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x10,0xaa]
+
+    e_xor_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x00,0xa0]
+
+    e_xor_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x00,0xa0]
+
+    e_xor_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x20,0xa5]
+
+    e_xor_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x51,0xaf]
+
+    e_xor_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x71,0xbf]
+
+    e_xor_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xaa]
+
+    e_xor_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x00,0xa0]
+
+    e_xor_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x20,0xa5]
+
+    e_xor_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x51,0xaf]
+
+    e_xor_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x71,0xbf]
+
+    e_xor_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x10,0xaa]
+
+    e_xor_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x00,0xa0]
+
+    e_xor_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x20,0xa5]
+
+    e_xor_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x51,0xaf]
+
+    e_xor_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x71,0xbf]
+
+    e_xor_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x10,0xaa]
+
+    e_xor_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x00,0xa0]
+
+    e_xorn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xa0]
+
+    e_xorn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xa5]
+
+    e_xorn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xaf]
+
+    e_xorn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xbf]
+
+    e_xorn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xaa]
+
+    e_xorn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xa0]
+
+    e_xorn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xa5]
+
+    e_xorn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xaf]
+
+    e_xorn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xbf]
+
+    e_xorn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xaa]
+
+    e_xorn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xa0]
+
+    e_xorn_fasr r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xa5]
+
+    e_xorn_fasr r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xaf]
+
+    e_xorn_fasr r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xbf]
+
+    e_xorn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xaa]
+
+    e_xorn_fasr r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xa0]
+
+    e_xorn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xa0]
+
+    e_xorn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xa5]
+
+    e_xorn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xaf]
+
+    e_xorn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xbf]
+
+    e_xorn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xaa]
+
+    e_xorn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xa0]
+
+    e_xorn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xa5]
+
+    e_xorn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xaf]
+
+    e_xorn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xbf]
+
+    e_xorn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xaa]
+
+    e_xorn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xa0]
+
+    e_xorn_fasrs r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xa5]
+
+    e_xorn_fasrs r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xaf]
+
+    e_xorn_fasrs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xbf]
+
+    e_xorn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xaa]
+
+    e_xorn_fasrs r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xa0]
+
+    e_xorn_fasr_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x08,0xa0]
+
+    e_xorn_fasr_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x28,0xa5]
+
+    e_xorn_fasr_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x59,0xaf]
+
+    e_xorn_fasr_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x79,0xbf]
+
+    e_xorn_fasr r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xaa]
+
+    e_xorn_fasr_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x08,0xa0]
+
+    e_xorn_fasr_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x28,0xa5]
+
+    e_xorn_fasr_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x59,0xaf]
+
+    e_xorn_fasr_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x79,0xbf]
+
+    e_xorn_fasr_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x18,0xaa]
+
+    e_xorn_fasr_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x08,0xa0]
+
+    e_xorn_fasr_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x28,0xa5]
+
+    e_xorn_fasr_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x59,0xaf]
+
+    e_xorn_fasr_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x79,0xbf]
+
+    e_xorn_fasr_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x18,0xaa]
+
+    e_xorn_fasr_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x08,0xa0]
+
+    e_xorn_fasrs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x08,0xa0]
+
+    e_xorn_fasrs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x28,0xa5]
+
+    e_xorn_fasrs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x59,0xaf]
+
+    e_xorn_fasrs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x79,0xbf]
+
+    e_xorn_fasrs r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xaa]
+
+    e_xorn_fasrs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x08,0xa0]
+
+    e_xorn_fasrs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x28,0xa5]
+
+    e_xorn_fasrs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x59,0xaf]
+
+    e_xorn_fasrs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x79,0xbf]
+
+    e_xorn_fasrs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x18,0xaa]
+
+    e_xorn_fasrs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x08,0xa0]
+
+    e_xorn_fasrs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x28,0xa5]
+
+    e_xorn_fasrs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x59,0xaf]
+
+    e_xorn_fasrs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x79,0xbf]
+
+    e_xorn_fasrs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x18,0xaa]
+
+    e_xorn_fasrs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x08,0xa0]
+
+    e_xor_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xe0]
+
+    e_xor_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xe5]
+
+    e_xor_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xef]
+
+    e_xor_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xff]
+
+    e_xor_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xea]
+
+    e_xor_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xe0]
+
+    e_xor_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xe5]
+
+    e_xor_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xef]
+
+    e_xor_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xff]
+
+    e_xor_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xea]
+
+    e_xor_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xe0]
+
+    e_xor_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x20,0xe5]
+
+    e_xor_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x51,0xef]
+
+    e_xor_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x71,0xff]
+
+    e_xor_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xea]
+
+    e_xor_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x00,0xe0]
+
+    e_xor_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xe0]
+
+    e_xor_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xe5]
+
+    e_xor_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xef]
+
+    e_xor_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xff]
+
+    e_xor_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xea]
+
+    e_xor_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xe0]
+
+    e_xor_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xe5]
+
+    e_xor_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xef]
+
+    e_xor_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xff]
+
+    e_xor_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xea]
+
+    e_xor_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xe0]
+
+    e_xor_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x20,0xe5]
+
+    e_xor_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x51,0xef]
+
+    e_xor_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x71,0xff]
+
+    e_xor_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xea]
+
+    e_xor_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x00,0xe0]
+
+    e_xor_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x00,0xe0]
+
+    e_xor_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x20,0xe5]
+
+    e_xor_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x51,0xef]
+
+    e_xor_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x71,0xff]
+
+    e_xor_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x10,0xea]
+
+    e_xor_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x00,0xe0]
+
+    e_xor_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x20,0xe5]
+
+    e_xor_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x51,0xef]
+
+    e_xor_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x71,0xff]
+
+    e_xor_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x10,0xea]
+
+    e_xor_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x00,0xe0]
+
+    e_xor_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x20,0xe5]
+
+    e_xor_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x51,0xef]
+
+    e_xor_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x71,0xff]
+
+    e_xor_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x10,0xea]
+
+    e_xor_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x00,0xe0]
+
+    e_xor_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x00,0xe0]
+
+    e_xor_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x20,0xe5]
+
+    e_xor_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x51,0xef]
+
+    e_xor_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x71,0xff]
+
+    e_xor_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x10,0xea]
+
+    e_xor_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x00,0xe0]
+
+    e_xor_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x20,0xe5]
+
+    e_xor_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x51,0xef]
+
+    e_xor_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x71,0xff]
+
+    e_xor_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x10,0xea]
+
+    e_xor_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x00,0xe0]
+
+    e_xor_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x20,0xe5]
+
+    e_xor_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x51,0xef]
+
+    e_xor_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x71,0xff]
+
+    e_xor_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x10,0xea]
+
+    e_xor_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x00,0xe0]
+
+    e_xorn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xe0]
+
+    e_xorn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xe5]
+
+    e_xorn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xef]
+
+    e_xorn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xff]
+
+    e_xorn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xea]
+
+    e_xorn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xe0]
+
+    e_xorn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xe5]
+
+    e_xorn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xef]
+
+    e_xorn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xff]
+
+    e_xorn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xea]
+
+    e_xorn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xe0]
+
+    e_xorn_fror r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x88,0x28,0xe5]
+
+    e_xorn_fror r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x54,0x59,0xef]
+
+    e_xorn_fror r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdc,0x79,0xff]
+
+    e_xorn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xea]
+
+    e_xorn_fror r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x00,0x08,0xe0]
+
+    e_xorn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xe0]
+
+    e_xorn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xe5]
+
+    e_xorn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xef]
+
+    e_xorn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xff]
+
+    e_xorn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xea]
+
+    e_xorn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xe0]
+
+    e_xorn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xe5]
+
+    e_xorn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xef]
+
+    e_xorn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xff]
+
+    e_xorn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xea]
+
+    e_xorn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xe0]
+
+    e_xorn_frors r2, r2, r2, 0x5
+# CHECK: encoding: [0x0e,0x8a,0x28,0xe5]
+
+    e_xorn_frors r5, r5, r5, 0xf
+# CHECK: encoding: [0x0e,0x56,0x59,0xef]
+
+    e_xorn_frors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xde,0x79,0xff]
+
+    e_xorn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xea]
+
+    e_xorn_frors r0, r0, r0, 0x0
+# CHECK: encoding: [0x0e,0x02,0x08,0xe0]
+
+    e_xorn_fror_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x00,0x08,0xe0]
+
+    e_xorn_fror_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x88,0x28,0xe5]
+
+    e_xorn_fror_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x54,0x59,0xef]
+
+    e_xorn_fror_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xdc,0x79,0xff]
+
+    e_xorn_fror r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x44,0x18,0xea]
+
+    e_xorn_fror_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x00,0x08,0xe0]
+
+    e_xorn_fror_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x88,0x28,0xe5]
+
+    e_xorn_fror_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x54,0x59,0xef]
+
+    e_xorn_fror_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdd,0x79,0xff]
+
+    e_xorn_fror_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x45,0x18,0xea]
+
+    e_xorn_fror_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x01,0x08,0xe0]
+
+    e_xorn_fror_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x89,0x28,0xe5]
+
+    e_xorn_fror_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x55,0x59,0xef]
+
+    e_xorn_fror_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdd,0x79,0xff]
+
+    e_xorn_fror_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x45,0x18,0xea]
+
+    e_xorn_fror_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x01,0x08,0xe0]
+
+    e_xorn_frors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x2e,0x02,0x08,0xe0]
+
+    e_xorn_frors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x4e,0x8a,0x28,0xe5]
+
+    e_xorn_frors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x6e,0x56,0x59,0xef]
+
+    e_xorn_frors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x8e,0xde,0x79,0xff]
+
+    e_xorn_frors r1, r1, r1, 0xa
+# CHECK: encoding: [0x0e,0x46,0x18,0xea]
+
+    e_xorn_frors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xae,0x02,0x08,0xe0]
+
+    e_xorn_frors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xce,0x8a,0x28,0xe5]
+
+    e_xorn_frors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xee,0x56,0x59,0xef]
+
+    e_xorn_frors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x0e,0xdf,0x79,0xff]
+
+    e_xorn_frors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x2e,0x47,0x18,0xea]
+
+    e_xorn_frors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x4e,0x03,0x08,0xe0]
+
+    e_xorn_frors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x6e,0x8b,0x28,0xe5]
+
+    e_xorn_frors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x8e,0x57,0x59,0xef]
+
+    e_xorn_frors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xae,0xdf,0x79,0xff]
+
+    e_xorn_frors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xce,0x47,0x18,0xea]
+
+    e_xorn_frors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xee,0x03,0x08,0xe0]
+
+    e_lsl r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x00]
+
+    e_lsl r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x20,0x05]
+
+    e_lsl r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x50,0x0f]
+
+    e_lsl r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x70,0x1f]
+
+    e_lsl r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x10,0x0a]
+
+    e_lsl r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x00]
+
+    e_lsl r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x20,0x05]
+
+    e_lsl r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x50,0x0f]
+
+    e_lsl r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x70,0x1f]
+
+    e_lsl r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x10,0x0a]
+
+    e_lsl r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x00]
+
+    e_lsl r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x20,0x05]
+
+    e_lsl r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x50,0x0f]
+
+    e_lsl r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x70,0x1f]
+
+    e_lsl r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x10,0x0a]
+
+    e_lsl r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x00]
+
+    e_lsr r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x00]
+
+    e_lsr r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x28,0x05]
+
+    e_lsr r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x58,0x0f]
+
+    e_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x78,0x1f]
+
+    e_lsr r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x18,0x0a]
+
+    e_lsr r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x00]
+
+    e_lsr r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x28,0x05]
+
+    e_lsr r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x58,0x0f]
+
+    e_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x78,0x1f]
+
+    e_lsr r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x18,0x0a]
+
+    e_lsr r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x00]
+
+    e_lsr r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x28,0x05]
+
+    e_lsr r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x58,0x0f]
+
+    e_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x78,0x1f]
+
+    e_lsr r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x18,0x0a]
+
+    e_lsr r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x00]
+
+    e_lsls r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x00]
+
+    e_lsls r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x20,0x05]
+
+    e_lsls r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x50,0x0f]
+
+    e_lsls r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x70,0x1f]
+
+    e_lsls r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x10,0x0a]
+
+    e_lsls r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x00]
+
+    e_lsls r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x20,0x05]
+
+    e_lsls r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x50,0x0f]
+
+    e_lsls r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x70,0x1f]
+
+    e_lsls r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x10,0x0a]
+
+    e_lsls r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x00]
+
+    e_lsls r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x20,0x05]
+
+    e_lsls r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x50,0x0f]
+
+    e_lsls r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x70,0x1f]
+
+    e_lsls r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x10,0x0a]
+
+    e_lsls r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x00]
+
+    e_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x00]
+
+    e_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x28,0x05]
+
+    e_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x58,0x0f]
+
+    e_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x78,0x1f]
+
+    e_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x18,0x0a]
+
+    e_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x00]
+
+    e_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x28,0x05]
+
+    e_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x58,0x0f]
+
+    e_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x78,0x1f]
+
+    e_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x18,0x0a]
+
+    e_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x00]
+
+    e_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x28,0x05]
+
+    e_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x58,0x0f]
+
+    e_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x78,0x1f]
+
+    e_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x18,0x0a]
+
+    e_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x00]
+
+    e_lsl_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x20]
+
+    e_lsl_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x25]
+
+    e_lsl_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x2f]
+
+    e_lsl_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x3f]
+
+    e_lsl_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x2a]
+
+    e_lsl_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x20]
+
+    e_lsl_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x25]
+
+    e_lsl_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x2f]
+
+    e_lsl_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x3f]
+
+    e_lsl_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x2a]
+
+    e_lsl_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x20]
+
+    e_lsl_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x25]
+
+    e_lsl_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x2f]
+
+    e_lsl_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x3f]
+
+    e_lsl_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x2a]
+
+    e_lsl_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x20]
+
+    e_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x20]
+
+    e_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x25]
+
+    e_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x2f]
+
+    e_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x3f]
+
+    e_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x2a]
+
+    e_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x20]
+
+    e_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x25]
+
+    e_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x2f]
+
+    e_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x3f]
+
+    e_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x2a]
+
+    e_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x20]
+
+    e_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x25]
+
+    e_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x2f]
+
+    e_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x3f]
+
+    e_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x2a]
+
+    e_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x20]
+
+    e_lsl_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x20]
+
+    e_lsl_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x25]
+
+    e_lsl_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x2f]
+
+    e_lsl_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x3f]
+
+    e_lsl_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x2a]
+
+    e_lsl_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x20]
+
+    e_lsl_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x25]
+
+    e_lsl_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x2f]
+
+    e_lsl_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x3f]
+
+    e_lsl_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x2a]
+
+    e_lsl_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x20]
+
+    e_lsl_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x25]
+
+    e_lsl_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x2f]
+
+    e_lsl_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x3f]
+
+    e_lsl_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x2a]
+
+    e_lsl_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x20]
+
+    e_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x20]
+
+    e_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x25]
+
+    e_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x2f]
+
+    e_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x3f]
+
+    e_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x2a]
+
+    e_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x20]
+
+    e_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x25]
+
+    e_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x2f]
+
+    e_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x3f]
+
+    e_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x2a]
+
+    e_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x20]
+
+    e_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x25]
+
+    e_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x2f]
+
+    e_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x3f]
+
+    e_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x2a]
+
+    e_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x20]
+
+    e_lsl_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x40]
+
+    e_lsl_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x45]
+
+    e_lsl_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x4f]
+
+    e_lsl_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x5f]
+
+    e_lsl_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x4a]
+
+    e_lsl_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x40]
+
+    e_lsl_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x45]
+
+    e_lsl_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x4f]
+
+    e_lsl_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x5f]
+
+    e_lsl_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x4a]
+
+    e_lsl_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x40]
+
+    e_lsl_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x45]
+
+    e_lsl_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x4f]
+
+    e_lsl_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x5f]
+
+    e_lsl_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x4a]
+
+    e_lsl_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x40]
+
+    e_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x40]
+
+    e_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x45]
+
+    e_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x4f]
+
+    e_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x5f]
+
+    e_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x4a]
+
+    e_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x40]
+
+    e_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x45]
+
+    e_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x4f]
+
+    e_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x5f]
+
+    e_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x4a]
+
+    e_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x40]
+
+    e_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x45]
+
+    e_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x4f]
+
+    e_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x5f]
+
+    e_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x4a]
+
+    e_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x40]
+
+    e_lsl_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x40]
+
+    e_lsl_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x45]
+
+    e_lsl_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x4f]
+
+    e_lsl_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x5f]
+
+    e_lsl_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x4a]
+
+    e_lsl_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x40]
+
+    e_lsl_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x45]
+
+    e_lsl_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x4f]
+
+    e_lsl_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x5f]
+
+    e_lsl_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x4a]
+
+    e_lsl_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x40]
+
+    e_lsl_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x45]
+
+    e_lsl_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x4f]
+
+    e_lsl_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x5f]
+
+    e_lsl_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x4a]
+
+    e_lsl_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x40]
+
+    e_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x40]
+
+    e_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x45]
+
+    e_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x4f]
+
+    e_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x5f]
+
+    e_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x4a]
+
+    e_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x40]
+
+    e_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x45]
+
+    e_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x4f]
+
+    e_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x5f]
+
+    e_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x4a]
+
+    e_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x40]
+
+    e_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x45]
+
+    e_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x4f]
+
+    e_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x5f]
+
+    e_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x4a]
+
+    e_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x40]
+
+    e_lsl_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x60]
+
+    e_lsl_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x65]
+
+    e_lsl_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x6f]
+
+    e_lsl_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x7f]
+
+    e_lsl_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x6a]
+
+    e_lsl_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x60]
+
+    e_lsl_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x65]
+
+    e_lsl_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x6f]
+
+    e_lsl_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x7f]
+
+    e_lsl_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x6a]
+
+    e_lsl_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x60]
+
+    e_lsl_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x65]
+
+    e_lsl_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x6f]
+
+    e_lsl_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x7f]
+
+    e_lsl_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x6a]
+
+    e_lsl_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x60]
+
+    e_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x60]
+
+    e_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x65]
+
+    e_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x6f]
+
+    e_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x7f]
+
+    e_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x6a]
+
+    e_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x60]
+
+    e_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x65]
+
+    e_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x6f]
+
+    e_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x7f]
+
+    e_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x6a]
+
+    e_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x60]
+
+    e_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x65]
+
+    e_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x6f]
+
+    e_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x7f]
+
+    e_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x6a]
+
+    e_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x60]
+
+    e_lsl_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x60]
+
+    e_lsl_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x65]
+
+    e_lsl_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x6f]
+
+    e_lsl_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x7f]
+
+    e_lsl_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x6a]
+
+    e_lsl_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x60]
+
+    e_lsl_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x65]
+
+    e_lsl_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x6f]
+
+    e_lsl_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x7f]
+
+    e_lsl_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x6a]
+
+    e_lsl_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x60]
+
+    e_lsl_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x65]
+
+    e_lsl_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x6f]
+
+    e_lsl_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x7f]
+
+    e_lsl_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x6a]
+
+    e_lsl_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x60]
+
+    e_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x60]
+
+    e_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x65]
+
+    e_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x6f]
+
+    e_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x7f]
+
+    e_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x6a]
+
+    e_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x60]
+
+    e_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x65]
+
+    e_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x6f]
+
+    e_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x7f]
+
+    e_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x6a]
+
+    e_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x60]
+
+    e_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x65]
+
+    e_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x6f]
+
+    e_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x7f]
+
+    e_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x6a]
+
+    e_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x60]
+
+    e_lsl_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x80]
+
+    e_lsl_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x85]
+
+    e_lsl_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x8f]
+
+    e_lsl_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x9f]
+
+    e_lsl_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x8a]
+
+    e_lsl_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x80]
+
+    e_lsl_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x85]
+
+    e_lsl_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x8f]
+
+    e_lsl_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x9f]
+
+    e_lsl_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x8a]
+
+    e_lsl_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x80]
+
+    e_lsl_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0x85]
+
+    e_lsl_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0x8f]
+
+    e_lsl_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0x9f]
+
+    e_lsl_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x8a]
+
+    e_lsl_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0x80]
+
+    e_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x80]
+
+    e_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x85]
+
+    e_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x8f]
+
+    e_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x9f]
+
+    e_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x8a]
+
+    e_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x80]
+
+    e_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x85]
+
+    e_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x8f]
+
+    e_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x9f]
+
+    e_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x8a]
+
+    e_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x80]
+
+    e_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0x85]
+
+    e_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0x8f]
+
+    e_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0x9f]
+
+    e_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x8a]
+
+    e_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0x80]
+
+    e_lsl_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x80]
+
+    e_lsl_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x85]
+
+    e_lsl_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x8f]
+
+    e_lsl_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x9f]
+
+    e_lsl_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x8a]
+
+    e_lsl_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x80]
+
+    e_lsl_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x85]
+
+    e_lsl_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x8f]
+
+    e_lsl_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x9f]
+
+    e_lsl_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x8a]
+
+    e_lsl_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x80]
+
+    e_lsl_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0x85]
+
+    e_lsl_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0x8f]
+
+    e_lsl_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0x9f]
+
+    e_lsl_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x8a]
+
+    e_lsl_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0x80]
+
+    e_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x80]
+
+    e_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x85]
+
+    e_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x8f]
+
+    e_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x9f]
+
+    e_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x8a]
+
+    e_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x80]
+
+    e_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x85]
+
+    e_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x8f]
+
+    e_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x9f]
+
+    e_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x8a]
+
+    e_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x80]
+
+    e_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0x85]
+
+    e_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0x8f]
+
+    e_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0x9f]
+
+    e_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x8a]
+
+    e_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0x80]
+
+    e_lsl_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xa0]
+
+    e_lsl_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xa5]
+
+    e_lsl_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xaf]
+
+    e_lsl_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xbf]
+
+    e_lsl_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xaa]
+
+    e_lsl_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xa0]
+
+    e_lsl_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xa5]
+
+    e_lsl_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xaf]
+
+    e_lsl_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xbf]
+
+    e_lsl_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xaa]
+
+    e_lsl_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xa0]
+
+    e_lsl_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xa5]
+
+    e_lsl_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xaf]
+
+    e_lsl_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xbf]
+
+    e_lsl_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xaa]
+
+    e_lsl_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xa0]
+
+    e_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xa0]
+
+    e_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xa5]
+
+    e_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xaf]
+
+    e_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xbf]
+
+    e_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xaa]
+
+    e_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xa0]
+
+    e_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xa5]
+
+    e_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xaf]
+
+    e_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xbf]
+
+    e_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xaa]
+
+    e_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xa0]
+
+    e_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xa5]
+
+    e_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xaf]
+
+    e_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xbf]
+
+    e_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xaa]
+
+    e_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xa0]
+
+    e_lsl_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xa0]
+
+    e_lsl_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xa5]
+
+    e_lsl_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xaf]
+
+    e_lsl_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xbf]
+
+    e_lsl_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xaa]
+
+    e_lsl_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xa0]
+
+    e_lsl_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xa5]
+
+    e_lsl_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xaf]
+
+    e_lsl_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xbf]
+
+    e_lsl_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xaa]
+
+    e_lsl_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xa0]
+
+    e_lsl_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xa5]
+
+    e_lsl_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xaf]
+
+    e_lsl_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xbf]
+
+    e_lsl_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xaa]
+
+    e_lsl_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xa0]
+
+    e_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xa0]
+
+    e_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xa5]
+
+    e_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xaf]
+
+    e_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xbf]
+
+    e_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xaa]
+
+    e_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xa0]
+
+    e_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xa5]
+
+    e_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xaf]
+
+    e_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xbf]
+
+    e_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xaa]
+
+    e_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xa0]
+
+    e_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xa5]
+
+    e_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xaf]
+
+    e_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xbf]
+
+    e_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xaa]
+
+    e_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xa0]
+
+    e_lsl_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xc0]
+
+    e_lsl_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xc5]
+
+    e_lsl_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xcf]
+
+    e_lsl_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xdf]
+
+    e_lsl_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xca]
+
+    e_lsl_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xc0]
+
+    e_lsl_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xc5]
+
+    e_lsl_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xcf]
+
+    e_lsl_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xdf]
+
+    e_lsl_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xca]
+
+    e_lsl_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xc0]
+
+    e_lsl_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xc5]
+
+    e_lsl_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xcf]
+
+    e_lsl_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xdf]
+
+    e_lsl_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xca]
+
+    e_lsl_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xc0]
+
+    e_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xc0]
+
+    e_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xc5]
+
+    e_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xcf]
+
+    e_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xdf]
+
+    e_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xca]
+
+    e_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xc0]
+
+    e_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xc5]
+
+    e_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xcf]
+
+    e_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xdf]
+
+    e_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xca]
+
+    e_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xc0]
+
+    e_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xc5]
+
+    e_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xcf]
+
+    e_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xdf]
+
+    e_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xca]
+
+    e_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xc0]
+
+    e_lsl_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xc0]
+
+    e_lsl_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xc5]
+
+    e_lsl_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xcf]
+
+    e_lsl_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xdf]
+
+    e_lsl_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xca]
+
+    e_lsl_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xc0]
+
+    e_lsl_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xc5]
+
+    e_lsl_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xcf]
+
+    e_lsl_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xdf]
+
+    e_lsl_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xca]
+
+    e_lsl_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xc0]
+
+    e_lsl_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xc5]
+
+    e_lsl_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xcf]
+
+    e_lsl_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xdf]
+
+    e_lsl_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xca]
+
+    e_lsl_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xc0]
+
+    e_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xc0]
+
+    e_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xc5]
+
+    e_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xcf]
+
+    e_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xdf]
+
+    e_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xca]
+
+    e_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xc0]
+
+    e_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xc5]
+
+    e_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xcf]
+
+    e_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xdf]
+
+    e_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xca]
+
+    e_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xc0]
+
+    e_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xc5]
+
+    e_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xcf]
+
+    e_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xdf]
+
+    e_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xca]
+
+    e_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xc0]
+
+    e_lsl_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xe0]
+
+    e_lsl_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xe5]
+
+    e_lsl_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xef]
+
+    e_lsl_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xff]
+
+    e_lsl_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xea]
+
+    e_lsl_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xe0]
+
+    e_lsl_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xe5]
+
+    e_lsl_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xef]
+
+    e_lsl_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xff]
+
+    e_lsl_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xea]
+
+    e_lsl_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xe0]
+
+    e_lsl_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x20,0xe5]
+
+    e_lsl_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x51,0xef]
+
+    e_lsl_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x71,0xff]
+
+    e_lsl_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xea]
+
+    e_lsl_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x00,0xe0]
+
+    e_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xe0]
+
+    e_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xe5]
+
+    e_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xef]
+
+    e_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xff]
+
+    e_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xea]
+
+    e_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xe0]
+
+    e_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xe5]
+
+    e_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xef]
+
+    e_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xff]
+
+    e_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xea]
+
+    e_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xe0]
+
+    e_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x28,0xe5]
+
+    e_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x59,0xef]
+
+    e_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x79,0xff]
+
+    e_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xea]
+
+    e_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x08,0xe0]
+
+    e_lsl_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xe0]
+
+    e_lsl_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xe5]
+
+    e_lsl_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xef]
+
+    e_lsl_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xff]
+
+    e_lsl_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xea]
+
+    e_lsl_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xe0]
+
+    e_lsl_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xe5]
+
+    e_lsl_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xef]
+
+    e_lsl_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xff]
+
+    e_lsl_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xea]
+
+    e_lsl_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xe0]
+
+    e_lsl_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x20,0xe5]
+
+    e_lsl_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x51,0xef]
+
+    e_lsl_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x71,0xff]
+
+    e_lsl_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xea]
+
+    e_lsl_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x00,0xe0]
+
+    e_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xe0]
+
+    e_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xe5]
+
+    e_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xef]
+
+    e_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xff]
+
+    e_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xea]
+
+    e_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xe0]
+
+    e_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xe5]
+
+    e_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xef]
+
+    e_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xff]
+
+    e_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xea]
+
+    e_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xe0]
+
+    e_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x28,0xe5]
+
+    e_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x59,0xef]
+
+    e_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x79,0xff]
+
+    e_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xea]
+
+    e_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x08,0xe0]
+
+    e_lsl_ze r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x00,0x00]
+
+    e_lsl_nz r2, r2, 0x5
+# CHECK: encoding: [0x50,0x08,0x20,0x05]
+
+    e_lsl_po r5, r5, 0xf
+# CHECK: encoding: [0x70,0x14,0x50,0x0f]
+
+    e_lsl_ne r7, r7, 0x1f
+# CHECK: encoding: [0x90,0x1c,0x70,0x1f]
+
+    e_lsl r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x10,0x0a]
+
+    e_lsl_az r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x00,0x00]
+
+    e_lsl_zb r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x08,0x20,0x05]
+
+    e_lsl_ca r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x14,0x50,0x0f]
+
+    e_lsl_nc r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1d,0x70,0x1f]
+
+    e_lsl_cz r1, r1, 0xa
+# CHECK: encoding: [0x30,0x05,0x10,0x0a]
+
+    e_lsl_spo r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x00,0x00]
+
+    e_lsl_sne r2, r2, 0x5
+# CHECK: encoding: [0x70,0x09,0x20,0x05]
+
+    e_lsl_nbs r5, r5, 0xf
+# CHECK: encoding: [0x90,0x15,0x50,0x0f]
+
+    e_lsl_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0x1d,0x70,0x1f]
+
+    e_lsl_bs r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x05,0x10,0x0a]
+
+    e_lsl_ex r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x00,0x00]
+
+    e_lsr_ze r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x08,0x00]
+
+    e_lsr_nz r2, r2, 0x5
+# CHECK: encoding: [0x50,0x08,0x28,0x05]
+
+    e_lsr_po r5, r5, 0xf
+# CHECK: encoding: [0x70,0x14,0x58,0x0f]
+
+    e_lsr_ne r7, r7, 0x1f
+# CHECK: encoding: [0x90,0x1c,0x78,0x1f]
+
+    e_lsr r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x18,0x0a]
+
+    e_lsr_az r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x08,0x00]
+
+    e_lsr_zb r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x08,0x28,0x05]
+
+    e_lsr_ca r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x14,0x58,0x0f]
+
+    e_lsr_nc r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1d,0x78,0x1f]
+
+    e_lsr_cz r1, r1, 0xa
+# CHECK: encoding: [0x30,0x05,0x18,0x0a]
+
+    e_lsr_spo r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x08,0x00]
+
+    e_lsr_sne r2, r2, 0x5
+# CHECK: encoding: [0x70,0x09,0x28,0x05]
+
+    e_lsr_nbs r5, r5, 0xf
+# CHECK: encoding: [0x90,0x15,0x58,0x0f]
+
+    e_lsr_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0x1d,0x78,0x1f]
+
+    e_lsr_bs r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x05,0x18,0x0a]
+
+    e_lsr_ex r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x08,0x00]
+
+    e_lsls_ze r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x00,0x00]
+
+    e_lsls_nz r2, r2, 0x5
+# CHECK: encoding: [0x50,0x0a,0x20,0x05]
+
+    e_lsls_po r5, r5, 0xf
+# CHECK: encoding: [0x70,0x16,0x50,0x0f]
+
+    e_lsls_ne r7, r7, 0x1f
+# CHECK: encoding: [0x90,0x1e,0x70,0x1f]
+
+    e_lsls r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x10,0x0a]
+
+    e_lsls_az r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x00,0x00]
+
+    e_lsls_zb r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x0a,0x20,0x05]
+
+    e_lsls_ca r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x16,0x50,0x0f]
+
+    e_lsls_nc r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1f,0x70,0x1f]
+
+    e_lsls_cz r1, r1, 0xa
+# CHECK: encoding: [0x30,0x07,0x10,0x0a]
+
+    e_lsls_spo r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x00,0x00]
+
+    e_lsls_sne r2, r2, 0x5
+# CHECK: encoding: [0x70,0x0b,0x20,0x05]
+
+    e_lsls_nbs r5, r5, 0xf
+# CHECK: encoding: [0x90,0x17,0x50,0x0f]
+
+    e_lsls_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0x1f,0x70,0x1f]
+
+    e_lsls_bs r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x07,0x10,0x0a]
+
+    e_lsls_ex r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x00,0x00]
+
+    e_lsrs_ze r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x08,0x00]
+
+    e_lsrs_nz r2, r2, 0x5
+# CHECK: encoding: [0x50,0x0a,0x28,0x05]
+
+    e_lsrs_po r5, r5, 0xf
+# CHECK: encoding: [0x70,0x16,0x58,0x0f]
+
+    e_lsrs_ne r7, r7, 0x1f
+# CHECK: encoding: [0x90,0x1e,0x78,0x1f]
+
+    e_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x18,0x0a]
+
+    e_lsrs_az r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x08,0x00]
+
+    e_lsrs_zb r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x0a,0x28,0x05]
+
+    e_lsrs_ca r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x16,0x58,0x0f]
+
+    e_lsrs_nc r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1f,0x78,0x1f]
+
+    e_lsrs_cz r1, r1, 0xa
+# CHECK: encoding: [0x30,0x07,0x18,0x0a]
+
+    e_lsrs_spo r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x08,0x00]
+
+    e_lsrs_sne r2, r2, 0x5
+# CHECK: encoding: [0x70,0x0b,0x28,0x05]
+
+    e_lsrs_nbs r5, r5, 0xf
+# CHECK: encoding: [0x90,0x17,0x58,0x0f]
+
+    e_lsrs_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0x1f,0x78,0x1f]
+
+    e_lsrs_bs r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x07,0x18,0x0a]
+
+    e_lsrs_ex r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x08,0x00]
+
+    e_lsl_and_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x00,0x20]
+
+    e_lsl_and_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x20,0x25]
+
+    e_lsl_and_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x51,0x2f]
+
+    e_lsl_and_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x71,0x3f]
+
+    e_lsl_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x2a]
+
+    e_lsl_and_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x00,0x20]
+
+    e_lsl_and_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x20,0x25]
+
+    e_lsl_and_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x51,0x2f]
+
+    e_lsl_and_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x71,0x3f]
+
+    e_lsl_and_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x10,0x2a]
+
+    e_lsl_and_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x00,0x20]
+
+    e_lsl_and_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x20,0x25]
+
+    e_lsl_and_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x51,0x2f]
+
+    e_lsl_and_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x71,0x3f]
+
+    e_lsl_and_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x10,0x2a]
+
+    e_lsl_and_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x00,0x20]
+
+    e_lsr_and_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x08,0x20]
+
+    e_lsr_and_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x28,0x25]
+
+    e_lsr_and_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x59,0x2f]
+
+    e_lsr_and_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x79,0x3f]
+
+    e_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x2a]
+
+    e_lsr_and_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x08,0x20]
+
+    e_lsr_and_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x28,0x25]
+
+    e_lsr_and_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x59,0x2f]
+
+    e_lsr_and_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x79,0x3f]
+
+    e_lsr_and_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x18,0x2a]
+
+    e_lsr_and_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x08,0x20]
+
+    e_lsr_and_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x28,0x25]
+
+    e_lsr_and_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x59,0x2f]
+
+    e_lsr_and_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x79,0x3f]
+
+    e_lsr_and_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x18,0x2a]
+
+    e_lsr_and_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x08,0x20]
+
+    e_lsl_ands_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x00,0x20]
+
+    e_lsl_ands_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x20,0x25]
+
+    e_lsl_ands_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x51,0x2f]
+
+    e_lsl_ands_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x71,0x3f]
+
+    e_lsl_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x2a]
+
+    e_lsl_ands_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x00,0x20]
+
+    e_lsl_ands_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x20,0x25]
+
+    e_lsl_ands_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x51,0x2f]
+
+    e_lsl_ands_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x71,0x3f]
+
+    e_lsl_ands_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x10,0x2a]
+
+    e_lsl_ands_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x00,0x20]
+
+    e_lsl_ands_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x20,0x25]
+
+    e_lsl_ands_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x51,0x2f]
+
+    e_lsl_ands_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x71,0x3f]
+
+    e_lsl_ands_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x10,0x2a]
+
+    e_lsl_ands_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x00,0x20]
+
+    e_lsr_ands_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x08,0x20]
+
+    e_lsr_ands_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x28,0x25]
+
+    e_lsr_ands_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x59,0x2f]
+
+    e_lsr_ands_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x79,0x3f]
+
+    e_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x2a]
+
+    e_lsr_ands_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x08,0x20]
+
+    e_lsr_ands_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x28,0x25]
+
+    e_lsr_ands_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x59,0x2f]
+
+    e_lsr_ands_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x79,0x3f]
+
+    e_lsr_ands_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x18,0x2a]
+
+    e_lsr_ands_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x08,0x20]
+
+    e_lsr_ands_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x28,0x25]
+
+    e_lsr_ands_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x59,0x2f]
+
+    e_lsr_ands_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x79,0x3f]
+
+    e_lsr_ands_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x18,0x2a]
+
+    e_lsr_ands_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x08,0x20]
+
+    e_lsl_or_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x00,0x40]
+
+    e_lsl_or_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x20,0x45]
+
+    e_lsl_or_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x51,0x4f]
+
+    e_lsl_or_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x71,0x5f]
+
+    e_lsl_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x4a]
+
+    e_lsl_or_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x00,0x40]
+
+    e_lsl_or_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x20,0x45]
+
+    e_lsl_or_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x51,0x4f]
+
+    e_lsl_or_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x71,0x5f]
+
+    e_lsl_or_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x10,0x4a]
+
+    e_lsl_or_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x00,0x40]
+
+    e_lsl_or_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x20,0x45]
+
+    e_lsl_or_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x51,0x4f]
+
+    e_lsl_or_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x71,0x5f]
+
+    e_lsl_or_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x10,0x4a]
+
+    e_lsl_or_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x00,0x40]
+
+    e_lsr_or_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x08,0x40]
+
+    e_lsr_or_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x28,0x45]
+
+    e_lsr_or_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x59,0x4f]
+
+    e_lsr_or_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x79,0x5f]
+
+    e_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x4a]
+
+    e_lsr_or_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x08,0x40]
+
+    e_lsr_or_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x28,0x45]
+
+    e_lsr_or_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x59,0x4f]
+
+    e_lsr_or_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x79,0x5f]
+
+    e_lsr_or_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x18,0x4a]
+
+    e_lsr_or_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x08,0x40]
+
+    e_lsr_or_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x28,0x45]
+
+    e_lsr_or_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x59,0x4f]
+
+    e_lsr_or_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x79,0x5f]
+
+    e_lsr_or_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x18,0x4a]
+
+    e_lsr_or_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x08,0x40]
+
+    e_lsl_ors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x00,0x40]
+
+    e_lsl_ors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x20,0x45]
+
+    e_lsl_ors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x51,0x4f]
+
+    e_lsl_ors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x71,0x5f]
+
+    e_lsl_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x4a]
+
+    e_lsl_ors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x00,0x40]
+
+    e_lsl_ors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x20,0x45]
+
+    e_lsl_ors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x51,0x4f]
+
+    e_lsl_ors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x71,0x5f]
+
+    e_lsl_ors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x10,0x4a]
+
+    e_lsl_ors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x00,0x40]
+
+    e_lsl_ors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x20,0x45]
+
+    e_lsl_ors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x51,0x4f]
+
+    e_lsl_ors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x71,0x5f]
+
+    e_lsl_ors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x10,0x4a]
+
+    e_lsl_ors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x00,0x40]
+
+    e_lsr_ors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x08,0x40]
+
+    e_lsr_ors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x28,0x45]
+
+    e_lsr_ors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x59,0x4f]
+
+    e_lsr_ors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x79,0x5f]
+
+    e_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x4a]
+
+    e_lsr_ors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x08,0x40]
+
+    e_lsr_ors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x28,0x45]
+
+    e_lsr_ors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x59,0x4f]
+
+    e_lsr_ors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x79,0x5f]
+
+    e_lsr_ors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x18,0x4a]
+
+    e_lsr_ors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x08,0x40]
+
+    e_lsr_ors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x28,0x45]
+
+    e_lsr_ors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x59,0x4f]
+
+    e_lsr_ors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x79,0x5f]
+
+    e_lsr_ors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x18,0x4a]
+
+    e_lsr_ors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x08,0x40]
+
+    e_lsl_xor_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x00,0x60]
+
+    e_lsl_xor_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x20,0x65]
+
+    e_lsl_xor_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x51,0x6f]
+
+    e_lsl_xor_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x71,0x7f]
+
+    e_lsl_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x6a]
+
+    e_lsl_xor_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x00,0x60]
+
+    e_lsl_xor_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x20,0x65]
+
+    e_lsl_xor_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x51,0x6f]
+
+    e_lsl_xor_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x71,0x7f]
+
+    e_lsl_xor_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x10,0x6a]
+
+    e_lsl_xor_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x00,0x60]
+
+    e_lsl_xor_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x20,0x65]
+
+    e_lsl_xor_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x51,0x6f]
+
+    e_lsl_xor_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x71,0x7f]
+
+    e_lsl_xor_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x10,0x6a]
+
+    e_lsl_xor_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x00,0x60]
+
+    e_lsr_xor_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x08,0x60]
+
+    e_lsr_xor_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x28,0x65]
+
+    e_lsr_xor_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x59,0x6f]
+
+    e_lsr_xor_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x79,0x7f]
+
+    e_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x6a]
+
+    e_lsr_xor_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x08,0x60]
+
+    e_lsr_xor_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x28,0x65]
+
+    e_lsr_xor_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x59,0x6f]
+
+    e_lsr_xor_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x79,0x7f]
+
+    e_lsr_xor_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x18,0x6a]
+
+    e_lsr_xor_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x08,0x60]
+
+    e_lsr_xor_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x28,0x65]
+
+    e_lsr_xor_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x59,0x6f]
+
+    e_lsr_xor_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x79,0x7f]
+
+    e_lsr_xor_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x18,0x6a]
+
+    e_lsr_xor_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x08,0x60]
+
+    e_lsl_xors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x00,0x60]
+
+    e_lsl_xors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x20,0x65]
+
+    e_lsl_xors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x51,0x6f]
+
+    e_lsl_xors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x71,0x7f]
+
+    e_lsl_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x6a]
+
+    e_lsl_xors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x00,0x60]
+
+    e_lsl_xors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x20,0x65]
+
+    e_lsl_xors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x51,0x6f]
+
+    e_lsl_xors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x71,0x7f]
+
+    e_lsl_xors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x10,0x6a]
+
+    e_lsl_xors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x00,0x60]
+
+    e_lsl_xors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x20,0x65]
+
+    e_lsl_xors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x51,0x6f]
+
+    e_lsl_xors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x71,0x7f]
+
+    e_lsl_xors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x10,0x6a]
+
+    e_lsl_xors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x00,0x60]
+
+    e_lsr_xors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x08,0x60]
+
+    e_lsr_xors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x28,0x65]
+
+    e_lsr_xors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x59,0x6f]
+
+    e_lsr_xors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x79,0x7f]
+
+    e_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x6a]
+
+    e_lsr_xors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x08,0x60]
+
+    e_lsr_xors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x28,0x65]
+
+    e_lsr_xors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x59,0x6f]
+
+    e_lsr_xors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x79,0x7f]
+
+    e_lsr_xors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x18,0x6a]
+
+    e_lsr_xors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x08,0x60]
+
+    e_lsr_xors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x28,0x65]
+
+    e_lsr_xors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x59,0x6f]
+
+    e_lsr_xors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x79,0x7f]
+
+    e_lsr_xors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x18,0x6a]
+
+    e_lsr_xors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x08,0x60]
+
+    e_lsl_add_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x00,0x80]
+
+    e_lsl_add_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x20,0x85]
+
+    e_lsl_add_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x51,0x8f]
+
+    e_lsl_add_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x71,0x9f]
+
+    e_lsl_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0x8a]
+
+    e_lsl_add_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x00,0x80]
+
+    e_lsl_add_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x20,0x85]
+
+    e_lsl_add_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x51,0x8f]
+
+    e_lsl_add_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x71,0x9f]
+
+    e_lsl_add_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x10,0x8a]
+
+    e_lsl_add_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x00,0x80]
+
+    e_lsl_add_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x20,0x85]
+
+    e_lsl_add_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x51,0x8f]
+
+    e_lsl_add_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x71,0x9f]
+
+    e_lsl_add_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x10,0x8a]
+
+    e_lsl_add_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x00,0x80]
+
+    e_lsr_add_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x08,0x80]
+
+    e_lsr_add_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x28,0x85]
+
+    e_lsr_add_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x59,0x8f]
+
+    e_lsr_add_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x79,0x9f]
+
+    e_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0x8a]
+
+    e_lsr_add_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x08,0x80]
+
+    e_lsr_add_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x28,0x85]
+
+    e_lsr_add_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x59,0x8f]
+
+    e_lsr_add_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x79,0x9f]
+
+    e_lsr_add_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x18,0x8a]
+
+    e_lsr_add_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x08,0x80]
+
+    e_lsr_add_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x28,0x85]
+
+    e_lsr_add_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x59,0x8f]
+
+    e_lsr_add_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x79,0x9f]
+
+    e_lsr_add_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x18,0x8a]
+
+    e_lsr_add_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x08,0x80]
+
+    e_lsl_adds_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x00,0x80]
+
+    e_lsl_adds_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x20,0x85]
+
+    e_lsl_adds_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x51,0x8f]
+
+    e_lsl_adds_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x71,0x9f]
+
+    e_lsl_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0x8a]
+
+    e_lsl_adds_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x00,0x80]
+
+    e_lsl_adds_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x20,0x85]
+
+    e_lsl_adds_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x51,0x8f]
+
+    e_lsl_adds_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x71,0x9f]
+
+    e_lsl_adds_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x10,0x8a]
+
+    e_lsl_adds_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x00,0x80]
+
+    e_lsl_adds_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x20,0x85]
+
+    e_lsl_adds_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x51,0x8f]
+
+    e_lsl_adds_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x71,0x9f]
+
+    e_lsl_adds_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x10,0x8a]
+
+    e_lsl_adds_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x00,0x80]
+
+    e_lsr_adds_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x08,0x80]
+
+    e_lsr_adds_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x28,0x85]
+
+    e_lsr_adds_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x59,0x8f]
+
+    e_lsr_adds_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x79,0x9f]
+
+    e_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0x8a]
+
+    e_lsr_adds_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x08,0x80]
+
+    e_lsr_adds_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x28,0x85]
+
+    e_lsr_adds_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x59,0x8f]
+
+    e_lsr_adds_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x79,0x9f]
+
+    e_lsr_adds_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x18,0x8a]
+
+    e_lsr_adds_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x08,0x80]
+
+    e_lsr_adds_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x28,0x85]
+
+    e_lsr_adds_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x59,0x8f]
+
+    e_lsr_adds_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x79,0x9f]
+
+    e_lsr_adds_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x18,0x8a]
+
+    e_lsr_adds_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x08,0x80]
+
+    e_lsl_sub_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x00,0xa0]
+
+    e_lsl_sub_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x20,0xa5]
+
+    e_lsl_sub_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x51,0xaf]
+
+    e_lsl_sub_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x71,0xbf]
+
+    e_lsl_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xaa]
+
+    e_lsl_sub_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x00,0xa0]
+
+    e_lsl_sub_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x20,0xa5]
+
+    e_lsl_sub_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x51,0xaf]
+
+    e_lsl_sub_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x71,0xbf]
+
+    e_lsl_sub_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x10,0xaa]
+
+    e_lsl_sub_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x00,0xa0]
+
+    e_lsl_sub_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x20,0xa5]
+
+    e_lsl_sub_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x51,0xaf]
+
+    e_lsl_sub_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x71,0xbf]
+
+    e_lsl_sub_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x10,0xaa]
+
+    e_lsl_sub_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x00,0xa0]
+
+    e_lsr_sub_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x08,0xa0]
+
+    e_lsr_sub_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x28,0xa5]
+
+    e_lsr_sub_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x59,0xaf]
+
+    e_lsr_sub_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x79,0xbf]
+
+    e_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xaa]
+
+    e_lsr_sub_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x08,0xa0]
+
+    e_lsr_sub_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x28,0xa5]
+
+    e_lsr_sub_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x59,0xaf]
+
+    e_lsr_sub_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x79,0xbf]
+
+    e_lsr_sub_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x18,0xaa]
+
+    e_lsr_sub_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x08,0xa0]
+
+    e_lsr_sub_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x28,0xa5]
+
+    e_lsr_sub_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x59,0xaf]
+
+    e_lsr_sub_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x79,0xbf]
+
+    e_lsr_sub_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x18,0xaa]
+
+    e_lsr_sub_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x08,0xa0]
+
+    e_lsl_subs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x00,0xa0]
+
+    e_lsl_subs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x20,0xa5]
+
+    e_lsl_subs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x51,0xaf]
+
+    e_lsl_subs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x71,0xbf]
+
+    e_lsl_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xaa]
+
+    e_lsl_subs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x00,0xa0]
+
+    e_lsl_subs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x20,0xa5]
+
+    e_lsl_subs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x51,0xaf]
+
+    e_lsl_subs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x71,0xbf]
+
+    e_lsl_subs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x10,0xaa]
+
+    e_lsl_subs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x00,0xa0]
+
+    e_lsl_subs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x20,0xa5]
+
+    e_lsl_subs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x51,0xaf]
+
+    e_lsl_subs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x71,0xbf]
+
+    e_lsl_subs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x10,0xaa]
+
+    e_lsl_subs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x00,0xa0]
+
+    e_lsr_subs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x08,0xa0]
+
+    e_lsr_subs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x28,0xa5]
+
+    e_lsr_subs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x59,0xaf]
+
+    e_lsr_subs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x79,0xbf]
+
+    e_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xaa]
+
+    e_lsr_subs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x08,0xa0]
+
+    e_lsr_subs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x28,0xa5]
+
+    e_lsr_subs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x59,0xaf]
+
+    e_lsr_subs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x79,0xbf]
+
+    e_lsr_subs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x18,0xaa]
+
+    e_lsr_subs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x08,0xa0]
+
+    e_lsr_subs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x28,0xa5]
+
+    e_lsr_subs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x59,0xaf]
+
+    e_lsr_subs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x79,0xbf]
+
+    e_lsr_subs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x18,0xaa]
+
+    e_lsr_subs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x08,0xa0]
+
+    e_lsl_adc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x00,0xc0]
+
+    e_lsl_adc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x20,0xc5]
+
+    e_lsl_adc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x51,0xcf]
+
+    e_lsl_adc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x71,0xdf]
+
+    e_lsl_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xca]
+
+    e_lsl_adc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x00,0xc0]
+
+    e_lsl_adc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x20,0xc5]
+
+    e_lsl_adc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x51,0xcf]
+
+    e_lsl_adc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x71,0xdf]
+
+    e_lsl_adc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x10,0xca]
+
+    e_lsl_adc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x00,0xc0]
+
+    e_lsl_adc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x20,0xc5]
+
+    e_lsl_adc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x51,0xcf]
+
+    e_lsl_adc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x71,0xdf]
+
+    e_lsl_adc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x10,0xca]
+
+    e_lsl_adc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x00,0xc0]
+
+    e_lsr_adc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x08,0xc0]
+
+    e_lsr_adc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x28,0xc5]
+
+    e_lsr_adc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x59,0xcf]
+
+    e_lsr_adc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x79,0xdf]
+
+    e_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xca]
+
+    e_lsr_adc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x08,0xc0]
+
+    e_lsr_adc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x28,0xc5]
+
+    e_lsr_adc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x59,0xcf]
+
+    e_lsr_adc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x79,0xdf]
+
+    e_lsr_adc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x18,0xca]
+
+    e_lsr_adc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x08,0xc0]
+
+    e_lsr_adc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x28,0xc5]
+
+    e_lsr_adc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x59,0xcf]
+
+    e_lsr_adc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x79,0xdf]
+
+    e_lsr_adc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x18,0xca]
+
+    e_lsr_adc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x08,0xc0]
+
+    e_lsl_adcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x00,0xc0]
+
+    e_lsl_adcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x20,0xc5]
+
+    e_lsl_adcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x51,0xcf]
+
+    e_lsl_adcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x71,0xdf]
+
+    e_lsl_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xca]
+
+    e_lsl_adcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x00,0xc0]
+
+    e_lsl_adcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x20,0xc5]
+
+    e_lsl_adcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x51,0xcf]
+
+    e_lsl_adcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x71,0xdf]
+
+    e_lsl_adcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x10,0xca]
+
+    e_lsl_adcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x00,0xc0]
+
+    e_lsl_adcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x20,0xc5]
+
+    e_lsl_adcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x51,0xcf]
+
+    e_lsl_adcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x71,0xdf]
+
+    e_lsl_adcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x10,0xca]
+
+    e_lsl_adcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x00,0xc0]
+
+    e_lsr_adcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x08,0xc0]
+
+    e_lsr_adcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x28,0xc5]
+
+    e_lsr_adcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x59,0xcf]
+
+    e_lsr_adcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x79,0xdf]
+
+    e_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xca]
+
+    e_lsr_adcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x08,0xc0]
+
+    e_lsr_adcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x28,0xc5]
+
+    e_lsr_adcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x59,0xcf]
+
+    e_lsr_adcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x79,0xdf]
+
+    e_lsr_adcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x18,0xca]
+
+    e_lsr_adcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x08,0xc0]
+
+    e_lsr_adcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x28,0xc5]
+
+    e_lsr_adcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x59,0xcf]
+
+    e_lsr_adcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x79,0xdf]
+
+    e_lsr_adcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x18,0xca]
+
+    e_lsr_adcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x08,0xc0]
+
+    e_lsl_sbc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x00,0xe0]
+
+    e_lsl_sbc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x20,0xe5]
+
+    e_lsl_sbc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x51,0xef]
+
+    e_lsl_sbc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x71,0xff]
+
+    e_lsl_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x10,0xea]
+
+    e_lsl_sbc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x00,0xe0]
+
+    e_lsl_sbc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x20,0xe5]
+
+    e_lsl_sbc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x51,0xef]
+
+    e_lsl_sbc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x71,0xff]
+
+    e_lsl_sbc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x10,0xea]
+
+    e_lsl_sbc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x00,0xe0]
+
+    e_lsl_sbc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x20,0xe5]
+
+    e_lsl_sbc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x51,0xef]
+
+    e_lsl_sbc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x71,0xff]
+
+    e_lsl_sbc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x10,0xea]
+
+    e_lsl_sbc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x00,0xe0]
+
+    e_lsr_sbc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x08,0xe0]
+
+    e_lsr_sbc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x28,0xe5]
+
+    e_lsr_sbc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x59,0xef]
+
+    e_lsr_sbc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x79,0xff]
+
+    e_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x18,0xea]
+
+    e_lsr_sbc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x08,0xe0]
+
+    e_lsr_sbc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x28,0xe5]
+
+    e_lsr_sbc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x59,0xef]
+
+    e_lsr_sbc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x79,0xff]
+
+    e_lsr_sbc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x18,0xea]
+
+    e_lsr_sbc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x08,0xe0]
+
+    e_lsr_sbc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x28,0xe5]
+
+    e_lsr_sbc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x59,0xef]
+
+    e_lsr_sbc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x79,0xff]
+
+    e_lsr_sbc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x18,0xea]
+
+    e_lsr_sbc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x08,0xe0]
+
+    e_lsl_sbcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x00,0xe0]
+
+    e_lsl_sbcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x20,0xe5]
+
+    e_lsl_sbcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x51,0xef]
+
+    e_lsl_sbcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x71,0xff]
+
+    e_lsl_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x10,0xea]
+
+    e_lsl_sbcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x00,0xe0]
+
+    e_lsl_sbcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x20,0xe5]
+
+    e_lsl_sbcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x51,0xef]
+
+    e_lsl_sbcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x71,0xff]
+
+    e_lsl_sbcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x10,0xea]
+
+    e_lsl_sbcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x00,0xe0]
+
+    e_lsl_sbcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x20,0xe5]
+
+    e_lsl_sbcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x51,0xef]
+
+    e_lsl_sbcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x71,0xff]
+
+    e_lsl_sbcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x10,0xea]
+
+    e_lsl_sbcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x00,0xe0]
+
+    e_lsr_sbcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x08,0xe0]
+
+    e_lsr_sbcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x28,0xe5]
+
+    e_lsr_sbcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x59,0xef]
+
+    e_lsr_sbcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x79,0xff]
+
+    e_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x18,0xea]
+
+    e_lsr_sbcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x08,0xe0]
+
+    e_lsr_sbcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x28,0xe5]
+
+    e_lsr_sbcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x59,0xef]
+
+    e_lsr_sbcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x79,0xff]
+
+    e_lsr_sbcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x18,0xea]
+
+    e_lsr_sbcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x08,0xe0]
+
+    e_lsr_sbcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x28,0xe5]
+
+    e_lsr_sbcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x59,0xef]
+
+    e_lsr_sbcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x79,0xff]
+
+    e_lsr_sbcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x18,0xea]
+
+    e_lsr_sbcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x08,0xe0]
+
+    e_ror r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x00]
+
+    e_ror r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x2c,0x05]
+
+    e_ror r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x5c,0x0f]
+
+    e_ror r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x7c,0x1f]
+
+    e_ror r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x1c,0x0a]
+
+    e_ror r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x00]
+
+    e_ror r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x2c,0x05]
+
+    e_ror r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x5c,0x0f]
+
+    e_ror r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x7c,0x1f]
+
+    e_ror r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x1c,0x0a]
+
+    e_ror r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x00]
+
+    e_ror r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x2c,0x05]
+
+    e_ror r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x5c,0x0f]
+
+    e_ror r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x7c,0x1f]
+
+    e_ror r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x1c,0x0a]
+
+    e_ror r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x00]
+
+    e_rors r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x00]
+
+    e_rors r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x2c,0x05]
+
+    e_rors r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x5c,0x0f]
+
+    e_rors r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x7c,0x1f]
+
+    e_rors r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x1c,0x0a]
+
+    e_rors r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x00]
+
+    e_rors r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x2c,0x05]
+
+    e_rors r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x5c,0x0f]
+
+    e_rors r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x7c,0x1f]
+
+    e_rors r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x1c,0x0a]
+
+    e_rors r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x00]
+
+    e_rors r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x2c,0x05]
+
+    e_rors r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x5c,0x0f]
+
+    e_rors r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x7c,0x1f]
+
+    e_rors r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x1c,0x0a]
+
+    e_rors r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x00]
+
+    e_ror_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x20]
+
+    e_ror_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x25]
+
+    e_ror_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x2f]
+
+    e_ror_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x3f]
+
+    e_ror_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x2a]
+
+    e_ror_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x20]
+
+    e_ror_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x25]
+
+    e_ror_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x2f]
+
+    e_ror_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x3f]
+
+    e_ror_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x2a]
+
+    e_ror_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x20]
+
+    e_ror_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x25]
+
+    e_ror_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x2f]
+
+    e_ror_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x3f]
+
+    e_ror_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x2a]
+
+    e_ror_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x20]
+
+    e_ror_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x20]
+
+    e_ror_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x25]
+
+    e_ror_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x2f]
+
+    e_ror_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x3f]
+
+    e_ror_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x2a]
+
+    e_ror_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x20]
+
+    e_ror_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x25]
+
+    e_ror_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x2f]
+
+    e_ror_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x3f]
+
+    e_ror_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x2a]
+
+    e_ror_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x20]
+
+    e_ror_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x25]
+
+    e_ror_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x2f]
+
+    e_ror_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x3f]
+
+    e_ror_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x2a]
+
+    e_ror_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x20]
+
+    e_ror_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x40]
+
+    e_ror_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x45]
+
+    e_ror_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x4f]
+
+    e_ror_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x5f]
+
+    e_ror_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x4a]
+
+    e_ror_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x40]
+
+    e_ror_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x45]
+
+    e_ror_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x4f]
+
+    e_ror_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x5f]
+
+    e_ror_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x4a]
+
+    e_ror_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x40]
+
+    e_ror_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x45]
+
+    e_ror_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x4f]
+
+    e_ror_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x5f]
+
+    e_ror_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x4a]
+
+    e_ror_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x40]
+
+    e_ror_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x40]
+
+    e_ror_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x45]
+
+    e_ror_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x4f]
+
+    e_ror_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x5f]
+
+    e_ror_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x4a]
+
+    e_ror_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x40]
+
+    e_ror_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x45]
+
+    e_ror_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x4f]
+
+    e_ror_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x5f]
+
+    e_ror_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x4a]
+
+    e_ror_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x40]
+
+    e_ror_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x45]
+
+    e_ror_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x4f]
+
+    e_ror_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x5f]
+
+    e_ror_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x4a]
+
+    e_ror_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x40]
+
+    e_ror_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x60]
+
+    e_ror_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x65]
+
+    e_ror_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x6f]
+
+    e_ror_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x7f]
+
+    e_ror_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x6a]
+
+    e_ror_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x60]
+
+    e_ror_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x65]
+
+    e_ror_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x6f]
+
+    e_ror_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x7f]
+
+    e_ror_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x6a]
+
+    e_ror_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x60]
+
+    e_ror_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x65]
+
+    e_ror_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x6f]
+
+    e_ror_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x7f]
+
+    e_ror_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x6a]
+
+    e_ror_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x60]
+
+    e_ror_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x60]
+
+    e_ror_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x65]
+
+    e_ror_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x6f]
+
+    e_ror_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x7f]
+
+    e_ror_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x6a]
+
+    e_ror_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x60]
+
+    e_ror_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x65]
+
+    e_ror_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x6f]
+
+    e_ror_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x7f]
+
+    e_ror_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x6a]
+
+    e_ror_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x60]
+
+    e_ror_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x65]
+
+    e_ror_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x6f]
+
+    e_ror_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x7f]
+
+    e_ror_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x6a]
+
+    e_ror_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x60]
+
+    e_ror_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x80]
+
+    e_ror_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x85]
+
+    e_ror_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x8f]
+
+    e_ror_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x9f]
+
+    e_ror_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x8a]
+
+    e_ror_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x80]
+
+    e_ror_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x85]
+
+    e_ror_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x8f]
+
+    e_ror_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x9f]
+
+    e_ror_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x8a]
+
+    e_ror_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x80]
+
+    e_ror_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0x85]
+
+    e_ror_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0x8f]
+
+    e_ror_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0x9f]
+
+    e_ror_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x8a]
+
+    e_ror_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0x80]
+
+    e_ror_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x80]
+
+    e_ror_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x85]
+
+    e_ror_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x8f]
+
+    e_ror_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x9f]
+
+    e_ror_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x8a]
+
+    e_ror_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x80]
+
+    e_ror_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x85]
+
+    e_ror_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x8f]
+
+    e_ror_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x9f]
+
+    e_ror_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x8a]
+
+    e_ror_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x80]
+
+    e_ror_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0x85]
+
+    e_ror_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0x8f]
+
+    e_ror_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0x9f]
+
+    e_ror_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x8a]
+
+    e_ror_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0x80]
+
+    e_ror_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xa0]
+
+    e_ror_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xa5]
+
+    e_ror_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xaf]
+
+    e_ror_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xbf]
+
+    e_ror_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xaa]
+
+    e_ror_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xa0]
+
+    e_ror_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xa5]
+
+    e_ror_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xaf]
+
+    e_ror_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xbf]
+
+    e_ror_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xaa]
+
+    e_ror_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xa0]
+
+    e_ror_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xa5]
+
+    e_ror_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xaf]
+
+    e_ror_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xbf]
+
+    e_ror_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xaa]
+
+    e_ror_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xa0]
+
+    e_ror_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xa0]
+
+    e_ror_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xa5]
+
+    e_ror_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xaf]
+
+    e_ror_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xbf]
+
+    e_ror_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xaa]
+
+    e_ror_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xa0]
+
+    e_ror_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xa5]
+
+    e_ror_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xaf]
+
+    e_ror_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xbf]
+
+    e_ror_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xaa]
+
+    e_ror_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xa0]
+
+    e_ror_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xa5]
+
+    e_ror_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xaf]
+
+    e_ror_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xbf]
+
+    e_ror_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xaa]
+
+    e_ror_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xa0]
+
+    e_ror_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xc0]
+
+    e_ror_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xc5]
+
+    e_ror_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xcf]
+
+    e_ror_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xdf]
+
+    e_ror_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xca]
+
+    e_ror_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xc0]
+
+    e_ror_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xc5]
+
+    e_ror_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xcf]
+
+    e_ror_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xdf]
+
+    e_ror_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xca]
+
+    e_ror_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xc0]
+
+    e_ror_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xc5]
+
+    e_ror_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xcf]
+
+    e_ror_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xdf]
+
+    e_ror_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xca]
+
+    e_ror_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xc0]
+
+    e_ror_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xc0]
+
+    e_ror_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xc5]
+
+    e_ror_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xcf]
+
+    e_ror_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xdf]
+
+    e_ror_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xca]
+
+    e_ror_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xc0]
+
+    e_ror_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xc5]
+
+    e_ror_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xcf]
+
+    e_ror_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xdf]
+
+    e_ror_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xca]
+
+    e_ror_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xc0]
+
+    e_ror_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xc5]
+
+    e_ror_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xcf]
+
+    e_ror_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xdf]
+
+    e_ror_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xca]
+
+    e_ror_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xc0]
+
+    e_ror_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xe0]
+
+    e_ror_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xe5]
+
+    e_ror_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xef]
+
+    e_ror_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xff]
+
+    e_ror_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xea]
+
+    e_ror_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xe0]
+
+    e_ror_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xe5]
+
+    e_ror_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xef]
+
+    e_ror_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xff]
+
+    e_ror_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xea]
+
+    e_ror_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xe0]
+
+    e_ror_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x2c,0xe5]
+
+    e_ror_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x5d,0xef]
+
+    e_ror_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x7d,0xff]
+
+    e_ror_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xea]
+
+    e_ror_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x0c,0xe0]
+
+    e_ror_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xe0]
+
+    e_ror_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xe5]
+
+    e_ror_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xef]
+
+    e_ror_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xff]
+
+    e_ror_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xea]
+
+    e_ror_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xe0]
+
+    e_ror_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xe5]
+
+    e_ror_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xef]
+
+    e_ror_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xff]
+
+    e_ror_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xea]
+
+    e_ror_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xe0]
+
+    e_ror_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x2c,0xe5]
+
+    e_ror_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x5d,0xef]
+
+    e_ror_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x7d,0xff]
+
+    e_ror_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xea]
+
+    e_ror_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x0c,0xe0]
+
+    e_ror_ze r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x0c,0x00]
+
+    e_ror_nz r2, r2, 0x5
+# CHECK: encoding: [0x50,0x08,0x2c,0x05]
+
+    e_ror_po r5, r5, 0xf
+# CHECK: encoding: [0x70,0x14,0x5c,0x0f]
+
+    e_ror_ne r7, r7, 0x1f
+# CHECK: encoding: [0x90,0x1c,0x7c,0x1f]
+
+    e_ror r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x1c,0x0a]
+
+    e_ror_az r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x0c,0x00]
+
+    e_ror_zb r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x08,0x2c,0x05]
+
+    e_ror_ca r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x14,0x5c,0x0f]
+
+    e_ror_nc r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1d,0x7c,0x1f]
+
+    e_ror_cz r1, r1, 0xa
+# CHECK: encoding: [0x30,0x05,0x1c,0x0a]
+
+    e_ror_spo r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x0c,0x00]
+
+    e_ror_sne r2, r2, 0x5
+# CHECK: encoding: [0x70,0x09,0x2c,0x05]
+
+    e_ror_nbs r5, r5, 0xf
+# CHECK: encoding: [0x90,0x15,0x5c,0x0f]
+
+    e_ror_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0x1d,0x7c,0x1f]
+
+    e_ror_bs r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x05,0x1c,0x0a]
+
+    e_ror_ex r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x0c,0x00]
+
+    e_rors_ze r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x0c,0x00]
+
+    e_rors_nz r2, r2, 0x5
+# CHECK: encoding: [0x50,0x0a,0x2c,0x05]
+
+    e_rors_po r5, r5, 0xf
+# CHECK: encoding: [0x70,0x16,0x5c,0x0f]
+
+    e_rors_ne r7, r7, 0x1f
+# CHECK: encoding: [0x90,0x1e,0x7c,0x1f]
+
+    e_rors r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x1c,0x0a]
+
+    e_rors_az r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x0c,0x00]
+
+    e_rors_zb r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x0a,0x2c,0x05]
+
+    e_rors_ca r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x16,0x5c,0x0f]
+
+    e_rors_nc r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1f,0x7c,0x1f]
+
+    e_rors_cz r1, r1, 0xa
+# CHECK: encoding: [0x30,0x07,0x1c,0x0a]
+
+    e_rors_spo r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x0c,0x00]
+
+    e_rors_sne r2, r2, 0x5
+# CHECK: encoding: [0x70,0x0b,0x2c,0x05]
+
+    e_rors_nbs r5, r5, 0xf
+# CHECK: encoding: [0x90,0x17,0x5c,0x0f]
+
+    e_rors_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0x1f,0x7c,0x1f]
+
+    e_rors_bs r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x07,0x1c,0x0a]
+
+    e_rors_ex r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x0c,0x00]
+
+    e_ror_and_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x0c,0x20]
+
+    e_ror_and_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x2c,0x25]
+
+    e_ror_and_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x5d,0x2f]
+
+    e_ror_and_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x7d,0x3f]
+
+    e_ror_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x2a]
+
+    e_ror_and_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x0c,0x20]
+
+    e_ror_and_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x2c,0x25]
+
+    e_ror_and_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x5d,0x2f]
+
+    e_ror_and_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x7d,0x3f]
+
+    e_ror_and_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x1c,0x2a]
+
+    e_ror_and_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x0c,0x20]
+
+    e_ror_and_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x2c,0x25]
+
+    e_ror_and_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x5d,0x2f]
+
+    e_ror_and_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x7d,0x3f]
+
+    e_ror_and_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x1c,0x2a]
+
+    e_ror_and_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x0c,0x20]
+
+    e_ror_ands_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x0c,0x20]
+
+    e_ror_ands_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x2c,0x25]
+
+    e_ror_ands_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x5d,0x2f]
+
+    e_ror_ands_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x7d,0x3f]
+
+    e_ror_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x2a]
+
+    e_ror_ands_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x0c,0x20]
+
+    e_ror_ands_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x2c,0x25]
+
+    e_ror_ands_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x5d,0x2f]
+
+    e_ror_ands_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x7d,0x3f]
+
+    e_ror_ands_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x1c,0x2a]
+
+    e_ror_ands_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x0c,0x20]
+
+    e_ror_ands_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x2c,0x25]
+
+    e_ror_ands_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x5d,0x2f]
+
+    e_ror_ands_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x7d,0x3f]
+
+    e_ror_ands_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x1c,0x2a]
+
+    e_ror_ands_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x0c,0x20]
+
+    e_ror_or_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x0c,0x40]
+
+    e_ror_or_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x2c,0x45]
+
+    e_ror_or_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x5d,0x4f]
+
+    e_ror_or_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x7d,0x5f]
+
+    e_ror_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x4a]
+
+    e_ror_or_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x0c,0x40]
+
+    e_ror_or_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x2c,0x45]
+
+    e_ror_or_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x5d,0x4f]
+
+    e_ror_or_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x7d,0x5f]
+
+    e_ror_or_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x1c,0x4a]
+
+    e_ror_or_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x0c,0x40]
+
+    e_ror_or_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x2c,0x45]
+
+    e_ror_or_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x5d,0x4f]
+
+    e_ror_or_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x7d,0x5f]
+
+    e_ror_or_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x1c,0x4a]
+
+    e_ror_or_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x0c,0x40]
+
+    e_ror_ors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x0c,0x40]
+
+    e_ror_ors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x2c,0x45]
+
+    e_ror_ors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x5d,0x4f]
+
+    e_ror_ors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x7d,0x5f]
+
+    e_ror_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x4a]
+
+    e_ror_ors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x0c,0x40]
+
+    e_ror_ors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x2c,0x45]
+
+    e_ror_ors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x5d,0x4f]
+
+    e_ror_ors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x7d,0x5f]
+
+    e_ror_ors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x1c,0x4a]
+
+    e_ror_ors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x0c,0x40]
+
+    e_ror_ors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x2c,0x45]
+
+    e_ror_ors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x5d,0x4f]
+
+    e_ror_ors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x7d,0x5f]
+
+    e_ror_ors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x1c,0x4a]
+
+    e_ror_ors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x0c,0x40]
+
+    e_ror_xor_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x0c,0x60]
+
+    e_ror_xor_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x2c,0x65]
+
+    e_ror_xor_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x5d,0x6f]
+
+    e_ror_xor_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x7d,0x7f]
+
+    e_ror_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x6a]
+
+    e_ror_xor_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x0c,0x60]
+
+    e_ror_xor_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x2c,0x65]
+
+    e_ror_xor_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x5d,0x6f]
+
+    e_ror_xor_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x7d,0x7f]
+
+    e_ror_xor_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x1c,0x6a]
+
+    e_ror_xor_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x0c,0x60]
+
+    e_ror_xor_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x2c,0x65]
+
+    e_ror_xor_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x5d,0x6f]
+
+    e_ror_xor_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x7d,0x7f]
+
+    e_ror_xor_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x1c,0x6a]
+
+    e_ror_xor_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x0c,0x60]
+
+    e_ror_xors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x0c,0x60]
+
+    e_ror_xors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x2c,0x65]
+
+    e_ror_xors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x5d,0x6f]
+
+    e_ror_xors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x7d,0x7f]
+
+    e_ror_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x6a]
+
+    e_ror_xors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x0c,0x60]
+
+    e_ror_xors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x2c,0x65]
+
+    e_ror_xors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x5d,0x6f]
+
+    e_ror_xors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x7d,0x7f]
+
+    e_ror_xors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x1c,0x6a]
+
+    e_ror_xors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x0c,0x60]
+
+    e_ror_xors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x2c,0x65]
+
+    e_ror_xors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x5d,0x6f]
+
+    e_ror_xors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x7d,0x7f]
+
+    e_ror_xors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x1c,0x6a]
+
+    e_ror_xors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x0c,0x60]
+
+    e_ror_add_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x0c,0x80]
+
+    e_ror_add_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x2c,0x85]
+
+    e_ror_add_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x5d,0x8f]
+
+    e_ror_add_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x7d,0x9f]
+
+    e_ror_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0x8a]
+
+    e_ror_add_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x0c,0x80]
+
+    e_ror_add_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x2c,0x85]
+
+    e_ror_add_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x5d,0x8f]
+
+    e_ror_add_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x7d,0x9f]
+
+    e_ror_add_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x1c,0x8a]
+
+    e_ror_add_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x0c,0x80]
+
+    e_ror_add_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x2c,0x85]
+
+    e_ror_add_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x5d,0x8f]
+
+    e_ror_add_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x7d,0x9f]
+
+    e_ror_add_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x1c,0x8a]
+
+    e_ror_add_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x0c,0x80]
+
+    e_ror_adds_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x0c,0x80]
+
+    e_ror_adds_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x2c,0x85]
+
+    e_ror_adds_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x5d,0x8f]
+
+    e_ror_adds_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x7d,0x9f]
+
+    e_ror_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0x8a]
+
+    e_ror_adds_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x0c,0x80]
+
+    e_ror_adds_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x2c,0x85]
+
+    e_ror_adds_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x5d,0x8f]
+
+    e_ror_adds_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x7d,0x9f]
+
+    e_ror_adds_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x1c,0x8a]
+
+    e_ror_adds_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x0c,0x80]
+
+    e_ror_adds_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x2c,0x85]
+
+    e_ror_adds_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x5d,0x8f]
+
+    e_ror_adds_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x7d,0x9f]
+
+    e_ror_adds_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x1c,0x8a]
+
+    e_ror_adds_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x0c,0x80]
+
+    e_ror_sub_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x0c,0xa0]
+
+    e_ror_sub_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x2c,0xa5]
+
+    e_ror_sub_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x5d,0xaf]
+
+    e_ror_sub_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x7d,0xbf]
+
+    e_ror_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xaa]
+
+    e_ror_sub_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x0c,0xa0]
+
+    e_ror_sub_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x2c,0xa5]
+
+    e_ror_sub_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x5d,0xaf]
+
+    e_ror_sub_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x7d,0xbf]
+
+    e_ror_sub_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x1c,0xaa]
+
+    e_ror_sub_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x0c,0xa0]
+
+    e_ror_sub_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x2c,0xa5]
+
+    e_ror_sub_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x5d,0xaf]
+
+    e_ror_sub_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x7d,0xbf]
+
+    e_ror_sub_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x1c,0xaa]
+
+    e_ror_sub_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x0c,0xa0]
+
+    e_ror_subs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x0c,0xa0]
+
+    e_ror_subs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x2c,0xa5]
+
+    e_ror_subs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x5d,0xaf]
+
+    e_ror_subs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x7d,0xbf]
+
+    e_ror_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xaa]
+
+    e_ror_subs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x0c,0xa0]
+
+    e_ror_subs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x2c,0xa5]
+
+    e_ror_subs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x5d,0xaf]
+
+    e_ror_subs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x7d,0xbf]
+
+    e_ror_subs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x1c,0xaa]
+
+    e_ror_subs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x0c,0xa0]
+
+    e_ror_subs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x2c,0xa5]
+
+    e_ror_subs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x5d,0xaf]
+
+    e_ror_subs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x7d,0xbf]
+
+    e_ror_subs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x1c,0xaa]
+
+    e_ror_subs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x0c,0xa0]
+
+    e_ror_adc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x0c,0xc0]
+
+    e_ror_adc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x2c,0xc5]
+
+    e_ror_adc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x5d,0xcf]
+
+    e_ror_adc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x7d,0xdf]
+
+    e_ror_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xca]
+
+    e_ror_adc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x0c,0xc0]
+
+    e_ror_adc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x2c,0xc5]
+
+    e_ror_adc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x5d,0xcf]
+
+    e_ror_adc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x7d,0xdf]
+
+    e_ror_adc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x1c,0xca]
+
+    e_ror_adc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x0c,0xc0]
+
+    e_ror_adc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x2c,0xc5]
+
+    e_ror_adc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x5d,0xcf]
+
+    e_ror_adc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x7d,0xdf]
+
+    e_ror_adc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x1c,0xca]
+
+    e_ror_adc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x0c,0xc0]
+
+    e_ror_adcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x0c,0xc0]
+
+    e_ror_adcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x2c,0xc5]
+
+    e_ror_adcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x5d,0xcf]
+
+    e_ror_adcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x7d,0xdf]
+
+    e_ror_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xca]
+
+    e_ror_adcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x0c,0xc0]
+
+    e_ror_adcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x2c,0xc5]
+
+    e_ror_adcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x5d,0xcf]
+
+    e_ror_adcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x7d,0xdf]
+
+    e_ror_adcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x1c,0xca]
+
+    e_ror_adcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x0c,0xc0]
+
+    e_ror_adcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x2c,0xc5]
+
+    e_ror_adcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x5d,0xcf]
+
+    e_ror_adcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x7d,0xdf]
+
+    e_ror_adcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x1c,0xca]
+
+    e_ror_adcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x0c,0xc0]
+
+    e_ror_sbc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x0c,0xe0]
+
+    e_ror_sbc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x2c,0xe5]
+
+    e_ror_sbc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x5d,0xef]
+
+    e_ror_sbc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x7d,0xff]
+
+    e_ror_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x1c,0xea]
+
+    e_ror_sbc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x0c,0xe0]
+
+    e_ror_sbc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x2c,0xe5]
+
+    e_ror_sbc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x5d,0xef]
+
+    e_ror_sbc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x7d,0xff]
+
+    e_ror_sbc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x1c,0xea]
+
+    e_ror_sbc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x0c,0xe0]
+
+    e_ror_sbc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x2c,0xe5]
+
+    e_ror_sbc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x5d,0xef]
+
+    e_ror_sbc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x7d,0xff]
+
+    e_ror_sbc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x1c,0xea]
+
+    e_ror_sbc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x0c,0xe0]
+
+    e_ror_sbcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x0c,0xe0]
+
+    e_ror_sbcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x2c,0xe5]
+
+    e_ror_sbcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x5d,0xef]
+
+    e_ror_sbcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x7d,0xff]
+
+    e_ror_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x1c,0xea]
+
+    e_ror_sbcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x0c,0xe0]
+
+    e_ror_sbcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x2c,0xe5]
+
+    e_ror_sbcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x5d,0xef]
+
+    e_ror_sbcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x7d,0xff]
+
+    e_ror_sbcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x1c,0xea]
+
+    e_ror_sbcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x0c,0xe0]
+
+    e_ror_sbcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x2c,0xe5]
+
+    e_ror_sbcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x5d,0xef]
+
+    e_ror_sbcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x7d,0xff]
+
+    e_ror_sbcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x1c,0xea]
+
+    e_ror_sbcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x0c,0xe0]
+
+    e_asr r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x00]
+
+    e_asr r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x24,0x05]
+
+    e_asr r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x54,0x0f]
+
+    e_asr r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x74,0x1f]
+
+    e_asr r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x14,0x0a]
+
+    e_asr r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x00]
+
+    e_asr r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x24,0x05]
+
+    e_asr r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x54,0x0f]
+
+    e_asr r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x74,0x1f]
+
+    e_asr r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x14,0x0a]
+
+    e_asr r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x00]
+
+    e_asr r2, r2, 0x5
+# CHECK: encoding: [0x10,0x08,0x24,0x05]
+
+    e_asr r5, r5, 0xf
+# CHECK: encoding: [0x10,0x14,0x54,0x0f]
+
+    e_asr r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1c,0x74,0x1f]
+
+    e_asr r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x14,0x0a]
+
+    e_asr r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x00]
+
+    e_asrs r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x00]
+
+    e_asrs r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x24,0x05]
+
+    e_asrs r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x54,0x0f]
+
+    e_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x74,0x1f]
+
+    e_asrs r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x14,0x0a]
+
+    e_asrs r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x00]
+
+    e_asrs r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x24,0x05]
+
+    e_asrs r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x54,0x0f]
+
+    e_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x74,0x1f]
+
+    e_asrs r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x14,0x0a]
+
+    e_asrs r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x00]
+
+    e_asrs r2, r2, 0x5
+# CHECK: encoding: [0x10,0x0a,0x24,0x05]
+
+    e_asrs r5, r5, 0xf
+# CHECK: encoding: [0x10,0x16,0x54,0x0f]
+
+    e_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1e,0x74,0x1f]
+
+    e_asrs r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x14,0x0a]
+
+    e_asrs r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x00]
+
+    e_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x20]
+
+    e_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x25]
+
+    e_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x2f]
+
+    e_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x3f]
+
+    e_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x2a]
+
+    e_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x20]
+
+    e_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x25]
+
+    e_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x2f]
+
+    e_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x3f]
+
+    e_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x2a]
+
+    e_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x20]
+
+    e_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x25]
+
+    e_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x2f]
+
+    e_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x3f]
+
+    e_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x2a]
+
+    e_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x20]
+
+    e_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x20]
+
+    e_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x25]
+
+    e_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x2f]
+
+    e_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x3f]
+
+    e_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x2a]
+
+    e_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x20]
+
+    e_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x25]
+
+    e_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x2f]
+
+    e_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x3f]
+
+    e_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x2a]
+
+    e_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x20]
+
+    e_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x25]
+
+    e_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x2f]
+
+    e_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x3f]
+
+    e_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x2a]
+
+    e_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x20]
+
+    e_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x40]
+
+    e_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x45]
+
+    e_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x4f]
+
+    e_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x5f]
+
+    e_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x4a]
+
+    e_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x40]
+
+    e_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x45]
+
+    e_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x4f]
+
+    e_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x5f]
+
+    e_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x4a]
+
+    e_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x40]
+
+    e_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x45]
+
+    e_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x4f]
+
+    e_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x5f]
+
+    e_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x4a]
+
+    e_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x40]
+
+    e_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x40]
+
+    e_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x45]
+
+    e_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x4f]
+
+    e_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x5f]
+
+    e_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x4a]
+
+    e_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x40]
+
+    e_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x45]
+
+    e_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x4f]
+
+    e_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x5f]
+
+    e_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x4a]
+
+    e_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x40]
+
+    e_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x45]
+
+    e_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x4f]
+
+    e_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x5f]
+
+    e_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x4a]
+
+    e_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x40]
+
+    e_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x60]
+
+    e_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x65]
+
+    e_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x6f]
+
+    e_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x7f]
+
+    e_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x6a]
+
+    e_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x60]
+
+    e_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x65]
+
+    e_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x6f]
+
+    e_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x7f]
+
+    e_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x6a]
+
+    e_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x60]
+
+    e_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x65]
+
+    e_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x6f]
+
+    e_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x7f]
+
+    e_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x6a]
+
+    e_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x60]
+
+    e_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x60]
+
+    e_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x65]
+
+    e_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x6f]
+
+    e_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x7f]
+
+    e_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x6a]
+
+    e_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x60]
+
+    e_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x65]
+
+    e_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x6f]
+
+    e_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x7f]
+
+    e_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x6a]
+
+    e_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x60]
+
+    e_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x65]
+
+    e_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x6f]
+
+    e_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x7f]
+
+    e_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x6a]
+
+    e_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x60]
+
+    e_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x80]
+
+    e_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x85]
+
+    e_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x8f]
+
+    e_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x9f]
+
+    e_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x8a]
+
+    e_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x80]
+
+    e_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x85]
+
+    e_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x8f]
+
+    e_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x9f]
+
+    e_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x8a]
+
+    e_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x80]
+
+    e_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0x85]
+
+    e_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0x8f]
+
+    e_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0x9f]
+
+    e_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x8a]
+
+    e_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0x80]
+
+    e_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x80]
+
+    e_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x85]
+
+    e_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x8f]
+
+    e_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x9f]
+
+    e_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x8a]
+
+    e_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x80]
+
+    e_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x85]
+
+    e_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x8f]
+
+    e_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x9f]
+
+    e_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x8a]
+
+    e_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x80]
+
+    e_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0x85]
+
+    e_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0x8f]
+
+    e_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0x9f]
+
+    e_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x8a]
+
+    e_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0x80]
+
+    e_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xa0]
+
+    e_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xa5]
+
+    e_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xaf]
+
+    e_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xbf]
+
+    e_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xaa]
+
+    e_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xa0]
+
+    e_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xa5]
+
+    e_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xaf]
+
+    e_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xbf]
+
+    e_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xaa]
+
+    e_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xa0]
+
+    e_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xa5]
+
+    e_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xaf]
+
+    e_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xbf]
+
+    e_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xaa]
+
+    e_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xa0]
+
+    e_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xa0]
+
+    e_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xa5]
+
+    e_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xaf]
+
+    e_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xbf]
+
+    e_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xaa]
+
+    e_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xa0]
+
+    e_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xa5]
+
+    e_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xaf]
+
+    e_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xbf]
+
+    e_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xaa]
+
+    e_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xa0]
+
+    e_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xa5]
+
+    e_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xaf]
+
+    e_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xbf]
+
+    e_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xaa]
+
+    e_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xa0]
+
+    e_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xc0]
+
+    e_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xc5]
+
+    e_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xcf]
+
+    e_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xdf]
+
+    e_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xca]
+
+    e_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xc0]
+
+    e_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xc5]
+
+    e_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xcf]
+
+    e_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xdf]
+
+    e_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xca]
+
+    e_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xc0]
+
+    e_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xc5]
+
+    e_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xcf]
+
+    e_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xdf]
+
+    e_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xca]
+
+    e_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xc0]
+
+    e_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xc0]
+
+    e_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xc5]
+
+    e_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xcf]
+
+    e_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xdf]
+
+    e_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xca]
+
+    e_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xc0]
+
+    e_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xc5]
+
+    e_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xcf]
+
+    e_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xdf]
+
+    e_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xca]
+
+    e_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xc0]
+
+    e_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xc5]
+
+    e_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xcf]
+
+    e_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xdf]
+
+    e_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xca]
+
+    e_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xc0]
+
+    e_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xe0]
+
+    e_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xe5]
+
+    e_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xef]
+
+    e_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xff]
+
+    e_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xea]
+
+    e_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xe0]
+
+    e_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xe5]
+
+    e_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xef]
+
+    e_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xff]
+
+    e_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xea]
+
+    e_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xe0]
+
+    e_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x88,0x24,0xe5]
+
+    e_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x54,0x55,0xef]
+
+    e_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdc,0x75,0xff]
+
+    e_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xea]
+
+    e_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x00,0x04,0xe0]
+
+    e_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xe0]
+
+    e_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xe5]
+
+    e_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xef]
+
+    e_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xff]
+
+    e_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xea]
+
+    e_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xe0]
+
+    e_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xe5]
+
+    e_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xef]
+
+    e_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xff]
+
+    e_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xea]
+
+    e_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xe0]
+
+    e_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x10,0x8a,0x24,0xe5]
+
+    e_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x10,0x56,0x55,0xef]
+
+    e_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xde,0x75,0xff]
+
+    e_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xea]
+
+    e_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x10,0x02,0x04,0xe0]
+
+    e_asr_ze r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x04,0x00]
+
+    e_asr_nz r2, r2, 0x5
+# CHECK: encoding: [0x50,0x08,0x24,0x05]
+
+    e_asr_po r5, r5, 0xf
+# CHECK: encoding: [0x70,0x14,0x54,0x0f]
+
+    e_asr_ne r7, r7, 0x1f
+# CHECK: encoding: [0x90,0x1c,0x74,0x1f]
+
+    e_asr r1, r1, 0xa
+# CHECK: encoding: [0x10,0x04,0x14,0x0a]
+
+    e_asr_az r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x04,0x00]
+
+    e_asr_zb r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x08,0x24,0x05]
+
+    e_asr_ca r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x14,0x54,0x0f]
+
+    e_asr_nc r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1d,0x74,0x1f]
+
+    e_asr_cz r1, r1, 0xa
+# CHECK: encoding: [0x30,0x05,0x14,0x0a]
+
+    e_asr_spo r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x04,0x00]
+
+    e_asr_sne r2, r2, 0x5
+# CHECK: encoding: [0x70,0x09,0x24,0x05]
+
+    e_asr_nbs r5, r5, 0xf
+# CHECK: encoding: [0x90,0x15,0x54,0x0f]
+
+    e_asr_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0x1d,0x74,0x1f]
+
+    e_asr_bs r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x05,0x14,0x0a]
+
+    e_asr_ex r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x04,0x00]
+
+    e_asrs_ze r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x04,0x00]
+
+    e_asrs_nz r2, r2, 0x5
+# CHECK: encoding: [0x50,0x0a,0x24,0x05]
+
+    e_asrs_po r5, r5, 0xf
+# CHECK: encoding: [0x70,0x16,0x54,0x0f]
+
+    e_asrs_ne r7, r7, 0x1f
+# CHECK: encoding: [0x90,0x1e,0x74,0x1f]
+
+    e_asrs r1, r1, 0xa
+# CHECK: encoding: [0x10,0x06,0x14,0x0a]
+
+    e_asrs_az r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x04,0x00]
+
+    e_asrs_zb r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x0a,0x24,0x05]
+
+    e_asrs_ca r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x16,0x54,0x0f]
+
+    e_asrs_nc r7, r7, 0x1f
+# CHECK: encoding: [0x10,0x1f,0x74,0x1f]
+
+    e_asrs_cz r1, r1, 0xa
+# CHECK: encoding: [0x30,0x07,0x14,0x0a]
+
+    e_asrs_spo r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x04,0x00]
+
+    e_asrs_sne r2, r2, 0x5
+# CHECK: encoding: [0x70,0x0b,0x24,0x05]
+
+    e_asrs_nbs r5, r5, 0xf
+# CHECK: encoding: [0x90,0x17,0x54,0x0f]
+
+    e_asrs_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0x1f,0x74,0x1f]
+
+    e_asrs_bs r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x07,0x14,0x0a]
+
+    e_asrs_ex r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x04,0x00]
+
+    e_asr_and_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x04,0x20]
+
+    e_asr_and_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x24,0x25]
+
+    e_asr_and_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x55,0x2f]
+
+    e_asr_and_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x75,0x3f]
+
+    e_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x2a]
+
+    e_asr_and_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x04,0x20]
+
+    e_asr_and_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x24,0x25]
+
+    e_asr_and_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x55,0x2f]
+
+    e_asr_and_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x75,0x3f]
+
+    e_asr_and_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x14,0x2a]
+
+    e_asr_and_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x04,0x20]
+
+    e_asr_and_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x24,0x25]
+
+    e_asr_and_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x55,0x2f]
+
+    e_asr_and_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x75,0x3f]
+
+    e_asr_and_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x14,0x2a]
+
+    e_asr_and_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x04,0x20]
+
+    e_asr_ands_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x04,0x20]
+
+    e_asr_ands_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x24,0x25]
+
+    e_asr_ands_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x55,0x2f]
+
+    e_asr_ands_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x75,0x3f]
+
+    e_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x2a]
+
+    e_asr_ands_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x04,0x20]
+
+    e_asr_ands_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x24,0x25]
+
+    e_asr_ands_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x55,0x2f]
+
+    e_asr_ands_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x75,0x3f]
+
+    e_asr_ands_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x14,0x2a]
+
+    e_asr_ands_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x04,0x20]
+
+    e_asr_ands_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x24,0x25]
+
+    e_asr_ands_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x55,0x2f]
+
+    e_asr_ands_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x75,0x3f]
+
+    e_asr_ands_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x14,0x2a]
+
+    e_asr_ands_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x04,0x20]
+
+    e_asr_or_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x04,0x40]
+
+    e_asr_or_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x24,0x45]
+
+    e_asr_or_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x55,0x4f]
+
+    e_asr_or_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x75,0x5f]
+
+    e_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x4a]
+
+    e_asr_or_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x04,0x40]
+
+    e_asr_or_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x24,0x45]
+
+    e_asr_or_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x55,0x4f]
+
+    e_asr_or_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x75,0x5f]
+
+    e_asr_or_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x14,0x4a]
+
+    e_asr_or_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x04,0x40]
+
+    e_asr_or_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x24,0x45]
+
+    e_asr_or_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x55,0x4f]
+
+    e_asr_or_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x75,0x5f]
+
+    e_asr_or_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x14,0x4a]
+
+    e_asr_or_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x04,0x40]
+
+    e_asr_ors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x04,0x40]
+
+    e_asr_ors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x24,0x45]
+
+    e_asr_ors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x55,0x4f]
+
+    e_asr_ors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x75,0x5f]
+
+    e_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x4a]
+
+    e_asr_ors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x04,0x40]
+
+    e_asr_ors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x24,0x45]
+
+    e_asr_ors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x55,0x4f]
+
+    e_asr_ors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x75,0x5f]
+
+    e_asr_ors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x14,0x4a]
+
+    e_asr_ors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x04,0x40]
+
+    e_asr_ors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x24,0x45]
+
+    e_asr_ors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x55,0x4f]
+
+    e_asr_ors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x75,0x5f]
+
+    e_asr_ors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x14,0x4a]
+
+    e_asr_ors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x04,0x40]
+
+    e_asr_xor_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x04,0x60]
+
+    e_asr_xor_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x24,0x65]
+
+    e_asr_xor_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x55,0x6f]
+
+    e_asr_xor_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x75,0x7f]
+
+    e_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x6a]
+
+    e_asr_xor_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x04,0x60]
+
+    e_asr_xor_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x24,0x65]
+
+    e_asr_xor_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x55,0x6f]
+
+    e_asr_xor_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x75,0x7f]
+
+    e_asr_xor_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x14,0x6a]
+
+    e_asr_xor_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x04,0x60]
+
+    e_asr_xor_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x24,0x65]
+
+    e_asr_xor_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x55,0x6f]
+
+    e_asr_xor_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x75,0x7f]
+
+    e_asr_xor_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x14,0x6a]
+
+    e_asr_xor_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x04,0x60]
+
+    e_asr_xors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x04,0x60]
+
+    e_asr_xors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x24,0x65]
+
+    e_asr_xors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x55,0x6f]
+
+    e_asr_xors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x75,0x7f]
+
+    e_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x6a]
+
+    e_asr_xors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x04,0x60]
+
+    e_asr_xors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x24,0x65]
+
+    e_asr_xors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x55,0x6f]
+
+    e_asr_xors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x75,0x7f]
+
+    e_asr_xors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x14,0x6a]
+
+    e_asr_xors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x04,0x60]
+
+    e_asr_xors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x24,0x65]
+
+    e_asr_xors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x55,0x6f]
+
+    e_asr_xors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x75,0x7f]
+
+    e_asr_xors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x14,0x6a]
+
+    e_asr_xors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x04,0x60]
+
+    e_asr_add_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x04,0x80]
+
+    e_asr_add_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x24,0x85]
+
+    e_asr_add_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x55,0x8f]
+
+    e_asr_add_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x75,0x9f]
+
+    e_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0x8a]
+
+    e_asr_add_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x04,0x80]
+
+    e_asr_add_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x24,0x85]
+
+    e_asr_add_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x55,0x8f]
+
+    e_asr_add_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x75,0x9f]
+
+    e_asr_add_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x14,0x8a]
+
+    e_asr_add_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x04,0x80]
+
+    e_asr_add_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x24,0x85]
+
+    e_asr_add_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x55,0x8f]
+
+    e_asr_add_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x75,0x9f]
+
+    e_asr_add_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x14,0x8a]
+
+    e_asr_add_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x04,0x80]
+
+    e_asr_adds_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x04,0x80]
+
+    e_asr_adds_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x24,0x85]
+
+    e_asr_adds_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x55,0x8f]
+
+    e_asr_adds_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x75,0x9f]
+
+    e_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0x8a]
+
+    e_asr_adds_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x04,0x80]
+
+    e_asr_adds_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x24,0x85]
+
+    e_asr_adds_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x55,0x8f]
+
+    e_asr_adds_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x75,0x9f]
+
+    e_asr_adds_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x14,0x8a]
+
+    e_asr_adds_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x04,0x80]
+
+    e_asr_adds_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x24,0x85]
+
+    e_asr_adds_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x55,0x8f]
+
+    e_asr_adds_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x75,0x9f]
+
+    e_asr_adds_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x14,0x8a]
+
+    e_asr_adds_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x04,0x80]
+
+    e_asr_sub_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x04,0xa0]
+
+    e_asr_sub_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x24,0xa5]
+
+    e_asr_sub_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x55,0xaf]
+
+    e_asr_sub_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x75,0xbf]
+
+    e_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xaa]
+
+    e_asr_sub_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x04,0xa0]
+
+    e_asr_sub_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x24,0xa5]
+
+    e_asr_sub_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x55,0xaf]
+
+    e_asr_sub_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x75,0xbf]
+
+    e_asr_sub_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x14,0xaa]
+
+    e_asr_sub_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x04,0xa0]
+
+    e_asr_sub_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x24,0xa5]
+
+    e_asr_sub_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x55,0xaf]
+
+    e_asr_sub_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x75,0xbf]
+
+    e_asr_sub_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x14,0xaa]
+
+    e_asr_sub_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x04,0xa0]
+
+    e_asr_subs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x04,0xa0]
+
+    e_asr_subs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x24,0xa5]
+
+    e_asr_subs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x55,0xaf]
+
+    e_asr_subs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x75,0xbf]
+
+    e_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xaa]
+
+    e_asr_subs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x04,0xa0]
+
+    e_asr_subs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x24,0xa5]
+
+    e_asr_subs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x55,0xaf]
+
+    e_asr_subs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x75,0xbf]
+
+    e_asr_subs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x14,0xaa]
+
+    e_asr_subs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x04,0xa0]
+
+    e_asr_subs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x24,0xa5]
+
+    e_asr_subs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x55,0xaf]
+
+    e_asr_subs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x75,0xbf]
+
+    e_asr_subs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x14,0xaa]
+
+    e_asr_subs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x04,0xa0]
+
+    e_asr_adc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x04,0xc0]
+
+    e_asr_adc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x24,0xc5]
+
+    e_asr_adc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x55,0xcf]
+
+    e_asr_adc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x75,0xdf]
+
+    e_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xca]
+
+    e_asr_adc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x04,0xc0]
+
+    e_asr_adc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x24,0xc5]
+
+    e_asr_adc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x55,0xcf]
+
+    e_asr_adc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x75,0xdf]
+
+    e_asr_adc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x14,0xca]
+
+    e_asr_adc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x04,0xc0]
+
+    e_asr_adc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x24,0xc5]
+
+    e_asr_adc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x55,0xcf]
+
+    e_asr_adc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x75,0xdf]
+
+    e_asr_adc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x14,0xca]
+
+    e_asr_adc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x04,0xc0]
+
+    e_asr_adcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x04,0xc0]
+
+    e_asr_adcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x24,0xc5]
+
+    e_asr_adcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x55,0xcf]
+
+    e_asr_adcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x75,0xdf]
+
+    e_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xca]
+
+    e_asr_adcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x04,0xc0]
+
+    e_asr_adcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x24,0xc5]
+
+    e_asr_adcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x55,0xcf]
+
+    e_asr_adcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x75,0xdf]
+
+    e_asr_adcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x14,0xca]
+
+    e_asr_adcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x04,0xc0]
+
+    e_asr_adcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x24,0xc5]
+
+    e_asr_adcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x55,0xcf]
+
+    e_asr_adcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x75,0xdf]
+
+    e_asr_adcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x14,0xca]
+
+    e_asr_adcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x04,0xc0]
+
+    e_asr_sbc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x00,0x04,0xe0]
+
+    e_asr_sbc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x88,0x24,0xe5]
+
+    e_asr_sbc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x54,0x55,0xef]
+
+    e_asr_sbc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xdc,0x75,0xff]
+
+    e_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x44,0x14,0xea]
+
+    e_asr_sbc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x00,0x04,0xe0]
+
+    e_asr_sbc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x88,0x24,0xe5]
+
+    e_asr_sbc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x54,0x55,0xef]
+
+    e_asr_sbc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdd,0x75,0xff]
+
+    e_asr_sbc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x45,0x14,0xea]
+
+    e_asr_sbc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x01,0x04,0xe0]
+
+    e_asr_sbc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x89,0x24,0xe5]
+
+    e_asr_sbc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x55,0x55,0xef]
+
+    e_asr_sbc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdd,0x75,0xff]
+
+    e_asr_sbc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x45,0x14,0xea]
+
+    e_asr_sbc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x01,0x04,0xe0]
+
+    e_asr_sbcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x30,0x02,0x04,0xe0]
+
+    e_asr_sbcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x50,0x8a,0x24,0xe5]
+
+    e_asr_sbcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x70,0x56,0x55,0xef]
+
+    e_asr_sbcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x90,0xde,0x75,0xff]
+
+    e_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x10,0x46,0x14,0xea]
+
+    e_asr_sbcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb0,0x02,0x04,0xe0]
+
+    e_asr_sbcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd0,0x8a,0x24,0xe5]
+
+    e_asr_sbcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf0,0x56,0x55,0xef]
+
+    e_asr_sbcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x10,0xdf,0x75,0xff]
+
+    e_asr_sbcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x30,0x47,0x14,0xea]
+
+    e_asr_sbcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x50,0x03,0x04,0xe0]
+
+    e_asr_sbcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x70,0x8b,0x24,0xe5]
+
+    e_asr_sbcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x90,0x57,0x55,0xef]
+
+    e_asr_sbcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb0,0xdf,0x75,0xff]
+
+    e_asr_sbcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd0,0x47,0x14,0xea]
+
+    e_asr_sbcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf0,0x03,0x04,0xe0]
+
+    e_fend_asr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x00]
+
+    e_fend_asr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x28,0x05]
+
+    e_fend_asr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x58,0x0f]
+
+    e_fend_asr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x78,0x1f]
+
+    e_fend_asr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x18,0x0a]
+
+    e_fend_asr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x00]
+
+    e_fend_asr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x28,0x05]
+
+    e_fend_asr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x58,0x0f]
+
+    e_fend_asr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x78,0x1f]
+
+    e_fend_asr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x18,0x0a]
+
+    e_fend_asr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x00]
+
+    e_fend_asr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x28,0x05]
+
+    e_fend_asr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x58,0x0f]
+
+    e_fend_asr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x78,0x1f]
+
+    e_fend_asr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x18,0x0a]
+
+    e_fend_asr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x00]
+
+    e_fend_asrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x00]
+
+    e_fend_asrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x28,0x05]
+
+    e_fend_asrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x58,0x0f]
+
+    e_fend_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x78,0x1f]
+
+    e_fend_asrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x18,0x0a]
+
+    e_fend_asrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x00]
+
+    e_fend_asrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x28,0x05]
+
+    e_fend_asrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x58,0x0f]
+
+    e_fend_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x78,0x1f]
+
+    e_fend_asrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x18,0x0a]
+
+    e_fend_asrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x00]
+
+    e_fend_asrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x28,0x05]
+
+    e_fend_asrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x58,0x0f]
+
+    e_fend_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x78,0x1f]
+
+    e_fend_asrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x18,0x0a]
+
+    e_fend_asrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x00]
+
+    e_fend_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x20]
+
+    e_fend_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x25]
+
+    e_fend_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x2f]
+
+    e_fend_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x3f]
+
+    e_fend_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x2a]
+
+    e_fend_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x20]
+
+    e_fend_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x25]
+
+    e_fend_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x2f]
+
+    e_fend_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x3f]
+
+    e_fend_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x2a]
+
+    e_fend_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x20]
+
+    e_fend_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x25]
+
+    e_fend_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x2f]
+
+    e_fend_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x3f]
+
+    e_fend_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x2a]
+
+    e_fend_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x20]
+
+    e_fend_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x20]
+
+    e_fend_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x25]
+
+    e_fend_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x2f]
+
+    e_fend_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x3f]
+
+    e_fend_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x2a]
+
+    e_fend_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x20]
+
+    e_fend_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x25]
+
+    e_fend_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x2f]
+
+    e_fend_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x3f]
+
+    e_fend_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x2a]
+
+    e_fend_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x20]
+
+    e_fend_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x25]
+
+    e_fend_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x2f]
+
+    e_fend_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x3f]
+
+    e_fend_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x2a]
+
+    e_fend_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x20]
+
+    e_fend_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x40]
+
+    e_fend_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x45]
+
+    e_fend_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x4f]
+
+    e_fend_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x5f]
+
+    e_fend_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x4a]
+
+    e_fend_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x40]
+
+    e_fend_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x45]
+
+    e_fend_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x4f]
+
+    e_fend_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x5f]
+
+    e_fend_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x4a]
+
+    e_fend_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x40]
+
+    e_fend_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x45]
+
+    e_fend_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x4f]
+
+    e_fend_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x5f]
+
+    e_fend_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x4a]
+
+    e_fend_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x40]
+
+    e_fend_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x40]
+
+    e_fend_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x45]
+
+    e_fend_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x4f]
+
+    e_fend_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x5f]
+
+    e_fend_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x4a]
+
+    e_fend_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x40]
+
+    e_fend_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x45]
+
+    e_fend_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x4f]
+
+    e_fend_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x5f]
+
+    e_fend_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x4a]
+
+    e_fend_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x40]
+
+    e_fend_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x45]
+
+    e_fend_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x4f]
+
+    e_fend_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x5f]
+
+    e_fend_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x4a]
+
+    e_fend_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x40]
+
+    e_fend_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x60]
+
+    e_fend_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x65]
+
+    e_fend_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x6f]
+
+    e_fend_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x7f]
+
+    e_fend_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x6a]
+
+    e_fend_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x60]
+
+    e_fend_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x65]
+
+    e_fend_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x6f]
+
+    e_fend_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x7f]
+
+    e_fend_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x6a]
+
+    e_fend_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x60]
+
+    e_fend_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x65]
+
+    e_fend_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x6f]
+
+    e_fend_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x7f]
+
+    e_fend_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x6a]
+
+    e_fend_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x60]
+
+    e_fend_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x60]
+
+    e_fend_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x65]
+
+    e_fend_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x6f]
+
+    e_fend_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x7f]
+
+    e_fend_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x6a]
+
+    e_fend_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x60]
+
+    e_fend_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x65]
+
+    e_fend_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x6f]
+
+    e_fend_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x7f]
+
+    e_fend_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x6a]
+
+    e_fend_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x60]
+
+    e_fend_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x65]
+
+    e_fend_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x6f]
+
+    e_fend_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x7f]
+
+    e_fend_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x6a]
+
+    e_fend_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x60]
+
+    e_fend_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x80]
+
+    e_fend_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x85]
+
+    e_fend_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x8f]
+
+    e_fend_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x9f]
+
+    e_fend_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x8a]
+
+    e_fend_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x80]
+
+    e_fend_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x85]
+
+    e_fend_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x8f]
+
+    e_fend_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x9f]
+
+    e_fend_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x8a]
+
+    e_fend_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x80]
+
+    e_fend_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0x85]
+
+    e_fend_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0x8f]
+
+    e_fend_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0x9f]
+
+    e_fend_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x8a]
+
+    e_fend_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0x80]
+
+    e_fend_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x80]
+
+    e_fend_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x85]
+
+    e_fend_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x8f]
+
+    e_fend_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x9f]
+
+    e_fend_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x8a]
+
+    e_fend_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x80]
+
+    e_fend_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x85]
+
+    e_fend_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x8f]
+
+    e_fend_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x9f]
+
+    e_fend_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x8a]
+
+    e_fend_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x80]
+
+    e_fend_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0x85]
+
+    e_fend_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0x8f]
+
+    e_fend_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0x9f]
+
+    e_fend_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x8a]
+
+    e_fend_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0x80]
+
+    e_fend_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xa0]
+
+    e_fend_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xa5]
+
+    e_fend_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xaf]
+
+    e_fend_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xbf]
+
+    e_fend_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xaa]
+
+    e_fend_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xa0]
+
+    e_fend_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xa5]
+
+    e_fend_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xaf]
+
+    e_fend_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xbf]
+
+    e_fend_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xaa]
+
+    e_fend_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xa0]
+
+    e_fend_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xa5]
+
+    e_fend_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xaf]
+
+    e_fend_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xbf]
+
+    e_fend_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xaa]
+
+    e_fend_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xa0]
+
+    e_fend_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xa0]
+
+    e_fend_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xa5]
+
+    e_fend_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xaf]
+
+    e_fend_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xbf]
+
+    e_fend_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xaa]
+
+    e_fend_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xa0]
+
+    e_fend_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xa5]
+
+    e_fend_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xaf]
+
+    e_fend_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xbf]
+
+    e_fend_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xaa]
+
+    e_fend_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xa0]
+
+    e_fend_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xa5]
+
+    e_fend_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xaf]
+
+    e_fend_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xbf]
+
+    e_fend_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xaa]
+
+    e_fend_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xa0]
+
+    e_fend_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xc0]
+
+    e_fend_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xc5]
+
+    e_fend_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xcf]
+
+    e_fend_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xdf]
+
+    e_fend_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xca]
+
+    e_fend_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xc0]
+
+    e_fend_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xc5]
+
+    e_fend_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xcf]
+
+    e_fend_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xdf]
+
+    e_fend_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xca]
+
+    e_fend_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xc0]
+
+    e_fend_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xc5]
+
+    e_fend_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xcf]
+
+    e_fend_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xdf]
+
+    e_fend_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xca]
+
+    e_fend_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xc0]
+
+    e_fend_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xc0]
+
+    e_fend_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xc5]
+
+    e_fend_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xcf]
+
+    e_fend_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xdf]
+
+    e_fend_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xca]
+
+    e_fend_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xc0]
+
+    e_fend_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xc5]
+
+    e_fend_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xcf]
+
+    e_fend_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xdf]
+
+    e_fend_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xca]
+
+    e_fend_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xc0]
+
+    e_fend_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xc5]
+
+    e_fend_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xcf]
+
+    e_fend_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xdf]
+
+    e_fend_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xca]
+
+    e_fend_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xc0]
+
+    e_fend_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xe0]
+
+    e_fend_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xe5]
+
+    e_fend_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xef]
+
+    e_fend_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xff]
+
+    e_fend_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xea]
+
+    e_fend_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xe0]
+
+    e_fend_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xe5]
+
+    e_fend_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xef]
+
+    e_fend_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xff]
+
+    e_fend_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xea]
+
+    e_fend_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xe0]
+
+    e_fend_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x28,0xe5]
+
+    e_fend_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x59,0xef]
+
+    e_fend_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x79,0xff]
+
+    e_fend_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xea]
+
+    e_fend_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x08,0xe0]
+
+    e_fend_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xe0]
+
+    e_fend_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xe5]
+
+    e_fend_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xef]
+
+    e_fend_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xff]
+
+    e_fend_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xea]
+
+    e_fend_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xe0]
+
+    e_fend_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xe5]
+
+    e_fend_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xef]
+
+    e_fend_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xff]
+
+    e_fend_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xea]
+
+    e_fend_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xe0]
+
+    e_fend_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x28,0xe5]
+
+    e_fend_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x59,0xef]
+
+    e_fend_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x79,0xff]
+
+    e_fend_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xea]
+
+    e_fend_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x08,0xe0]
+
+    e_fend_asr_ze r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x08,0x00]
+
+    e_fend_asr_nz r2, r2, 0x5
+# CHECK: encoding: [0x51,0x08,0x28,0x05]
+
+    e_fend_asr_po r5, r5, 0xf
+# CHECK: encoding: [0x71,0x14,0x58,0x0f]
+
+    e_fend_asr_ne r7, r7, 0x1f
+# CHECK: encoding: [0x91,0x1c,0x78,0x1f]
+
+    e_fend_asr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x18,0x0a]
+
+    e_fend_asr_az r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x08,0x00]
+
+    e_fend_asr_zb r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x08,0x28,0x05]
+
+    e_fend_asr_ca r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x14,0x58,0x0f]
+
+    e_fend_asr_nc r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1d,0x78,0x1f]
+
+    e_fend_asr_cz r1, r1, 0xa
+# CHECK: encoding: [0x31,0x05,0x18,0x0a]
+
+    e_fend_asr_spo r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x08,0x00]
+
+    e_fend_asr_sne r2, r2, 0x5
+# CHECK: encoding: [0x71,0x09,0x28,0x05]
+
+    e_fend_asr_nbs r5, r5, 0xf
+# CHECK: encoding: [0x91,0x15,0x58,0x0f]
+
+    e_fend_asr_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0x1d,0x78,0x1f]
+
+    e_fend_asr_bs r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x05,0x18,0x0a]
+
+    e_fend_asr_ex r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x08,0x00]
+
+    e_fend_asrs_ze r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x08,0x00]
+
+    e_fend_asrs_nz r2, r2, 0x5
+# CHECK: encoding: [0x51,0x0a,0x28,0x05]
+
+    e_fend_asrs_po r5, r5, 0xf
+# CHECK: encoding: [0x71,0x16,0x58,0x0f]
+
+    e_fend_asrs_ne r7, r7, 0x1f
+# CHECK: encoding: [0x91,0x1e,0x78,0x1f]
+
+    e_fend_asrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x18,0x0a]
+
+    e_fend_asrs_az r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x08,0x00]
+
+    e_fend_asrs_zb r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x0a,0x28,0x05]
+
+    e_fend_asrs_ca r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x16,0x58,0x0f]
+
+    e_fend_asrs_nc r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1f,0x78,0x1f]
+
+    e_fend_asrs_cz r1, r1, 0xa
+# CHECK: encoding: [0x31,0x07,0x18,0x0a]
+
+    e_fend_asrs_spo r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x08,0x00]
+
+    e_fend_asrs_sne r2, r2, 0x5
+# CHECK: encoding: [0x71,0x0b,0x28,0x05]
+
+    e_fend_asrs_nbs r5, r5, 0xf
+# CHECK: encoding: [0x91,0x17,0x58,0x0f]
+
+    e_fend_asrs_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0x1f,0x78,0x1f]
+
+    e_fend_asrs_bs r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x07,0x18,0x0a]
+
+    e_fend_asrs_ex r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x08,0x00]
+
+    e_fend_asr_and_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x08,0x20]
+
+    e_fend_asr_and_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x28,0x25]
+
+    e_fend_asr_and_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x59,0x2f]
+
+    e_fend_asr_and_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x79,0x3f]
+
+    e_fend_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x2a]
+
+    e_fend_asr_and_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x08,0x20]
+
+    e_fend_asr_and_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x28,0x25]
+
+    e_fend_asr_and_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x59,0x2f]
+
+    e_fend_asr_and_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x79,0x3f]
+
+    e_fend_asr_and_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x18,0x2a]
+
+    e_fend_asr_and_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x08,0x20]
+
+    e_fend_asr_and_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x28,0x25]
+
+    e_fend_asr_and_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x59,0x2f]
+
+    e_fend_asr_and_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x79,0x3f]
+
+    e_fend_asr_and_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x18,0x2a]
+
+    e_fend_asr_and_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x08,0x20]
+
+    e_fend_asr_ands_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x08,0x20]
+
+    e_fend_asr_ands_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x28,0x25]
+
+    e_fend_asr_ands_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x59,0x2f]
+
+    e_fend_asr_ands_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x79,0x3f]
+
+    e_fend_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x2a]
+
+    e_fend_asr_ands_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x08,0x20]
+
+    e_fend_asr_ands_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x28,0x25]
+
+    e_fend_asr_ands_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x59,0x2f]
+
+    e_fend_asr_ands_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x79,0x3f]
+
+    e_fend_asr_ands_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x18,0x2a]
+
+    e_fend_asr_ands_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x08,0x20]
+
+    e_fend_asr_ands_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x28,0x25]
+
+    e_fend_asr_ands_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x59,0x2f]
+
+    e_fend_asr_ands_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x79,0x3f]
+
+    e_fend_asr_ands_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x18,0x2a]
+
+    e_fend_asr_ands_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x08,0x20]
+
+    e_fend_asr_or_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x08,0x40]
+
+    e_fend_asr_or_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x28,0x45]
+
+    e_fend_asr_or_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x59,0x4f]
+
+    e_fend_asr_or_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x79,0x5f]
+
+    e_fend_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x4a]
+
+    e_fend_asr_or_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x08,0x40]
+
+    e_fend_asr_or_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x28,0x45]
+
+    e_fend_asr_or_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x59,0x4f]
+
+    e_fend_asr_or_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x79,0x5f]
+
+    e_fend_asr_or_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x18,0x4a]
+
+    e_fend_asr_or_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x08,0x40]
+
+    e_fend_asr_or_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x28,0x45]
+
+    e_fend_asr_or_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x59,0x4f]
+
+    e_fend_asr_or_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x79,0x5f]
+
+    e_fend_asr_or_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x18,0x4a]
+
+    e_fend_asr_or_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x08,0x40]
+
+    e_fend_asr_ors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x08,0x40]
+
+    e_fend_asr_ors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x28,0x45]
+
+    e_fend_asr_ors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x59,0x4f]
+
+    e_fend_asr_ors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x79,0x5f]
+
+    e_fend_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x4a]
+
+    e_fend_asr_ors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x08,0x40]
+
+    e_fend_asr_ors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x28,0x45]
+
+    e_fend_asr_ors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x59,0x4f]
+
+    e_fend_asr_ors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x79,0x5f]
+
+    e_fend_asr_ors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x18,0x4a]
+
+    e_fend_asr_ors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x08,0x40]
+
+    e_fend_asr_ors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x28,0x45]
+
+    e_fend_asr_ors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x59,0x4f]
+
+    e_fend_asr_ors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x79,0x5f]
+
+    e_fend_asr_ors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x18,0x4a]
+
+    e_fend_asr_ors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x08,0x40]
+
+    e_fend_asr_xor_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x08,0x60]
+
+    e_fend_asr_xor_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x28,0x65]
+
+    e_fend_asr_xor_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x59,0x6f]
+
+    e_fend_asr_xor_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x79,0x7f]
+
+    e_fend_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x6a]
+
+    e_fend_asr_xor_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x08,0x60]
+
+    e_fend_asr_xor_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x28,0x65]
+
+    e_fend_asr_xor_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x59,0x6f]
+
+    e_fend_asr_xor_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x79,0x7f]
+
+    e_fend_asr_xor_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x18,0x6a]
+
+    e_fend_asr_xor_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x08,0x60]
+
+    e_fend_asr_xor_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x28,0x65]
+
+    e_fend_asr_xor_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x59,0x6f]
+
+    e_fend_asr_xor_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x79,0x7f]
+
+    e_fend_asr_xor_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x18,0x6a]
+
+    e_fend_asr_xor_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x08,0x60]
+
+    e_fend_asr_xors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x08,0x60]
+
+    e_fend_asr_xors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x28,0x65]
+
+    e_fend_asr_xors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x59,0x6f]
+
+    e_fend_asr_xors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x79,0x7f]
+
+    e_fend_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x6a]
+
+    e_fend_asr_xors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x08,0x60]
+
+    e_fend_asr_xors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x28,0x65]
+
+    e_fend_asr_xors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x59,0x6f]
+
+    e_fend_asr_xors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x79,0x7f]
+
+    e_fend_asr_xors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x18,0x6a]
+
+    e_fend_asr_xors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x08,0x60]
+
+    e_fend_asr_xors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x28,0x65]
+
+    e_fend_asr_xors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x59,0x6f]
+
+    e_fend_asr_xors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x79,0x7f]
+
+    e_fend_asr_xors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x18,0x6a]
+
+    e_fend_asr_xors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x08,0x60]
+
+    e_fend_asr_add_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x08,0x80]
+
+    e_fend_asr_add_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x28,0x85]
+
+    e_fend_asr_add_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x59,0x8f]
+
+    e_fend_asr_add_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x79,0x9f]
+
+    e_fend_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0x8a]
+
+    e_fend_asr_add_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x08,0x80]
+
+    e_fend_asr_add_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x28,0x85]
+
+    e_fend_asr_add_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x59,0x8f]
+
+    e_fend_asr_add_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x79,0x9f]
+
+    e_fend_asr_add_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x18,0x8a]
+
+    e_fend_asr_add_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x08,0x80]
+
+    e_fend_asr_add_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x28,0x85]
+
+    e_fend_asr_add_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x59,0x8f]
+
+    e_fend_asr_add_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x79,0x9f]
+
+    e_fend_asr_add_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x18,0x8a]
+
+    e_fend_asr_add_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x08,0x80]
+
+    e_fend_asr_adds_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x08,0x80]
+
+    e_fend_asr_adds_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x28,0x85]
+
+    e_fend_asr_adds_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x59,0x8f]
+
+    e_fend_asr_adds_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x79,0x9f]
+
+    e_fend_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0x8a]
+
+    e_fend_asr_adds_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x08,0x80]
+
+    e_fend_asr_adds_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x28,0x85]
+
+    e_fend_asr_adds_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x59,0x8f]
+
+    e_fend_asr_adds_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x79,0x9f]
+
+    e_fend_asr_adds_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x18,0x8a]
+
+    e_fend_asr_adds_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x08,0x80]
+
+    e_fend_asr_adds_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x28,0x85]
+
+    e_fend_asr_adds_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x59,0x8f]
+
+    e_fend_asr_adds_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x79,0x9f]
+
+    e_fend_asr_adds_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x18,0x8a]
+
+    e_fend_asr_adds_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x08,0x80]
+
+    e_fend_asr_sub_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x08,0xa0]
+
+    e_fend_asr_sub_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x28,0xa5]
+
+    e_fend_asr_sub_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x59,0xaf]
+
+    e_fend_asr_sub_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x79,0xbf]
+
+    e_fend_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xaa]
+
+    e_fend_asr_sub_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x08,0xa0]
+
+    e_fend_asr_sub_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x28,0xa5]
+
+    e_fend_asr_sub_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x59,0xaf]
+
+    e_fend_asr_sub_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x79,0xbf]
+
+    e_fend_asr_sub_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x18,0xaa]
+
+    e_fend_asr_sub_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x08,0xa0]
+
+    e_fend_asr_sub_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x28,0xa5]
+
+    e_fend_asr_sub_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x59,0xaf]
+
+    e_fend_asr_sub_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x79,0xbf]
+
+    e_fend_asr_sub_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x18,0xaa]
+
+    e_fend_asr_sub_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x08,0xa0]
+
+    e_fend_asr_subs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x08,0xa0]
+
+    e_fend_asr_subs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x28,0xa5]
+
+    e_fend_asr_subs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x59,0xaf]
+
+    e_fend_asr_subs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x79,0xbf]
+
+    e_fend_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xaa]
+
+    e_fend_asr_subs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x08,0xa0]
+
+    e_fend_asr_subs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x28,0xa5]
+
+    e_fend_asr_subs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x59,0xaf]
+
+    e_fend_asr_subs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x79,0xbf]
+
+    e_fend_asr_subs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x18,0xaa]
+
+    e_fend_asr_subs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x08,0xa0]
+
+    e_fend_asr_subs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x28,0xa5]
+
+    e_fend_asr_subs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x59,0xaf]
+
+    e_fend_asr_subs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x79,0xbf]
+
+    e_fend_asr_subs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x18,0xaa]
+
+    e_fend_asr_subs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x08,0xa0]
+
+    e_fend_asr_adc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x08,0xc0]
+
+    e_fend_asr_adc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x28,0xc5]
+
+    e_fend_asr_adc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x59,0xcf]
+
+    e_fend_asr_adc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x79,0xdf]
+
+    e_fend_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xca]
+
+    e_fend_asr_adc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x08,0xc0]
+
+    e_fend_asr_adc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x28,0xc5]
+
+    e_fend_asr_adc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x59,0xcf]
+
+    e_fend_asr_adc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x79,0xdf]
+
+    e_fend_asr_adc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x18,0xca]
+
+    e_fend_asr_adc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x08,0xc0]
+
+    e_fend_asr_adc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x28,0xc5]
+
+    e_fend_asr_adc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x59,0xcf]
+
+    e_fend_asr_adc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x79,0xdf]
+
+    e_fend_asr_adc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x18,0xca]
+
+    e_fend_asr_adc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x08,0xc0]
+
+    e_fend_asr_adcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x08,0xc0]
+
+    e_fend_asr_adcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x28,0xc5]
+
+    e_fend_asr_adcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x59,0xcf]
+
+    e_fend_asr_adcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x79,0xdf]
+
+    e_fend_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xca]
+
+    e_fend_asr_adcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x08,0xc0]
+
+    e_fend_asr_adcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x28,0xc5]
+
+    e_fend_asr_adcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x59,0xcf]
+
+    e_fend_asr_adcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x79,0xdf]
+
+    e_fend_asr_adcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x18,0xca]
+
+    e_fend_asr_adcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x08,0xc0]
+
+    e_fend_asr_adcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x28,0xc5]
+
+    e_fend_asr_adcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x59,0xcf]
+
+    e_fend_asr_adcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x79,0xdf]
+
+    e_fend_asr_adcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x18,0xca]
+
+    e_fend_asr_adcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x08,0xc0]
+
+    e_fend_asr_sbc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x08,0xe0]
+
+    e_fend_asr_sbc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x28,0xe5]
+
+    e_fend_asr_sbc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x59,0xef]
+
+    e_fend_asr_sbc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x79,0xff]
+
+    e_fend_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x18,0xea]
+
+    e_fend_asr_sbc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x08,0xe0]
+
+    e_fend_asr_sbc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x28,0xe5]
+
+    e_fend_asr_sbc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x59,0xef]
+
+    e_fend_asr_sbc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x79,0xff]
+
+    e_fend_asr_sbc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x18,0xea]
+
+    e_fend_asr_sbc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x08,0xe0]
+
+    e_fend_asr_sbc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x28,0xe5]
+
+    e_fend_asr_sbc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x59,0xef]
+
+    e_fend_asr_sbc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x79,0xff]
+
+    e_fend_asr_sbc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x18,0xea]
+
+    e_fend_asr_sbc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x08,0xe0]
+
+    e_fend_asr_sbcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x08,0xe0]
+
+    e_fend_asr_sbcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x28,0xe5]
+
+    e_fend_asr_sbcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x59,0xef]
+
+    e_fend_asr_sbcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x79,0xff]
+
+    e_fend_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x18,0xea]
+
+    e_fend_asr_sbcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x08,0xe0]
+
+    e_fend_asr_sbcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x28,0xe5]
+
+    e_fend_asr_sbcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x59,0xef]
+
+    e_fend_asr_sbcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x79,0xff]
+
+    e_fend_asr_sbcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x18,0xea]
+
+    e_fend_asr_sbcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x08,0xe0]
+
+    e_fend_asr_sbcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x28,0xe5]
+
+    e_fend_asr_sbcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x59,0xef]
+
+    e_fend_asr_sbcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x79,0xff]
+
+    e_fend_asr_sbcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x18,0xea]
+
+    e_fend_asr_sbcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x08,0xe0]
+
+    e_fbit_asr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x00]
+
+    e_fbit_asr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x2c,0x05]
+
+    e_fbit_asr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x5c,0x0f]
+
+    e_fbit_asr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x7c,0x1f]
+
+    e_fbit_asr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x1c,0x0a]
+
+    e_fbit_asr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x00]
+
+    e_fbit_asr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x2c,0x05]
+
+    e_fbit_asr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x5c,0x0f]
+
+    e_fbit_asr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x7c,0x1f]
+
+    e_fbit_asr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x1c,0x0a]
+
+    e_fbit_asr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x00]
+
+    e_fbit_asr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x2c,0x05]
+
+    e_fbit_asr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x5c,0x0f]
+
+    e_fbit_asr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x7c,0x1f]
+
+    e_fbit_asr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x1c,0x0a]
+
+    e_fbit_asr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x00]
+
+    e_fbit_asrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x00]
+
+    e_fbit_asrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x2c,0x05]
+
+    e_fbit_asrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x5c,0x0f]
+
+    e_fbit_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x7c,0x1f]
+
+    e_fbit_asrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x1c,0x0a]
+
+    e_fbit_asrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x00]
+
+    e_fbit_asrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x2c,0x05]
+
+    e_fbit_asrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x5c,0x0f]
+
+    e_fbit_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x7c,0x1f]
+
+    e_fbit_asrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x1c,0x0a]
+
+    e_fbit_asrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x00]
+
+    e_fbit_asrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x2c,0x05]
+
+    e_fbit_asrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x5c,0x0f]
+
+    e_fbit_asrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x7c,0x1f]
+
+    e_fbit_asrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x1c,0x0a]
+
+    e_fbit_asrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x00]
+
+    e_fbit_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x20]
+
+    e_fbit_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x25]
+
+    e_fbit_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x2f]
+
+    e_fbit_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x3f]
+
+    e_fbit_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x2a]
+
+    e_fbit_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x20]
+
+    e_fbit_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x25]
+
+    e_fbit_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x2f]
+
+    e_fbit_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x3f]
+
+    e_fbit_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x2a]
+
+    e_fbit_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x20]
+
+    e_fbit_asr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x25]
+
+    e_fbit_asr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x2f]
+
+    e_fbit_asr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x3f]
+
+    e_fbit_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x2a]
+
+    e_fbit_asr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x20]
+
+    e_fbit_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x20]
+
+    e_fbit_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x25]
+
+    e_fbit_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x2f]
+
+    e_fbit_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x3f]
+
+    e_fbit_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x2a]
+
+    e_fbit_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x20]
+
+    e_fbit_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x25]
+
+    e_fbit_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x2f]
+
+    e_fbit_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x3f]
+
+    e_fbit_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x2a]
+
+    e_fbit_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x20]
+
+    e_fbit_asr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x25]
+
+    e_fbit_asr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x2f]
+
+    e_fbit_asr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x3f]
+
+    e_fbit_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x2a]
+
+    e_fbit_asr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x20]
+
+    e_fbit_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x40]
+
+    e_fbit_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x45]
+
+    e_fbit_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x4f]
+
+    e_fbit_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x5f]
+
+    e_fbit_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x4a]
+
+    e_fbit_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x40]
+
+    e_fbit_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x45]
+
+    e_fbit_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x4f]
+
+    e_fbit_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x5f]
+
+    e_fbit_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x4a]
+
+    e_fbit_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x40]
+
+    e_fbit_asr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x45]
+
+    e_fbit_asr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x4f]
+
+    e_fbit_asr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x5f]
+
+    e_fbit_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x4a]
+
+    e_fbit_asr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x40]
+
+    e_fbit_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x40]
+
+    e_fbit_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x45]
+
+    e_fbit_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x4f]
+
+    e_fbit_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x5f]
+
+    e_fbit_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x4a]
+
+    e_fbit_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x40]
+
+    e_fbit_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x45]
+
+    e_fbit_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x4f]
+
+    e_fbit_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x5f]
+
+    e_fbit_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x4a]
+
+    e_fbit_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x40]
+
+    e_fbit_asr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x45]
+
+    e_fbit_asr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x4f]
+
+    e_fbit_asr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x5f]
+
+    e_fbit_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x4a]
+
+    e_fbit_asr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x40]
+
+    e_fbit_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x60]
+
+    e_fbit_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x65]
+
+    e_fbit_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x6f]
+
+    e_fbit_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x7f]
+
+    e_fbit_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x6a]
+
+    e_fbit_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x60]
+
+    e_fbit_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x65]
+
+    e_fbit_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x6f]
+
+    e_fbit_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x7f]
+
+    e_fbit_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x6a]
+
+    e_fbit_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x60]
+
+    e_fbit_asr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x65]
+
+    e_fbit_asr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x6f]
+
+    e_fbit_asr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x7f]
+
+    e_fbit_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x6a]
+
+    e_fbit_asr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x60]
+
+    e_fbit_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x60]
+
+    e_fbit_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x65]
+
+    e_fbit_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x6f]
+
+    e_fbit_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x7f]
+
+    e_fbit_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x6a]
+
+    e_fbit_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x60]
+
+    e_fbit_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x65]
+
+    e_fbit_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x6f]
+
+    e_fbit_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x7f]
+
+    e_fbit_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x6a]
+
+    e_fbit_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x60]
+
+    e_fbit_asr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x65]
+
+    e_fbit_asr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x6f]
+
+    e_fbit_asr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x7f]
+
+    e_fbit_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x6a]
+
+    e_fbit_asr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x60]
+
+    e_fbit_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x80]
+
+    e_fbit_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x85]
+
+    e_fbit_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x8f]
+
+    e_fbit_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x9f]
+
+    e_fbit_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x8a]
+
+    e_fbit_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x80]
+
+    e_fbit_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x85]
+
+    e_fbit_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x8f]
+
+    e_fbit_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x9f]
+
+    e_fbit_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x8a]
+
+    e_fbit_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x80]
+
+    e_fbit_asr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0x85]
+
+    e_fbit_asr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0x8f]
+
+    e_fbit_asr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0x9f]
+
+    e_fbit_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x8a]
+
+    e_fbit_asr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0x80]
+
+    e_fbit_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x80]
+
+    e_fbit_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x85]
+
+    e_fbit_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x8f]
+
+    e_fbit_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x9f]
+
+    e_fbit_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x8a]
+
+    e_fbit_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x80]
+
+    e_fbit_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x85]
+
+    e_fbit_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x8f]
+
+    e_fbit_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x9f]
+
+    e_fbit_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x8a]
+
+    e_fbit_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x80]
+
+    e_fbit_asr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0x85]
+
+    e_fbit_asr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0x8f]
+
+    e_fbit_asr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0x9f]
+
+    e_fbit_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x8a]
+
+    e_fbit_asr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0x80]
+
+    e_fbit_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xa0]
+
+    e_fbit_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xa5]
+
+    e_fbit_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xaf]
+
+    e_fbit_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xbf]
+
+    e_fbit_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xaa]
+
+    e_fbit_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xa0]
+
+    e_fbit_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xa5]
+
+    e_fbit_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xaf]
+
+    e_fbit_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xbf]
+
+    e_fbit_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xaa]
+
+    e_fbit_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xa0]
+
+    e_fbit_asr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xa5]
+
+    e_fbit_asr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xaf]
+
+    e_fbit_asr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xbf]
+
+    e_fbit_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xaa]
+
+    e_fbit_asr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xa0]
+
+    e_fbit_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xa0]
+
+    e_fbit_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xa5]
+
+    e_fbit_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xaf]
+
+    e_fbit_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xbf]
+
+    e_fbit_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xaa]
+
+    e_fbit_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xa0]
+
+    e_fbit_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xa5]
+
+    e_fbit_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xaf]
+
+    e_fbit_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xbf]
+
+    e_fbit_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xaa]
+
+    e_fbit_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xa0]
+
+    e_fbit_asr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xa5]
+
+    e_fbit_asr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xaf]
+
+    e_fbit_asr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xbf]
+
+    e_fbit_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xaa]
+
+    e_fbit_asr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xa0]
+
+    e_fbit_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xc0]
+
+    e_fbit_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xc5]
+
+    e_fbit_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xcf]
+
+    e_fbit_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xdf]
+
+    e_fbit_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xca]
+
+    e_fbit_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xc0]
+
+    e_fbit_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xc5]
+
+    e_fbit_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xcf]
+
+    e_fbit_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xdf]
+
+    e_fbit_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xca]
+
+    e_fbit_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xc0]
+
+    e_fbit_asr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xc5]
+
+    e_fbit_asr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xcf]
+
+    e_fbit_asr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xdf]
+
+    e_fbit_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xca]
+
+    e_fbit_asr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xc0]
+
+    e_fbit_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xc0]
+
+    e_fbit_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xc5]
+
+    e_fbit_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xcf]
+
+    e_fbit_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xdf]
+
+    e_fbit_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xca]
+
+    e_fbit_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xc0]
+
+    e_fbit_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xc5]
+
+    e_fbit_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xcf]
+
+    e_fbit_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xdf]
+
+    e_fbit_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xca]
+
+    e_fbit_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xc0]
+
+    e_fbit_asr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xc5]
+
+    e_fbit_asr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xcf]
+
+    e_fbit_asr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xdf]
+
+    e_fbit_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xca]
+
+    e_fbit_asr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xc0]
+
+    e_fbit_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xe0]
+
+    e_fbit_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xe5]
+
+    e_fbit_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xef]
+
+    e_fbit_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xff]
+
+    e_fbit_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xea]
+
+    e_fbit_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xe0]
+
+    e_fbit_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xe5]
+
+    e_fbit_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xef]
+
+    e_fbit_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xff]
+
+    e_fbit_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xea]
+
+    e_fbit_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xe0]
+
+    e_fbit_asr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x2c,0xe5]
+
+    e_fbit_asr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x5d,0xef]
+
+    e_fbit_asr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x7d,0xff]
+
+    e_fbit_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xea]
+
+    e_fbit_asr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x0c,0xe0]
+
+    e_fbit_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xe0]
+
+    e_fbit_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xe5]
+
+    e_fbit_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xef]
+
+    e_fbit_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xff]
+
+    e_fbit_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xea]
+
+    e_fbit_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xe0]
+
+    e_fbit_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xe5]
+
+    e_fbit_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xef]
+
+    e_fbit_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xff]
+
+    e_fbit_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xea]
+
+    e_fbit_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xe0]
+
+    e_fbit_asr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x2c,0xe5]
+
+    e_fbit_asr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x5d,0xef]
+
+    e_fbit_asr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x7d,0xff]
+
+    e_fbit_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xea]
+
+    e_fbit_asr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x0c,0xe0]
+
+    e_fbit_asr_ze r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x0c,0x00]
+
+    e_fbit_asr_nz r2, r2, 0x5
+# CHECK: encoding: [0x51,0x08,0x2c,0x05]
+
+    e_fbit_asr_po r5, r5, 0xf
+# CHECK: encoding: [0x71,0x14,0x5c,0x0f]
+
+    e_fbit_asr_ne r7, r7, 0x1f
+# CHECK: encoding: [0x91,0x1c,0x7c,0x1f]
+
+    e_fbit_asr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x1c,0x0a]
+
+    e_fbit_asr_az r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x0c,0x00]
+
+    e_fbit_asr_zb r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x08,0x2c,0x05]
+
+    e_fbit_asr_ca r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x14,0x5c,0x0f]
+
+    e_fbit_asr_nc r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1d,0x7c,0x1f]
+
+    e_fbit_asr_cz r1, r1, 0xa
+# CHECK: encoding: [0x31,0x05,0x1c,0x0a]
+
+    e_fbit_asr_spo r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x0c,0x00]
+
+    e_fbit_asr_sne r2, r2, 0x5
+# CHECK: encoding: [0x71,0x09,0x2c,0x05]
+
+    e_fbit_asr_nbs r5, r5, 0xf
+# CHECK: encoding: [0x91,0x15,0x5c,0x0f]
+
+    e_fbit_asr_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0x1d,0x7c,0x1f]
+
+    e_fbit_asr_bs r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x05,0x1c,0x0a]
+
+    e_fbit_asr_ex r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x0c,0x00]
+
+    e_fbit_asrs_ze r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x0c,0x00]
+
+    e_fbit_asrs_nz r2, r2, 0x5
+# CHECK: encoding: [0x51,0x0a,0x2c,0x05]
+
+    e_fbit_asrs_po r5, r5, 0xf
+# CHECK: encoding: [0x71,0x16,0x5c,0x0f]
+
+    e_fbit_asrs_ne r7, r7, 0x1f
+# CHECK: encoding: [0x91,0x1e,0x7c,0x1f]
+
+    e_fbit_asrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x1c,0x0a]
+
+    e_fbit_asrs_az r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x0c,0x00]
+
+    e_fbit_asrs_zb r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x0a,0x2c,0x05]
+
+    e_fbit_asrs_ca r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x16,0x5c,0x0f]
+
+    e_fbit_asrs_nc r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1f,0x7c,0x1f]
+
+    e_fbit_asrs_cz r1, r1, 0xa
+# CHECK: encoding: [0x31,0x07,0x1c,0x0a]
+
+    e_fbit_asrs_spo r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x0c,0x00]
+
+    e_fbit_asrs_sne r2, r2, 0x5
+# CHECK: encoding: [0x71,0x0b,0x2c,0x05]
+
+    e_fbit_asrs_nbs r5, r5, 0xf
+# CHECK: encoding: [0x91,0x17,0x5c,0x0f]
+
+    e_fbit_asrs_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0x1f,0x7c,0x1f]
+
+    e_fbit_asrs_bs r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x07,0x1c,0x0a]
+
+    e_fbit_asrs_ex r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x0c,0x00]
+
+    e_fbit_asr_and_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x0c,0x20]
+
+    e_fbit_asr_and_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x2c,0x25]
+
+    e_fbit_asr_and_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x5d,0x2f]
+
+    e_fbit_asr_and_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x7d,0x3f]
+
+    e_fbit_asr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x2a]
+
+    e_fbit_asr_and_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x0c,0x20]
+
+    e_fbit_asr_and_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x2c,0x25]
+
+    e_fbit_asr_and_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x5d,0x2f]
+
+    e_fbit_asr_and_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x7d,0x3f]
+
+    e_fbit_asr_and_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x1c,0x2a]
+
+    e_fbit_asr_and_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x0c,0x20]
+
+    e_fbit_asr_and_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x2c,0x25]
+
+    e_fbit_asr_and_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x5d,0x2f]
+
+    e_fbit_asr_and_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x7d,0x3f]
+
+    e_fbit_asr_and_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x1c,0x2a]
+
+    e_fbit_asr_and_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x0c,0x20]
+
+    e_fbit_asr_ands_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x0c,0x20]
+
+    e_fbit_asr_ands_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x2c,0x25]
+
+    e_fbit_asr_ands_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x5d,0x2f]
+
+    e_fbit_asr_ands_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x7d,0x3f]
+
+    e_fbit_asr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x2a]
+
+    e_fbit_asr_ands_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x0c,0x20]
+
+    e_fbit_asr_ands_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x2c,0x25]
+
+    e_fbit_asr_ands_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x5d,0x2f]
+
+    e_fbit_asr_ands_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x7d,0x3f]
+
+    e_fbit_asr_ands_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x1c,0x2a]
+
+    e_fbit_asr_ands_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x0c,0x20]
+
+    e_fbit_asr_ands_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x2c,0x25]
+
+    e_fbit_asr_ands_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x5d,0x2f]
+
+    e_fbit_asr_ands_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x7d,0x3f]
+
+    e_fbit_asr_ands_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x1c,0x2a]
+
+    e_fbit_asr_ands_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x0c,0x20]
+
+    e_fbit_asr_or_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x0c,0x40]
+
+    e_fbit_asr_or_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x2c,0x45]
+
+    e_fbit_asr_or_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x5d,0x4f]
+
+    e_fbit_asr_or_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x7d,0x5f]
+
+    e_fbit_asr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x4a]
+
+    e_fbit_asr_or_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x0c,0x40]
+
+    e_fbit_asr_or_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x2c,0x45]
+
+    e_fbit_asr_or_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x5d,0x4f]
+
+    e_fbit_asr_or_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x7d,0x5f]
+
+    e_fbit_asr_or_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x1c,0x4a]
+
+    e_fbit_asr_or_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x0c,0x40]
+
+    e_fbit_asr_or_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x2c,0x45]
+
+    e_fbit_asr_or_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x5d,0x4f]
+
+    e_fbit_asr_or_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x7d,0x5f]
+
+    e_fbit_asr_or_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x1c,0x4a]
+
+    e_fbit_asr_or_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x0c,0x40]
+
+    e_fbit_asr_ors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x0c,0x40]
+
+    e_fbit_asr_ors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x2c,0x45]
+
+    e_fbit_asr_ors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x5d,0x4f]
+
+    e_fbit_asr_ors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x7d,0x5f]
+
+    e_fbit_asr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x4a]
+
+    e_fbit_asr_ors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x0c,0x40]
+
+    e_fbit_asr_ors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x2c,0x45]
+
+    e_fbit_asr_ors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x5d,0x4f]
+
+    e_fbit_asr_ors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x7d,0x5f]
+
+    e_fbit_asr_ors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x1c,0x4a]
+
+    e_fbit_asr_ors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x0c,0x40]
+
+    e_fbit_asr_ors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x2c,0x45]
+
+    e_fbit_asr_ors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x5d,0x4f]
+
+    e_fbit_asr_ors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x7d,0x5f]
+
+    e_fbit_asr_ors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x1c,0x4a]
+
+    e_fbit_asr_ors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x0c,0x40]
+
+    e_fbit_asr_xor_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x0c,0x60]
+
+    e_fbit_asr_xor_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x2c,0x65]
+
+    e_fbit_asr_xor_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x5d,0x6f]
+
+    e_fbit_asr_xor_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x7d,0x7f]
+
+    e_fbit_asr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x6a]
+
+    e_fbit_asr_xor_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x0c,0x60]
+
+    e_fbit_asr_xor_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x2c,0x65]
+
+    e_fbit_asr_xor_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x5d,0x6f]
+
+    e_fbit_asr_xor_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x7d,0x7f]
+
+    e_fbit_asr_xor_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x1c,0x6a]
+
+    e_fbit_asr_xor_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x0c,0x60]
+
+    e_fbit_asr_xor_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x2c,0x65]
+
+    e_fbit_asr_xor_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x5d,0x6f]
+
+    e_fbit_asr_xor_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x7d,0x7f]
+
+    e_fbit_asr_xor_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x1c,0x6a]
+
+    e_fbit_asr_xor_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x0c,0x60]
+
+    e_fbit_asr_xors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x0c,0x60]
+
+    e_fbit_asr_xors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x2c,0x65]
+
+    e_fbit_asr_xors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x5d,0x6f]
+
+    e_fbit_asr_xors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x7d,0x7f]
+
+    e_fbit_asr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x6a]
+
+    e_fbit_asr_xors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x0c,0x60]
+
+    e_fbit_asr_xors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x2c,0x65]
+
+    e_fbit_asr_xors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x5d,0x6f]
+
+    e_fbit_asr_xors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x7d,0x7f]
+
+    e_fbit_asr_xors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x1c,0x6a]
+
+    e_fbit_asr_xors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x0c,0x60]
+
+    e_fbit_asr_xors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x2c,0x65]
+
+    e_fbit_asr_xors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x5d,0x6f]
+
+    e_fbit_asr_xors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x7d,0x7f]
+
+    e_fbit_asr_xors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x1c,0x6a]
+
+    e_fbit_asr_xors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x0c,0x60]
+
+    e_fbit_asr_add_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x0c,0x80]
+
+    e_fbit_asr_add_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x2c,0x85]
+
+    e_fbit_asr_add_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x5d,0x8f]
+
+    e_fbit_asr_add_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x7d,0x9f]
+
+    e_fbit_asr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0x8a]
+
+    e_fbit_asr_add_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x0c,0x80]
+
+    e_fbit_asr_add_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x2c,0x85]
+
+    e_fbit_asr_add_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x5d,0x8f]
+
+    e_fbit_asr_add_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x7d,0x9f]
+
+    e_fbit_asr_add_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x1c,0x8a]
+
+    e_fbit_asr_add_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x0c,0x80]
+
+    e_fbit_asr_add_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x2c,0x85]
+
+    e_fbit_asr_add_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x5d,0x8f]
+
+    e_fbit_asr_add_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x7d,0x9f]
+
+    e_fbit_asr_add_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x1c,0x8a]
+
+    e_fbit_asr_add_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x0c,0x80]
+
+    e_fbit_asr_adds_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x0c,0x80]
+
+    e_fbit_asr_adds_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x2c,0x85]
+
+    e_fbit_asr_adds_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x5d,0x8f]
+
+    e_fbit_asr_adds_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x7d,0x9f]
+
+    e_fbit_asr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0x8a]
+
+    e_fbit_asr_adds_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x0c,0x80]
+
+    e_fbit_asr_adds_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x2c,0x85]
+
+    e_fbit_asr_adds_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x5d,0x8f]
+
+    e_fbit_asr_adds_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x7d,0x9f]
+
+    e_fbit_asr_adds_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x1c,0x8a]
+
+    e_fbit_asr_adds_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x0c,0x80]
+
+    e_fbit_asr_adds_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x2c,0x85]
+
+    e_fbit_asr_adds_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x5d,0x8f]
+
+    e_fbit_asr_adds_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x7d,0x9f]
+
+    e_fbit_asr_adds_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x1c,0x8a]
+
+    e_fbit_asr_adds_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x0c,0x80]
+
+    e_fbit_asr_sub_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x0c,0xa0]
+
+    e_fbit_asr_sub_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x2c,0xa5]
+
+    e_fbit_asr_sub_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x5d,0xaf]
+
+    e_fbit_asr_sub_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x7d,0xbf]
+
+    e_fbit_asr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xaa]
+
+    e_fbit_asr_sub_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x0c,0xa0]
+
+    e_fbit_asr_sub_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x2c,0xa5]
+
+    e_fbit_asr_sub_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x5d,0xaf]
+
+    e_fbit_asr_sub_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x7d,0xbf]
+
+    e_fbit_asr_sub_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x1c,0xaa]
+
+    e_fbit_asr_sub_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x0c,0xa0]
+
+    e_fbit_asr_sub_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x2c,0xa5]
+
+    e_fbit_asr_sub_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x5d,0xaf]
+
+    e_fbit_asr_sub_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x7d,0xbf]
+
+    e_fbit_asr_sub_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x1c,0xaa]
+
+    e_fbit_asr_sub_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x0c,0xa0]
+
+    e_fbit_asr_subs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x0c,0xa0]
+
+    e_fbit_asr_subs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x2c,0xa5]
+
+    e_fbit_asr_subs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x5d,0xaf]
+
+    e_fbit_asr_subs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x7d,0xbf]
+
+    e_fbit_asr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xaa]
+
+    e_fbit_asr_subs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x0c,0xa0]
+
+    e_fbit_asr_subs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x2c,0xa5]
+
+    e_fbit_asr_subs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x5d,0xaf]
+
+    e_fbit_asr_subs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x7d,0xbf]
+
+    e_fbit_asr_subs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x1c,0xaa]
+
+    e_fbit_asr_subs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x0c,0xa0]
+
+    e_fbit_asr_subs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x2c,0xa5]
+
+    e_fbit_asr_subs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x5d,0xaf]
+
+    e_fbit_asr_subs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x7d,0xbf]
+
+    e_fbit_asr_subs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x1c,0xaa]
+
+    e_fbit_asr_subs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x0c,0xa0]
+
+    e_fbit_asr_adc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x0c,0xc0]
+
+    e_fbit_asr_adc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x2c,0xc5]
+
+    e_fbit_asr_adc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x5d,0xcf]
+
+    e_fbit_asr_adc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x7d,0xdf]
+
+    e_fbit_asr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xca]
+
+    e_fbit_asr_adc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x0c,0xc0]
+
+    e_fbit_asr_adc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x2c,0xc5]
+
+    e_fbit_asr_adc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x5d,0xcf]
+
+    e_fbit_asr_adc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x7d,0xdf]
+
+    e_fbit_asr_adc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x1c,0xca]
+
+    e_fbit_asr_adc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x0c,0xc0]
+
+    e_fbit_asr_adc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x2c,0xc5]
+
+    e_fbit_asr_adc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x5d,0xcf]
+
+    e_fbit_asr_adc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x7d,0xdf]
+
+    e_fbit_asr_adc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x1c,0xca]
+
+    e_fbit_asr_adc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x0c,0xc0]
+
+    e_fbit_asr_adcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x0c,0xc0]
+
+    e_fbit_asr_adcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x2c,0xc5]
+
+    e_fbit_asr_adcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x5d,0xcf]
+
+    e_fbit_asr_adcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x7d,0xdf]
+
+    e_fbit_asr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xca]
+
+    e_fbit_asr_adcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x0c,0xc0]
+
+    e_fbit_asr_adcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x2c,0xc5]
+
+    e_fbit_asr_adcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x5d,0xcf]
+
+    e_fbit_asr_adcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x7d,0xdf]
+
+    e_fbit_asr_adcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x1c,0xca]
+
+    e_fbit_asr_adcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x0c,0xc0]
+
+    e_fbit_asr_adcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x2c,0xc5]
+
+    e_fbit_asr_adcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x5d,0xcf]
+
+    e_fbit_asr_adcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x7d,0xdf]
+
+    e_fbit_asr_adcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x1c,0xca]
+
+    e_fbit_asr_adcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x0c,0xc0]
+
+    e_fbit_asr_sbc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x0c,0xe0]
+
+    e_fbit_asr_sbc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x2c,0xe5]
+
+    e_fbit_asr_sbc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x5d,0xef]
+
+    e_fbit_asr_sbc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x7d,0xff]
+
+    e_fbit_asr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x1c,0xea]
+
+    e_fbit_asr_sbc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x0c,0xe0]
+
+    e_fbit_asr_sbc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x2c,0xe5]
+
+    e_fbit_asr_sbc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x5d,0xef]
+
+    e_fbit_asr_sbc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x7d,0xff]
+
+    e_fbit_asr_sbc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x1c,0xea]
+
+    e_fbit_asr_sbc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x0c,0xe0]
+
+    e_fbit_asr_sbc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x2c,0xe5]
+
+    e_fbit_asr_sbc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x5d,0xef]
+
+    e_fbit_asr_sbc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x7d,0xff]
+
+    e_fbit_asr_sbc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x1c,0xea]
+
+    e_fbit_asr_sbc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x0c,0xe0]
+
+    e_fbit_asr_sbcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x0c,0xe0]
+
+    e_fbit_asr_sbcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x2c,0xe5]
+
+    e_fbit_asr_sbcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x5d,0xef]
+
+    e_fbit_asr_sbcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x7d,0xff]
+
+    e_fbit_asr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x1c,0xea]
+
+    e_fbit_asr_sbcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x0c,0xe0]
+
+    e_fbit_asr_sbcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x2c,0xe5]
+
+    e_fbit_asr_sbcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x5d,0xef]
+
+    e_fbit_asr_sbcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x7d,0xff]
+
+    e_fbit_asr_sbcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x1c,0xea]
+
+    e_fbit_asr_sbcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x0c,0xe0]
+
+    e_fbit_asr_sbcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x2c,0xe5]
+
+    e_fbit_asr_sbcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x5d,0xef]
+
+    e_fbit_asr_sbcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x7d,0xff]
+
+    e_fbit_asr_sbcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x1c,0xea]
+
+    e_fbit_asr_sbcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x0c,0xe0]
+
+    e_fend_lsr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x00]
+
+    e_fend_lsr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x20,0x05]
+
+    e_fend_lsr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x50,0x0f]
+
+    e_fend_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x70,0x1f]
+
+    e_fend_lsr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x10,0x0a]
+
+    e_fend_lsr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x00]
+
+    e_fend_lsr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x20,0x05]
+
+    e_fend_lsr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x50,0x0f]
+
+    e_fend_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x70,0x1f]
+
+    e_fend_lsr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x10,0x0a]
+
+    e_fend_lsr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x00]
+
+    e_fend_lsr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x20,0x05]
+
+    e_fend_lsr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x50,0x0f]
+
+    e_fend_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x70,0x1f]
+
+    e_fend_lsr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x10,0x0a]
+
+    e_fend_lsr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x00]
+
+    e_fend_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x00]
+
+    e_fend_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x20,0x05]
+
+    e_fend_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x50,0x0f]
+
+    e_fend_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x70,0x1f]
+
+    e_fend_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x10,0x0a]
+
+    e_fend_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x00]
+
+    e_fend_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x20,0x05]
+
+    e_fend_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x50,0x0f]
+
+    e_fend_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x70,0x1f]
+
+    e_fend_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x10,0x0a]
+
+    e_fend_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x00]
+
+    e_fend_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x20,0x05]
+
+    e_fend_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x50,0x0f]
+
+    e_fend_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x70,0x1f]
+
+    e_fend_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x10,0x0a]
+
+    e_fend_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x00]
+
+    e_fend_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x20]
+
+    e_fend_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x25]
+
+    e_fend_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x2f]
+
+    e_fend_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x3f]
+
+    e_fend_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x2a]
+
+    e_fend_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x20]
+
+    e_fend_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x25]
+
+    e_fend_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x2f]
+
+    e_fend_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x3f]
+
+    e_fend_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x2a]
+
+    e_fend_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x20]
+
+    e_fend_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x25]
+
+    e_fend_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x2f]
+
+    e_fend_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x3f]
+
+    e_fend_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x2a]
+
+    e_fend_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x20]
+
+    e_fend_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x20]
+
+    e_fend_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x25]
+
+    e_fend_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x2f]
+
+    e_fend_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x3f]
+
+    e_fend_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x2a]
+
+    e_fend_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x20]
+
+    e_fend_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x25]
+
+    e_fend_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x2f]
+
+    e_fend_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x3f]
+
+    e_fend_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x2a]
+
+    e_fend_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x20]
+
+    e_fend_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x25]
+
+    e_fend_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x2f]
+
+    e_fend_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x3f]
+
+    e_fend_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x2a]
+
+    e_fend_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x20]
+
+    e_fend_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x40]
+
+    e_fend_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x45]
+
+    e_fend_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x4f]
+
+    e_fend_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x5f]
+
+    e_fend_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x4a]
+
+    e_fend_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x40]
+
+    e_fend_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x45]
+
+    e_fend_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x4f]
+
+    e_fend_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x5f]
+
+    e_fend_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x4a]
+
+    e_fend_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x40]
+
+    e_fend_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x45]
+
+    e_fend_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x4f]
+
+    e_fend_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x5f]
+
+    e_fend_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x4a]
+
+    e_fend_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x40]
+
+    e_fend_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x40]
+
+    e_fend_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x45]
+
+    e_fend_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x4f]
+
+    e_fend_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x5f]
+
+    e_fend_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x4a]
+
+    e_fend_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x40]
+
+    e_fend_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x45]
+
+    e_fend_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x4f]
+
+    e_fend_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x5f]
+
+    e_fend_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x4a]
+
+    e_fend_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x40]
+
+    e_fend_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x45]
+
+    e_fend_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x4f]
+
+    e_fend_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x5f]
+
+    e_fend_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x4a]
+
+    e_fend_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x40]
+
+    e_fend_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x60]
+
+    e_fend_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x65]
+
+    e_fend_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x6f]
+
+    e_fend_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x7f]
+
+    e_fend_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x6a]
+
+    e_fend_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x60]
+
+    e_fend_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x65]
+
+    e_fend_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x6f]
+
+    e_fend_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x7f]
+
+    e_fend_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x6a]
+
+    e_fend_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x60]
+
+    e_fend_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x65]
+
+    e_fend_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x6f]
+
+    e_fend_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x7f]
+
+    e_fend_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x6a]
+
+    e_fend_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x60]
+
+    e_fend_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x60]
+
+    e_fend_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x65]
+
+    e_fend_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x6f]
+
+    e_fend_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x7f]
+
+    e_fend_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x6a]
+
+    e_fend_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x60]
+
+    e_fend_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x65]
+
+    e_fend_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x6f]
+
+    e_fend_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x7f]
+
+    e_fend_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x6a]
+
+    e_fend_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x60]
+
+    e_fend_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x65]
+
+    e_fend_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x6f]
+
+    e_fend_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x7f]
+
+    e_fend_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x6a]
+
+    e_fend_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x60]
+
+    e_fend_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x80]
+
+    e_fend_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x85]
+
+    e_fend_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x8f]
+
+    e_fend_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x9f]
+
+    e_fend_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x8a]
+
+    e_fend_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x80]
+
+    e_fend_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x85]
+
+    e_fend_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x8f]
+
+    e_fend_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x9f]
+
+    e_fend_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x8a]
+
+    e_fend_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x80]
+
+    e_fend_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0x85]
+
+    e_fend_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0x8f]
+
+    e_fend_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0x9f]
+
+    e_fend_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x8a]
+
+    e_fend_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0x80]
+
+    e_fend_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x80]
+
+    e_fend_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x85]
+
+    e_fend_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x8f]
+
+    e_fend_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x9f]
+
+    e_fend_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x8a]
+
+    e_fend_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x80]
+
+    e_fend_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x85]
+
+    e_fend_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x8f]
+
+    e_fend_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x9f]
+
+    e_fend_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x8a]
+
+    e_fend_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x80]
+
+    e_fend_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0x85]
+
+    e_fend_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0x8f]
+
+    e_fend_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0x9f]
+
+    e_fend_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x8a]
+
+    e_fend_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0x80]
+
+    e_fend_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xa0]
+
+    e_fend_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xa5]
+
+    e_fend_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xaf]
+
+    e_fend_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xbf]
+
+    e_fend_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xaa]
+
+    e_fend_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xa0]
+
+    e_fend_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xa5]
+
+    e_fend_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xaf]
+
+    e_fend_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xbf]
+
+    e_fend_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xaa]
+
+    e_fend_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xa0]
+
+    e_fend_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xa5]
+
+    e_fend_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xaf]
+
+    e_fend_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xbf]
+
+    e_fend_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xaa]
+
+    e_fend_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xa0]
+
+    e_fend_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xa0]
+
+    e_fend_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xa5]
+
+    e_fend_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xaf]
+
+    e_fend_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xbf]
+
+    e_fend_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xaa]
+
+    e_fend_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xa0]
+
+    e_fend_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xa5]
+
+    e_fend_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xaf]
+
+    e_fend_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xbf]
+
+    e_fend_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xaa]
+
+    e_fend_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xa0]
+
+    e_fend_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xa5]
+
+    e_fend_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xaf]
+
+    e_fend_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xbf]
+
+    e_fend_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xaa]
+
+    e_fend_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xa0]
+
+    e_fend_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xc0]
+
+    e_fend_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xc5]
+
+    e_fend_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xcf]
+
+    e_fend_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xdf]
+
+    e_fend_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xca]
+
+    e_fend_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xc0]
+
+    e_fend_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xc5]
+
+    e_fend_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xcf]
+
+    e_fend_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xdf]
+
+    e_fend_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xca]
+
+    e_fend_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xc0]
+
+    e_fend_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xc5]
+
+    e_fend_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xcf]
+
+    e_fend_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xdf]
+
+    e_fend_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xca]
+
+    e_fend_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xc0]
+
+    e_fend_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xc0]
+
+    e_fend_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xc5]
+
+    e_fend_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xcf]
+
+    e_fend_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xdf]
+
+    e_fend_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xca]
+
+    e_fend_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xc0]
+
+    e_fend_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xc5]
+
+    e_fend_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xcf]
+
+    e_fend_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xdf]
+
+    e_fend_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xca]
+
+    e_fend_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xc0]
+
+    e_fend_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xc5]
+
+    e_fend_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xcf]
+
+    e_fend_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xdf]
+
+    e_fend_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xca]
+
+    e_fend_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xc0]
+
+    e_fend_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xe0]
+
+    e_fend_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xe5]
+
+    e_fend_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xef]
+
+    e_fend_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xff]
+
+    e_fend_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xea]
+
+    e_fend_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xe0]
+
+    e_fend_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xe5]
+
+    e_fend_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xef]
+
+    e_fend_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xff]
+
+    e_fend_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xea]
+
+    e_fend_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xe0]
+
+    e_fend_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x20,0xe5]
+
+    e_fend_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x51,0xef]
+
+    e_fend_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x71,0xff]
+
+    e_fend_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xea]
+
+    e_fend_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x00,0xe0]
+
+    e_fend_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xe0]
+
+    e_fend_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xe5]
+
+    e_fend_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xef]
+
+    e_fend_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xff]
+
+    e_fend_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xea]
+
+    e_fend_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xe0]
+
+    e_fend_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xe5]
+
+    e_fend_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xef]
+
+    e_fend_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xff]
+
+    e_fend_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xea]
+
+    e_fend_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xe0]
+
+    e_fend_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x20,0xe5]
+
+    e_fend_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x51,0xef]
+
+    e_fend_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x71,0xff]
+
+    e_fend_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xea]
+
+    e_fend_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x00,0xe0]
+
+    e_fend_lsr_ze r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x00,0x00]
+
+    e_fend_lsr_nz r2, r2, 0x5
+# CHECK: encoding: [0x51,0x08,0x20,0x05]
+
+    e_fend_lsr_po r5, r5, 0xf
+# CHECK: encoding: [0x71,0x14,0x50,0x0f]
+
+    e_fend_lsr_ne r7, r7, 0x1f
+# CHECK: encoding: [0x91,0x1c,0x70,0x1f]
+
+    e_fend_lsr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x10,0x0a]
+
+    e_fend_lsr_az r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x00,0x00]
+
+    e_fend_lsr_zb r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x08,0x20,0x05]
+
+    e_fend_lsr_ca r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x14,0x50,0x0f]
+
+    e_fend_lsr_nc r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1d,0x70,0x1f]
+
+    e_fend_lsr_cz r1, r1, 0xa
+# CHECK: encoding: [0x31,0x05,0x10,0x0a]
+
+    e_fend_lsr_spo r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x00,0x00]
+
+    e_fend_lsr_sne r2, r2, 0x5
+# CHECK: encoding: [0x71,0x09,0x20,0x05]
+
+    e_fend_lsr_nbs r5, r5, 0xf
+# CHECK: encoding: [0x91,0x15,0x50,0x0f]
+
+    e_fend_lsr_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0x1d,0x70,0x1f]
+
+    e_fend_lsr_bs r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x05,0x10,0x0a]
+
+    e_fend_lsr_ex r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x00,0x00]
+
+    e_fend_lsrs_ze r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x00,0x00]
+
+    e_fend_lsrs_nz r2, r2, 0x5
+# CHECK: encoding: [0x51,0x0a,0x20,0x05]
+
+    e_fend_lsrs_po r5, r5, 0xf
+# CHECK: encoding: [0x71,0x16,0x50,0x0f]
+
+    e_fend_lsrs_ne r7, r7, 0x1f
+# CHECK: encoding: [0x91,0x1e,0x70,0x1f]
+
+    e_fend_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x10,0x0a]
+
+    e_fend_lsrs_az r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x00,0x00]
+
+    e_fend_lsrs_zb r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x0a,0x20,0x05]
+
+    e_fend_lsrs_ca r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x16,0x50,0x0f]
+
+    e_fend_lsrs_nc r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1f,0x70,0x1f]
+
+    e_fend_lsrs_cz r1, r1, 0xa
+# CHECK: encoding: [0x31,0x07,0x10,0x0a]
+
+    e_fend_lsrs_spo r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x00,0x00]
+
+    e_fend_lsrs_sne r2, r2, 0x5
+# CHECK: encoding: [0x71,0x0b,0x20,0x05]
+
+    e_fend_lsrs_nbs r5, r5, 0xf
+# CHECK: encoding: [0x91,0x17,0x50,0x0f]
+
+    e_fend_lsrs_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0x1f,0x70,0x1f]
+
+    e_fend_lsrs_bs r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x07,0x10,0x0a]
+
+    e_fend_lsrs_ex r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x00,0x00]
+
+    e_fend_lsr_and_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x00,0x20]
+
+    e_fend_lsr_and_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x20,0x25]
+
+    e_fend_lsr_and_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x51,0x2f]
+
+    e_fend_lsr_and_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x71,0x3f]
+
+    e_fend_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x2a]
+
+    e_fend_lsr_and_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x00,0x20]
+
+    e_fend_lsr_and_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x20,0x25]
+
+    e_fend_lsr_and_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x51,0x2f]
+
+    e_fend_lsr_and_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x71,0x3f]
+
+    e_fend_lsr_and_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x10,0x2a]
+
+    e_fend_lsr_and_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x00,0x20]
+
+    e_fend_lsr_and_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x20,0x25]
+
+    e_fend_lsr_and_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x51,0x2f]
+
+    e_fend_lsr_and_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x71,0x3f]
+
+    e_fend_lsr_and_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x10,0x2a]
+
+    e_fend_lsr_and_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x00,0x20]
+
+    e_fend_lsr_ands_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x00,0x20]
+
+    e_fend_lsr_ands_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x20,0x25]
+
+    e_fend_lsr_ands_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x51,0x2f]
+
+    e_fend_lsr_ands_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x71,0x3f]
+
+    e_fend_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x2a]
+
+    e_fend_lsr_ands_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x00,0x20]
+
+    e_fend_lsr_ands_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x20,0x25]
+
+    e_fend_lsr_ands_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x51,0x2f]
+
+    e_fend_lsr_ands_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x71,0x3f]
+
+    e_fend_lsr_ands_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x10,0x2a]
+
+    e_fend_lsr_ands_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x00,0x20]
+
+    e_fend_lsr_ands_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x20,0x25]
+
+    e_fend_lsr_ands_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x51,0x2f]
+
+    e_fend_lsr_ands_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x71,0x3f]
+
+    e_fend_lsr_ands_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x10,0x2a]
+
+    e_fend_lsr_ands_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x00,0x20]
+
+    e_fend_lsr_or_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x00,0x40]
+
+    e_fend_lsr_or_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x20,0x45]
+
+    e_fend_lsr_or_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x51,0x4f]
+
+    e_fend_lsr_or_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x71,0x5f]
+
+    e_fend_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x4a]
+
+    e_fend_lsr_or_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x00,0x40]
+
+    e_fend_lsr_or_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x20,0x45]
+
+    e_fend_lsr_or_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x51,0x4f]
+
+    e_fend_lsr_or_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x71,0x5f]
+
+    e_fend_lsr_or_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x10,0x4a]
+
+    e_fend_lsr_or_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x00,0x40]
+
+    e_fend_lsr_or_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x20,0x45]
+
+    e_fend_lsr_or_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x51,0x4f]
+
+    e_fend_lsr_or_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x71,0x5f]
+
+    e_fend_lsr_or_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x10,0x4a]
+
+    e_fend_lsr_or_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x00,0x40]
+
+    e_fend_lsr_ors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x00,0x40]
+
+    e_fend_lsr_ors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x20,0x45]
+
+    e_fend_lsr_ors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x51,0x4f]
+
+    e_fend_lsr_ors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x71,0x5f]
+
+    e_fend_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x4a]
+
+    e_fend_lsr_ors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x00,0x40]
+
+    e_fend_lsr_ors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x20,0x45]
+
+    e_fend_lsr_ors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x51,0x4f]
+
+    e_fend_lsr_ors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x71,0x5f]
+
+    e_fend_lsr_ors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x10,0x4a]
+
+    e_fend_lsr_ors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x00,0x40]
+
+    e_fend_lsr_ors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x20,0x45]
+
+    e_fend_lsr_ors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x51,0x4f]
+
+    e_fend_lsr_ors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x71,0x5f]
+
+    e_fend_lsr_ors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x10,0x4a]
+
+    e_fend_lsr_ors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x00,0x40]
+
+    e_fend_lsr_xor_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x00,0x60]
+
+    e_fend_lsr_xor_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x20,0x65]
+
+    e_fend_lsr_xor_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x51,0x6f]
+
+    e_fend_lsr_xor_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x71,0x7f]
+
+    e_fend_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x6a]
+
+    e_fend_lsr_xor_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x00,0x60]
+
+    e_fend_lsr_xor_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x20,0x65]
+
+    e_fend_lsr_xor_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x51,0x6f]
+
+    e_fend_lsr_xor_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x71,0x7f]
+
+    e_fend_lsr_xor_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x10,0x6a]
+
+    e_fend_lsr_xor_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x00,0x60]
+
+    e_fend_lsr_xor_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x20,0x65]
+
+    e_fend_lsr_xor_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x51,0x6f]
+
+    e_fend_lsr_xor_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x71,0x7f]
+
+    e_fend_lsr_xor_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x10,0x6a]
+
+    e_fend_lsr_xor_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x00,0x60]
+
+    e_fend_lsr_xors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x00,0x60]
+
+    e_fend_lsr_xors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x20,0x65]
+
+    e_fend_lsr_xors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x51,0x6f]
+
+    e_fend_lsr_xors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x71,0x7f]
+
+    e_fend_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x6a]
+
+    e_fend_lsr_xors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x00,0x60]
+
+    e_fend_lsr_xors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x20,0x65]
+
+    e_fend_lsr_xors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x51,0x6f]
+
+    e_fend_lsr_xors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x71,0x7f]
+
+    e_fend_lsr_xors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x10,0x6a]
+
+    e_fend_lsr_xors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x00,0x60]
+
+    e_fend_lsr_xors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x20,0x65]
+
+    e_fend_lsr_xors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x51,0x6f]
+
+    e_fend_lsr_xors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x71,0x7f]
+
+    e_fend_lsr_xors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x10,0x6a]
+
+    e_fend_lsr_xors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x00,0x60]
+
+    e_fend_lsr_add_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x00,0x80]
+
+    e_fend_lsr_add_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x20,0x85]
+
+    e_fend_lsr_add_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x51,0x8f]
+
+    e_fend_lsr_add_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x71,0x9f]
+
+    e_fend_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0x8a]
+
+    e_fend_lsr_add_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x00,0x80]
+
+    e_fend_lsr_add_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x20,0x85]
+
+    e_fend_lsr_add_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x51,0x8f]
+
+    e_fend_lsr_add_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x71,0x9f]
+
+    e_fend_lsr_add_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x10,0x8a]
+
+    e_fend_lsr_add_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x00,0x80]
+
+    e_fend_lsr_add_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x20,0x85]
+
+    e_fend_lsr_add_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x51,0x8f]
+
+    e_fend_lsr_add_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x71,0x9f]
+
+    e_fend_lsr_add_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x10,0x8a]
+
+    e_fend_lsr_add_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x00,0x80]
+
+    e_fend_lsr_adds_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x00,0x80]
+
+    e_fend_lsr_adds_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x20,0x85]
+
+    e_fend_lsr_adds_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x51,0x8f]
+
+    e_fend_lsr_adds_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x71,0x9f]
+
+    e_fend_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0x8a]
+
+    e_fend_lsr_adds_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x00,0x80]
+
+    e_fend_lsr_adds_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x20,0x85]
+
+    e_fend_lsr_adds_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x51,0x8f]
+
+    e_fend_lsr_adds_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x71,0x9f]
+
+    e_fend_lsr_adds_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x10,0x8a]
+
+    e_fend_lsr_adds_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x00,0x80]
+
+    e_fend_lsr_adds_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x20,0x85]
+
+    e_fend_lsr_adds_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x51,0x8f]
+
+    e_fend_lsr_adds_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x71,0x9f]
+
+    e_fend_lsr_adds_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x10,0x8a]
+
+    e_fend_lsr_adds_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x00,0x80]
+
+    e_fend_lsr_sub_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x00,0xa0]
+
+    e_fend_lsr_sub_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x20,0xa5]
+
+    e_fend_lsr_sub_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x51,0xaf]
+
+    e_fend_lsr_sub_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x71,0xbf]
+
+    e_fend_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xaa]
+
+    e_fend_lsr_sub_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x00,0xa0]
+
+    e_fend_lsr_sub_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x20,0xa5]
+
+    e_fend_lsr_sub_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x51,0xaf]
+
+    e_fend_lsr_sub_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x71,0xbf]
+
+    e_fend_lsr_sub_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x10,0xaa]
+
+    e_fend_lsr_sub_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x00,0xa0]
+
+    e_fend_lsr_sub_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x20,0xa5]
+
+    e_fend_lsr_sub_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x51,0xaf]
+
+    e_fend_lsr_sub_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x71,0xbf]
+
+    e_fend_lsr_sub_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x10,0xaa]
+
+    e_fend_lsr_sub_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x00,0xa0]
+
+    e_fend_lsr_subs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x00,0xa0]
+
+    e_fend_lsr_subs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x20,0xa5]
+
+    e_fend_lsr_subs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x51,0xaf]
+
+    e_fend_lsr_subs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x71,0xbf]
+
+    e_fend_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xaa]
+
+    e_fend_lsr_subs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x00,0xa0]
+
+    e_fend_lsr_subs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x20,0xa5]
+
+    e_fend_lsr_subs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x51,0xaf]
+
+    e_fend_lsr_subs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x71,0xbf]
+
+    e_fend_lsr_subs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x10,0xaa]
+
+    e_fend_lsr_subs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x00,0xa0]
+
+    e_fend_lsr_subs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x20,0xa5]
+
+    e_fend_lsr_subs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x51,0xaf]
+
+    e_fend_lsr_subs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x71,0xbf]
+
+    e_fend_lsr_subs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x10,0xaa]
+
+    e_fend_lsr_subs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x00,0xa0]
+
+    e_fend_lsr_adc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x00,0xc0]
+
+    e_fend_lsr_adc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x20,0xc5]
+
+    e_fend_lsr_adc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x51,0xcf]
+
+    e_fend_lsr_adc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x71,0xdf]
+
+    e_fend_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xca]
+
+    e_fend_lsr_adc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x00,0xc0]
+
+    e_fend_lsr_adc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x20,0xc5]
+
+    e_fend_lsr_adc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x51,0xcf]
+
+    e_fend_lsr_adc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x71,0xdf]
+
+    e_fend_lsr_adc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x10,0xca]
+
+    e_fend_lsr_adc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x00,0xc0]
+
+    e_fend_lsr_adc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x20,0xc5]
+
+    e_fend_lsr_adc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x51,0xcf]
+
+    e_fend_lsr_adc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x71,0xdf]
+
+    e_fend_lsr_adc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x10,0xca]
+
+    e_fend_lsr_adc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x00,0xc0]
+
+    e_fend_lsr_adcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x00,0xc0]
+
+    e_fend_lsr_adcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x20,0xc5]
+
+    e_fend_lsr_adcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x51,0xcf]
+
+    e_fend_lsr_adcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x71,0xdf]
+
+    e_fend_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xca]
+
+    e_fend_lsr_adcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x00,0xc0]
+
+    e_fend_lsr_adcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x20,0xc5]
+
+    e_fend_lsr_adcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x51,0xcf]
+
+    e_fend_lsr_adcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x71,0xdf]
+
+    e_fend_lsr_adcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x10,0xca]
+
+    e_fend_lsr_adcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x00,0xc0]
+
+    e_fend_lsr_adcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x20,0xc5]
+
+    e_fend_lsr_adcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x51,0xcf]
+
+    e_fend_lsr_adcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x71,0xdf]
+
+    e_fend_lsr_adcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x10,0xca]
+
+    e_fend_lsr_adcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x00,0xc0]
+
+    e_fend_lsr_sbc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x00,0xe0]
+
+    e_fend_lsr_sbc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x20,0xe5]
+
+    e_fend_lsr_sbc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x51,0xef]
+
+    e_fend_lsr_sbc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x71,0xff]
+
+    e_fend_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x10,0xea]
+
+    e_fend_lsr_sbc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x00,0xe0]
+
+    e_fend_lsr_sbc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x20,0xe5]
+
+    e_fend_lsr_sbc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x51,0xef]
+
+    e_fend_lsr_sbc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x71,0xff]
+
+    e_fend_lsr_sbc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x10,0xea]
+
+    e_fend_lsr_sbc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x00,0xe0]
+
+    e_fend_lsr_sbc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x20,0xe5]
+
+    e_fend_lsr_sbc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x51,0xef]
+
+    e_fend_lsr_sbc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x71,0xff]
+
+    e_fend_lsr_sbc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x10,0xea]
+
+    e_fend_lsr_sbc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x00,0xe0]
+
+    e_fend_lsr_sbcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x00,0xe0]
+
+    e_fend_lsr_sbcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x20,0xe5]
+
+    e_fend_lsr_sbcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x51,0xef]
+
+    e_fend_lsr_sbcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x71,0xff]
+
+    e_fend_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x10,0xea]
+
+    e_fend_lsr_sbcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x00,0xe0]
+
+    e_fend_lsr_sbcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x20,0xe5]
+
+    e_fend_lsr_sbcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x51,0xef]
+
+    e_fend_lsr_sbcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x71,0xff]
+
+    e_fend_lsr_sbcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x10,0xea]
+
+    e_fend_lsr_sbcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x00,0xe0]
+
+    e_fend_lsr_sbcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x20,0xe5]
+
+    e_fend_lsr_sbcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x51,0xef]
+
+    e_fend_lsr_sbcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x71,0xff]
+
+    e_fend_lsr_sbcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x10,0xea]
+
+    e_fend_lsr_sbcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x00,0xe0]
+
+    e_fbit_lsr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x00]
+
+    e_fbit_lsr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x24,0x05]
+
+    e_fbit_lsr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x54,0x0f]
+
+    e_fbit_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x74,0x1f]
+
+    e_fbit_lsr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x14,0x0a]
+
+    e_fbit_lsr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x00]
+
+    e_fbit_lsr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x24,0x05]
+
+    e_fbit_lsr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x54,0x0f]
+
+    e_fbit_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x74,0x1f]
+
+    e_fbit_lsr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x14,0x0a]
+
+    e_fbit_lsr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x00]
+
+    e_fbit_lsr r2, r2, 0x5
+# CHECK: encoding: [0x11,0x08,0x24,0x05]
+
+    e_fbit_lsr r5, r5, 0xf
+# CHECK: encoding: [0x11,0x14,0x54,0x0f]
+
+    e_fbit_lsr r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1c,0x74,0x1f]
+
+    e_fbit_lsr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x14,0x0a]
+
+    e_fbit_lsr r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x00]
+
+    e_fbit_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x00]
+
+    e_fbit_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x24,0x05]
+
+    e_fbit_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x54,0x0f]
+
+    e_fbit_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x74,0x1f]
+
+    e_fbit_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x14,0x0a]
+
+    e_fbit_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x00]
+
+    e_fbit_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x24,0x05]
+
+    e_fbit_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x54,0x0f]
+
+    e_fbit_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x74,0x1f]
+
+    e_fbit_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x14,0x0a]
+
+    e_fbit_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x00]
+
+    e_fbit_lsrs r2, r2, 0x5
+# CHECK: encoding: [0x11,0x0a,0x24,0x05]
+
+    e_fbit_lsrs r5, r5, 0xf
+# CHECK: encoding: [0x11,0x16,0x54,0x0f]
+
+    e_fbit_lsrs r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1e,0x74,0x1f]
+
+    e_fbit_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x14,0x0a]
+
+    e_fbit_lsrs r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x00]
+
+    e_fbit_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x20]
+
+    e_fbit_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x25]
+
+    e_fbit_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x2f]
+
+    e_fbit_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x3f]
+
+    e_fbit_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x2a]
+
+    e_fbit_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x20]
+
+    e_fbit_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x25]
+
+    e_fbit_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x2f]
+
+    e_fbit_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x3f]
+
+    e_fbit_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x2a]
+
+    e_fbit_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x20]
+
+    e_fbit_lsr_and r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x25]
+
+    e_fbit_lsr_and r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x2f]
+
+    e_fbit_lsr_and r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x3f]
+
+    e_fbit_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x2a]
+
+    e_fbit_lsr_and r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x20]
+
+    e_fbit_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x20]
+
+    e_fbit_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x25]
+
+    e_fbit_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x2f]
+
+    e_fbit_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x3f]
+
+    e_fbit_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x2a]
+
+    e_fbit_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x20]
+
+    e_fbit_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x25]
+
+    e_fbit_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x2f]
+
+    e_fbit_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x3f]
+
+    e_fbit_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x2a]
+
+    e_fbit_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x20]
+
+    e_fbit_lsr_ands r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x25]
+
+    e_fbit_lsr_ands r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x2f]
+
+    e_fbit_lsr_ands r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x3f]
+
+    e_fbit_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x2a]
+
+    e_fbit_lsr_ands r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x20]
+
+    e_fbit_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x40]
+
+    e_fbit_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x45]
+
+    e_fbit_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x4f]
+
+    e_fbit_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x5f]
+
+    e_fbit_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x4a]
+
+    e_fbit_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x40]
+
+    e_fbit_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x45]
+
+    e_fbit_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x4f]
+
+    e_fbit_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x5f]
+
+    e_fbit_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x4a]
+
+    e_fbit_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x40]
+
+    e_fbit_lsr_or r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x45]
+
+    e_fbit_lsr_or r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x4f]
+
+    e_fbit_lsr_or r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x5f]
+
+    e_fbit_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x4a]
+
+    e_fbit_lsr_or r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x40]
+
+    e_fbit_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x40]
+
+    e_fbit_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x45]
+
+    e_fbit_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x4f]
+
+    e_fbit_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x5f]
+
+    e_fbit_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x4a]
+
+    e_fbit_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x40]
+
+    e_fbit_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x45]
+
+    e_fbit_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x4f]
+
+    e_fbit_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x5f]
+
+    e_fbit_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x4a]
+
+    e_fbit_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x40]
+
+    e_fbit_lsr_ors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x45]
+
+    e_fbit_lsr_ors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x4f]
+
+    e_fbit_lsr_ors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x5f]
+
+    e_fbit_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x4a]
+
+    e_fbit_lsr_ors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x40]
+
+    e_fbit_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x60]
+
+    e_fbit_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x65]
+
+    e_fbit_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x6f]
+
+    e_fbit_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x7f]
+
+    e_fbit_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x6a]
+
+    e_fbit_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x60]
+
+    e_fbit_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x65]
+
+    e_fbit_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x6f]
+
+    e_fbit_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x7f]
+
+    e_fbit_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x6a]
+
+    e_fbit_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x60]
+
+    e_fbit_lsr_xor r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x65]
+
+    e_fbit_lsr_xor r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x6f]
+
+    e_fbit_lsr_xor r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x7f]
+
+    e_fbit_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x6a]
+
+    e_fbit_lsr_xor r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x60]
+
+    e_fbit_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x60]
+
+    e_fbit_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x65]
+
+    e_fbit_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x6f]
+
+    e_fbit_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x7f]
+
+    e_fbit_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x6a]
+
+    e_fbit_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x60]
+
+    e_fbit_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x65]
+
+    e_fbit_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x6f]
+
+    e_fbit_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x7f]
+
+    e_fbit_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x6a]
+
+    e_fbit_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x60]
+
+    e_fbit_lsr_xors r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x65]
+
+    e_fbit_lsr_xors r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x6f]
+
+    e_fbit_lsr_xors r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x7f]
+
+    e_fbit_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x6a]
+
+    e_fbit_lsr_xors r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x60]
+
+    e_fbit_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x80]
+
+    e_fbit_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x85]
+
+    e_fbit_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x8f]
+
+    e_fbit_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x9f]
+
+    e_fbit_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x8a]
+
+    e_fbit_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x80]
+
+    e_fbit_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x85]
+
+    e_fbit_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x8f]
+
+    e_fbit_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x9f]
+
+    e_fbit_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x8a]
+
+    e_fbit_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x80]
+
+    e_fbit_lsr_add r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0x85]
+
+    e_fbit_lsr_add r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0x8f]
+
+    e_fbit_lsr_add r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0x9f]
+
+    e_fbit_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x8a]
+
+    e_fbit_lsr_add r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0x80]
+
+    e_fbit_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x80]
+
+    e_fbit_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x85]
+
+    e_fbit_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x8f]
+
+    e_fbit_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x9f]
+
+    e_fbit_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x8a]
+
+    e_fbit_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x80]
+
+    e_fbit_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x85]
+
+    e_fbit_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x8f]
+
+    e_fbit_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x9f]
+
+    e_fbit_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x8a]
+
+    e_fbit_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x80]
+
+    e_fbit_lsr_adds r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0x85]
+
+    e_fbit_lsr_adds r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0x8f]
+
+    e_fbit_lsr_adds r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0x9f]
+
+    e_fbit_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x8a]
+
+    e_fbit_lsr_adds r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0x80]
+
+    e_fbit_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xa0]
+
+    e_fbit_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xa5]
+
+    e_fbit_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xaf]
+
+    e_fbit_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xbf]
+
+    e_fbit_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xaa]
+
+    e_fbit_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xa0]
+
+    e_fbit_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xa5]
+
+    e_fbit_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xaf]
+
+    e_fbit_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xbf]
+
+    e_fbit_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xaa]
+
+    e_fbit_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xa0]
+
+    e_fbit_lsr_sub r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xa5]
+
+    e_fbit_lsr_sub r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xaf]
+
+    e_fbit_lsr_sub r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xbf]
+
+    e_fbit_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xaa]
+
+    e_fbit_lsr_sub r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xa0]
+
+    e_fbit_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xa0]
+
+    e_fbit_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xa5]
+
+    e_fbit_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xaf]
+
+    e_fbit_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xbf]
+
+    e_fbit_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xaa]
+
+    e_fbit_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xa0]
+
+    e_fbit_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xa5]
+
+    e_fbit_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xaf]
+
+    e_fbit_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xbf]
+
+    e_fbit_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xaa]
+
+    e_fbit_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xa0]
+
+    e_fbit_lsr_subs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xa5]
+
+    e_fbit_lsr_subs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xaf]
+
+    e_fbit_lsr_subs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xbf]
+
+    e_fbit_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xaa]
+
+    e_fbit_lsr_subs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xa0]
+
+    e_fbit_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xc0]
+
+    e_fbit_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xc5]
+
+    e_fbit_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xcf]
+
+    e_fbit_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xdf]
+
+    e_fbit_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xca]
+
+    e_fbit_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xc0]
+
+    e_fbit_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xc5]
+
+    e_fbit_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xcf]
+
+    e_fbit_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xdf]
+
+    e_fbit_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xca]
+
+    e_fbit_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xc0]
+
+    e_fbit_lsr_adc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xc5]
+
+    e_fbit_lsr_adc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xcf]
+
+    e_fbit_lsr_adc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xdf]
+
+    e_fbit_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xca]
+
+    e_fbit_lsr_adc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xc0]
+
+    e_fbit_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xc0]
+
+    e_fbit_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xc5]
+
+    e_fbit_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xcf]
+
+    e_fbit_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xdf]
+
+    e_fbit_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xca]
+
+    e_fbit_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xc0]
+
+    e_fbit_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xc5]
+
+    e_fbit_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xcf]
+
+    e_fbit_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xdf]
+
+    e_fbit_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xca]
+
+    e_fbit_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xc0]
+
+    e_fbit_lsr_adcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xc5]
+
+    e_fbit_lsr_adcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xcf]
+
+    e_fbit_lsr_adcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xdf]
+
+    e_fbit_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xca]
+
+    e_fbit_lsr_adcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xc0]
+
+    e_fbit_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xe0]
+
+    e_fbit_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xe5]
+
+    e_fbit_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xef]
+
+    e_fbit_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xff]
+
+    e_fbit_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xea]
+
+    e_fbit_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xe0]
+
+    e_fbit_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xe5]
+
+    e_fbit_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xef]
+
+    e_fbit_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xff]
+
+    e_fbit_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xea]
+
+    e_fbit_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xe0]
+
+    e_fbit_lsr_sbc r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x88,0x24,0xe5]
+
+    e_fbit_lsr_sbc r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x54,0x55,0xef]
+
+    e_fbit_lsr_sbc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdc,0x75,0xff]
+
+    e_fbit_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xea]
+
+    e_fbit_lsr_sbc r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x00,0x04,0xe0]
+
+    e_fbit_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xe0]
+
+    e_fbit_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xe5]
+
+    e_fbit_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xef]
+
+    e_fbit_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xff]
+
+    e_fbit_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xea]
+
+    e_fbit_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xe0]
+
+    e_fbit_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xe5]
+
+    e_fbit_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xef]
+
+    e_fbit_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xff]
+
+    e_fbit_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xea]
+
+    e_fbit_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xe0]
+
+    e_fbit_lsr_sbcs r2, r2, r2, 0x5
+# CHECK: encoding: [0x11,0x8a,0x24,0xe5]
+
+    e_fbit_lsr_sbcs r5, r5, r5, 0xf
+# CHECK: encoding: [0x11,0x56,0x55,0xef]
+
+    e_fbit_lsr_sbcs r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xde,0x75,0xff]
+
+    e_fbit_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xea]
+
+    e_fbit_lsr_sbcs r0, r0, r0, 0x0
+# CHECK: encoding: [0x11,0x02,0x04,0xe0]
+
+    e_fbit_lsr_ze r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x04,0x00]
+
+    e_fbit_lsr_nz r2, r2, 0x5
+# CHECK: encoding: [0x51,0x08,0x24,0x05]
+
+    e_fbit_lsr_po r5, r5, 0xf
+# CHECK: encoding: [0x71,0x14,0x54,0x0f]
+
+    e_fbit_lsr_ne r7, r7, 0x1f
+# CHECK: encoding: [0x91,0x1c,0x74,0x1f]
+
+    e_fbit_lsr r1, r1, 0xa
+# CHECK: encoding: [0x11,0x04,0x14,0x0a]
+
+    e_fbit_lsr_az r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x04,0x00]
+
+    e_fbit_lsr_zb r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x08,0x24,0x05]
+
+    e_fbit_lsr_ca r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x14,0x54,0x0f]
+
+    e_fbit_lsr_nc r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1d,0x74,0x1f]
+
+    e_fbit_lsr_cz r1, r1, 0xa
+# CHECK: encoding: [0x31,0x05,0x14,0x0a]
+
+    e_fbit_lsr_spo r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x04,0x00]
+
+    e_fbit_lsr_sne r2, r2, 0x5
+# CHECK: encoding: [0x71,0x09,0x24,0x05]
+
+    e_fbit_lsr_nbs r5, r5, 0xf
+# CHECK: encoding: [0x91,0x15,0x54,0x0f]
+
+    e_fbit_lsr_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0x1d,0x74,0x1f]
+
+    e_fbit_lsr_bs r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x05,0x14,0x0a]
+
+    e_fbit_lsr_ex r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x04,0x00]
+
+    e_fbit_lsrs_ze r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x04,0x00]
+
+    e_fbit_lsrs_nz r2, r2, 0x5
+# CHECK: encoding: [0x51,0x0a,0x24,0x05]
+
+    e_fbit_lsrs_po r5, r5, 0xf
+# CHECK: encoding: [0x71,0x16,0x54,0x0f]
+
+    e_fbit_lsrs_ne r7, r7, 0x1f
+# CHECK: encoding: [0x91,0x1e,0x74,0x1f]
+
+    e_fbit_lsrs r1, r1, 0xa
+# CHECK: encoding: [0x11,0x06,0x14,0x0a]
+
+    e_fbit_lsrs_az r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x04,0x00]
+
+    e_fbit_lsrs_zb r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x0a,0x24,0x05]
+
+    e_fbit_lsrs_ca r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x16,0x54,0x0f]
+
+    e_fbit_lsrs_nc r7, r7, 0x1f
+# CHECK: encoding: [0x11,0x1f,0x74,0x1f]
+
+    e_fbit_lsrs_cz r1, r1, 0xa
+# CHECK: encoding: [0x31,0x07,0x14,0x0a]
+
+    e_fbit_lsrs_spo r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x04,0x00]
+
+    e_fbit_lsrs_sne r2, r2, 0x5
+# CHECK: encoding: [0x71,0x0b,0x24,0x05]
+
+    e_fbit_lsrs_nbs r5, r5, 0xf
+# CHECK: encoding: [0x91,0x17,0x54,0x0f]
+
+    e_fbit_lsrs_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0x1f,0x74,0x1f]
+
+    e_fbit_lsrs_bs r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x07,0x14,0x0a]
+
+    e_fbit_lsrs_ex r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x04,0x00]
+
+    e_fbit_lsr_and_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x04,0x20]
+
+    e_fbit_lsr_and_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x24,0x25]
+
+    e_fbit_lsr_and_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x55,0x2f]
+
+    e_fbit_lsr_and_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x75,0x3f]
+
+    e_fbit_lsr_and r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x2a]
+
+    e_fbit_lsr_and_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x04,0x20]
+
+    e_fbit_lsr_and_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x24,0x25]
+
+    e_fbit_lsr_and_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x55,0x2f]
+
+    e_fbit_lsr_and_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x75,0x3f]
+
+    e_fbit_lsr_and_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x14,0x2a]
+
+    e_fbit_lsr_and_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x04,0x20]
+
+    e_fbit_lsr_and_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x24,0x25]
+
+    e_fbit_lsr_and_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x55,0x2f]
+
+    e_fbit_lsr_and_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x75,0x3f]
+
+    e_fbit_lsr_and_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x14,0x2a]
+
+    e_fbit_lsr_and_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x04,0x20]
+
+    e_fbit_lsr_ands_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x04,0x20]
+
+    e_fbit_lsr_ands_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x24,0x25]
+
+    e_fbit_lsr_ands_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x55,0x2f]
+
+    e_fbit_lsr_ands_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x75,0x3f]
+
+    e_fbit_lsr_ands r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x2a]
+
+    e_fbit_lsr_ands_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x04,0x20]
+
+    e_fbit_lsr_ands_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x24,0x25]
+
+    e_fbit_lsr_ands_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x55,0x2f]
+
+    e_fbit_lsr_ands_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x75,0x3f]
+
+    e_fbit_lsr_ands_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x14,0x2a]
+
+    e_fbit_lsr_ands_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x04,0x20]
+
+    e_fbit_lsr_ands_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x24,0x25]
+
+    e_fbit_lsr_ands_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x55,0x2f]
+
+    e_fbit_lsr_ands_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x75,0x3f]
+
+    e_fbit_lsr_ands_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x14,0x2a]
+
+    e_fbit_lsr_ands_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x04,0x20]
+
+    e_fbit_lsr_or_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x04,0x40]
+
+    e_fbit_lsr_or_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x24,0x45]
+
+    e_fbit_lsr_or_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x55,0x4f]
+
+    e_fbit_lsr_or_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x75,0x5f]
+
+    e_fbit_lsr_or r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x4a]
+
+    e_fbit_lsr_or_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x04,0x40]
+
+    e_fbit_lsr_or_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x24,0x45]
+
+    e_fbit_lsr_or_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x55,0x4f]
+
+    e_fbit_lsr_or_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x75,0x5f]
+
+    e_fbit_lsr_or_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x14,0x4a]
+
+    e_fbit_lsr_or_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x04,0x40]
+
+    e_fbit_lsr_or_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x24,0x45]
+
+    e_fbit_lsr_or_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x55,0x4f]
+
+    e_fbit_lsr_or_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x75,0x5f]
+
+    e_fbit_lsr_or_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x14,0x4a]
+
+    e_fbit_lsr_or_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x04,0x40]
+
+    e_fbit_lsr_ors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x04,0x40]
+
+    e_fbit_lsr_ors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x24,0x45]
+
+    e_fbit_lsr_ors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x55,0x4f]
+
+    e_fbit_lsr_ors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x75,0x5f]
+
+    e_fbit_lsr_ors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x4a]
+
+    e_fbit_lsr_ors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x04,0x40]
+
+    e_fbit_lsr_ors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x24,0x45]
+
+    e_fbit_lsr_ors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x55,0x4f]
+
+    e_fbit_lsr_ors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x75,0x5f]
+
+    e_fbit_lsr_ors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x14,0x4a]
+
+    e_fbit_lsr_ors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x04,0x40]
+
+    e_fbit_lsr_ors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x24,0x45]
+
+    e_fbit_lsr_ors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x55,0x4f]
+
+    e_fbit_lsr_ors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x75,0x5f]
+
+    e_fbit_lsr_ors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x14,0x4a]
+
+    e_fbit_lsr_ors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x04,0x40]
+
+    e_fbit_lsr_xor_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x04,0x60]
+
+    e_fbit_lsr_xor_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x24,0x65]
+
+    e_fbit_lsr_xor_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x55,0x6f]
+
+    e_fbit_lsr_xor_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x75,0x7f]
+
+    e_fbit_lsr_xor r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x6a]
+
+    e_fbit_lsr_xor_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x04,0x60]
+
+    e_fbit_lsr_xor_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x24,0x65]
+
+    e_fbit_lsr_xor_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x55,0x6f]
+
+    e_fbit_lsr_xor_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x75,0x7f]
+
+    e_fbit_lsr_xor_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x14,0x6a]
+
+    e_fbit_lsr_xor_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x04,0x60]
+
+    e_fbit_lsr_xor_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x24,0x65]
+
+    e_fbit_lsr_xor_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x55,0x6f]
+
+    e_fbit_lsr_xor_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x75,0x7f]
+
+    e_fbit_lsr_xor_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x14,0x6a]
+
+    e_fbit_lsr_xor_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x04,0x60]
+
+    e_fbit_lsr_xors_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x04,0x60]
+
+    e_fbit_lsr_xors_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x24,0x65]
+
+    e_fbit_lsr_xors_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x55,0x6f]
+
+    e_fbit_lsr_xors_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x75,0x7f]
+
+    e_fbit_lsr_xors r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x6a]
+
+    e_fbit_lsr_xors_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x04,0x60]
+
+    e_fbit_lsr_xors_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x24,0x65]
+
+    e_fbit_lsr_xors_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x55,0x6f]
+
+    e_fbit_lsr_xors_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x75,0x7f]
+
+    e_fbit_lsr_xors_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x14,0x6a]
+
+    e_fbit_lsr_xors_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x04,0x60]
+
+    e_fbit_lsr_xors_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x24,0x65]
+
+    e_fbit_lsr_xors_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x55,0x6f]
+
+    e_fbit_lsr_xors_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x75,0x7f]
+
+    e_fbit_lsr_xors_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x14,0x6a]
+
+    e_fbit_lsr_xors_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x04,0x60]
+
+    e_fbit_lsr_add_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x04,0x80]
+
+    e_fbit_lsr_add_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x24,0x85]
+
+    e_fbit_lsr_add_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x55,0x8f]
+
+    e_fbit_lsr_add_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x75,0x9f]
+
+    e_fbit_lsr_add r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0x8a]
+
+    e_fbit_lsr_add_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x04,0x80]
+
+    e_fbit_lsr_add_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x24,0x85]
+
+    e_fbit_lsr_add_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x55,0x8f]
+
+    e_fbit_lsr_add_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x75,0x9f]
+
+    e_fbit_lsr_add_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x14,0x8a]
+
+    e_fbit_lsr_add_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x04,0x80]
+
+    e_fbit_lsr_add_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x24,0x85]
+
+    e_fbit_lsr_add_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x55,0x8f]
+
+    e_fbit_lsr_add_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x75,0x9f]
+
+    e_fbit_lsr_add_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x14,0x8a]
+
+    e_fbit_lsr_add_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x04,0x80]
+
+    e_fbit_lsr_adds_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x04,0x80]
+
+    e_fbit_lsr_adds_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x24,0x85]
+
+    e_fbit_lsr_adds_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x55,0x8f]
+
+    e_fbit_lsr_adds_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x75,0x9f]
+
+    e_fbit_lsr_adds r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0x8a]
+
+    e_fbit_lsr_adds_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x04,0x80]
+
+    e_fbit_lsr_adds_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x24,0x85]
+
+    e_fbit_lsr_adds_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x55,0x8f]
+
+    e_fbit_lsr_adds_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x75,0x9f]
+
+    e_fbit_lsr_adds_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x14,0x8a]
+
+    e_fbit_lsr_adds_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x04,0x80]
+
+    e_fbit_lsr_adds_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x24,0x85]
+
+    e_fbit_lsr_adds_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x55,0x8f]
+
+    e_fbit_lsr_adds_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x75,0x9f]
+
+    e_fbit_lsr_adds_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x14,0x8a]
+
+    e_fbit_lsr_adds_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x04,0x80]
+
+    e_fbit_lsr_sub_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x04,0xa0]
+
+    e_fbit_lsr_sub_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x24,0xa5]
+
+    e_fbit_lsr_sub_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x55,0xaf]
+
+    e_fbit_lsr_sub_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x75,0xbf]
+
+    e_fbit_lsr_sub r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xaa]
+
+    e_fbit_lsr_sub_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x04,0xa0]
+
+    e_fbit_lsr_sub_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x24,0xa5]
+
+    e_fbit_lsr_sub_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x55,0xaf]
+
+    e_fbit_lsr_sub_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x75,0xbf]
+
+    e_fbit_lsr_sub_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x14,0xaa]
+
+    e_fbit_lsr_sub_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x04,0xa0]
+
+    e_fbit_lsr_sub_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x24,0xa5]
+
+    e_fbit_lsr_sub_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x55,0xaf]
+
+    e_fbit_lsr_sub_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x75,0xbf]
+
+    e_fbit_lsr_sub_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x14,0xaa]
+
+    e_fbit_lsr_sub_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x04,0xa0]
+
+    e_fbit_lsr_subs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x04,0xa0]
+
+    e_fbit_lsr_subs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x24,0xa5]
+
+    e_fbit_lsr_subs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x55,0xaf]
+
+    e_fbit_lsr_subs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x75,0xbf]
+
+    e_fbit_lsr_subs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xaa]
+
+    e_fbit_lsr_subs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x04,0xa0]
+
+    e_fbit_lsr_subs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x24,0xa5]
+
+    e_fbit_lsr_subs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x55,0xaf]
+
+    e_fbit_lsr_subs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x75,0xbf]
+
+    e_fbit_lsr_subs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x14,0xaa]
+
+    e_fbit_lsr_subs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x04,0xa0]
+
+    e_fbit_lsr_subs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x24,0xa5]
+
+    e_fbit_lsr_subs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x55,0xaf]
+
+    e_fbit_lsr_subs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x75,0xbf]
+
+    e_fbit_lsr_subs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x14,0xaa]
+
+    e_fbit_lsr_subs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x04,0xa0]
+
+    e_fbit_lsr_adc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x04,0xc0]
+
+    e_fbit_lsr_adc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x24,0xc5]
+
+    e_fbit_lsr_adc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x55,0xcf]
+
+    e_fbit_lsr_adc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x75,0xdf]
+
+    e_fbit_lsr_adc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xca]
+
+    e_fbit_lsr_adc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x04,0xc0]
+
+    e_fbit_lsr_adc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x24,0xc5]
+
+    e_fbit_lsr_adc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x55,0xcf]
+
+    e_fbit_lsr_adc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x75,0xdf]
+
+    e_fbit_lsr_adc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x14,0xca]
+
+    e_fbit_lsr_adc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x04,0xc0]
+
+    e_fbit_lsr_adc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x24,0xc5]
+
+    e_fbit_lsr_adc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x55,0xcf]
+
+    e_fbit_lsr_adc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x75,0xdf]
+
+    e_fbit_lsr_adc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x14,0xca]
+
+    e_fbit_lsr_adc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x04,0xc0]
+
+    e_fbit_lsr_adcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x04,0xc0]
+
+    e_fbit_lsr_adcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x24,0xc5]
+
+    e_fbit_lsr_adcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x55,0xcf]
+
+    e_fbit_lsr_adcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x75,0xdf]
+
+    e_fbit_lsr_adcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xca]
+
+    e_fbit_lsr_adcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x04,0xc0]
+
+    e_fbit_lsr_adcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x24,0xc5]
+
+    e_fbit_lsr_adcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x55,0xcf]
+
+    e_fbit_lsr_adcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x75,0xdf]
+
+    e_fbit_lsr_adcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x14,0xca]
+
+    e_fbit_lsr_adcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x04,0xc0]
+
+    e_fbit_lsr_adcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x24,0xc5]
+
+    e_fbit_lsr_adcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x55,0xcf]
+
+    e_fbit_lsr_adcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x75,0xdf]
+
+    e_fbit_lsr_adcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x14,0xca]
+
+    e_fbit_lsr_adcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x04,0xc0]
+
+    e_fbit_lsr_sbc_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x00,0x04,0xe0]
+
+    e_fbit_lsr_sbc_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x88,0x24,0xe5]
+
+    e_fbit_lsr_sbc_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x54,0x55,0xef]
+
+    e_fbit_lsr_sbc_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xdc,0x75,0xff]
+
+    e_fbit_lsr_sbc r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x44,0x14,0xea]
+
+    e_fbit_lsr_sbc_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x00,0x04,0xe0]
+
+    e_fbit_lsr_sbc_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x88,0x24,0xe5]
+
+    e_fbit_lsr_sbc_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x54,0x55,0xef]
+
+    e_fbit_lsr_sbc_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdd,0x75,0xff]
+
+    e_fbit_lsr_sbc_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x45,0x14,0xea]
+
+    e_fbit_lsr_sbc_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x01,0x04,0xe0]
+
+    e_fbit_lsr_sbc_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x89,0x24,0xe5]
+
+    e_fbit_lsr_sbc_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x55,0x55,0xef]
+
+    e_fbit_lsr_sbc_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdd,0x75,0xff]
+
+    e_fbit_lsr_sbc_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x45,0x14,0xea]
+
+    e_fbit_lsr_sbc_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x01,0x04,0xe0]
+
+    e_fbit_lsr_sbcs_ze r0, r0, r0, 0x0
+# CHECK: encoding: [0x31,0x02,0x04,0xe0]
+
+    e_fbit_lsr_sbcs_nz r2, r2, r2, 0x5
+# CHECK: encoding: [0x51,0x8a,0x24,0xe5]
+
+    e_fbit_lsr_sbcs_po r5, r5, r5, 0xf
+# CHECK: encoding: [0x71,0x56,0x55,0xef]
+
+    e_fbit_lsr_sbcs_ne r7, r7, r7, 0x1f
+# CHECK: encoding: [0x91,0xde,0x75,0xff]
+
+    e_fbit_lsr_sbcs r1, r1, r1, 0xa
+# CHECK: encoding: [0x11,0x46,0x14,0xea]
+
+    e_fbit_lsr_sbcs_az r0, r0, r0, 0x0
+# CHECK: encoding: [0xb1,0x02,0x04,0xe0]
+
+    e_fbit_lsr_sbcs_zb r2, r2, r2, 0x5
+# CHECK: encoding: [0xd1,0x8a,0x24,0xe5]
+
+    e_fbit_lsr_sbcs_ca r5, r5, r5, 0xf
+# CHECK: encoding: [0xf1,0x56,0x55,0xef]
+
+    e_fbit_lsr_sbcs_nc r7, r7, r7, 0x1f
+# CHECK: encoding: [0x11,0xdf,0x75,0xff]
+
+    e_fbit_lsr_sbcs_cz r1, r1, r1, 0xa
+# CHECK: encoding: [0x31,0x47,0x14,0xea]
+
+    e_fbit_lsr_sbcs_spo r0, r0, r0, 0x0
+# CHECK: encoding: [0x51,0x03,0x04,0xe0]
+
+    e_fbit_lsr_sbcs_sne r2, r2, r2, 0x5
+# CHECK: encoding: [0x71,0x8b,0x24,0xe5]
+
+    e_fbit_lsr_sbcs_nbs r5, r5, r5, 0xf
+# CHECK: encoding: [0x91,0x57,0x55,0xef]
+
+    e_fbit_lsr_sbcs_nex r7, r7, r7, 0x1f
+# CHECK: encoding: [0xb1,0xdf,0x75,0xff]
+
+    e_fbit_lsr_sbcs_bs r1, r1, r1, 0xa
+# CHECK: encoding: [0xd1,0x47,0x14,0xea]
+
+    e_fbit_lsr_sbcs_ex r0, r0, r0, 0x0
+# CHECK: encoding: [0xf1,0x03,0x04,0xe0]
+
+    e_andor r0, r0, r0, r0
+# CHECK: encoding: [0x16,0x00,0x00,0x00]
+
+    e_andor r2, r2, r2, r2
+# CHECK: encoding: [0x16,0x88,0x20,0x02]
+
+    e_andor r5, r5, r5, r5
+# CHECK: encoding: [0x16,0x54,0x51,0x05]
+
+    e_andor r7, r7, r7, r7
+# CHECK: encoding: [0x16,0xdc,0x71,0x07]
+
+    e_andor r1, r1, r1, r1
+# CHECK: encoding: [0x16,0x44,0x10,0x01]
+
+    e_andor r0, r0, r0, r0
+# CHECK: encoding: [0x16,0x00,0x00,0x00]
+
+    e_andor r2, r2, r2, r2
+# CHECK: encoding: [0x16,0x88,0x20,0x02]
+
+    e_andor r5, r5, r5, r5
+# CHECK: encoding: [0x16,0x54,0x51,0x05]
+
+    e_andor r7, r7, r7, r7
+# CHECK: encoding: [0x16,0xdc,0x71,0x07]
+
+    e_andor r1, r1, r1, r1
+# CHECK: encoding: [0x16,0x44,0x10,0x01]
+
+    e_andor r0, r0, r0, r0
+# CHECK: encoding: [0x16,0x00,0x00,0x00]
+
+    e_andor r2, r2, r2, r2
+# CHECK: encoding: [0x16,0x88,0x20,0x02]
+
+    e_andor r5, r5, r5, r5
+# CHECK: encoding: [0x16,0x54,0x51,0x05]
+
+    e_andor r7, r7, r7, r7
+# CHECK: encoding: [0x16,0xdc,0x71,0x07]
+
+    e_andor r1, r1, r1, r1
+# CHECK: encoding: [0x16,0x44,0x10,0x01]
+
+    e_andor r0, r0, r0, r0
+# CHECK: encoding: [0x16,0x00,0x00,0x00]
+
+    e_andors r0, r0, r0, r0
+# CHECK: encoding: [0x16,0x02,0x00,0x00]
+
+    e_andors r2, r2, r2, r2
+# CHECK: encoding: [0x16,0x8a,0x20,0x02]
+
+    e_andors r5, r5, r5, r5
+# CHECK: encoding: [0x16,0x56,0x51,0x05]
+
+    e_andors r7, r7, r7, r7
+# CHECK: encoding: [0x16,0xde,0x71,0x07]
+
+    e_andors r1, r1, r1, r1
+# CHECK: encoding: [0x16,0x46,0x10,0x01]
+
+    e_andors r0, r0, r0, r0
+# CHECK: encoding: [0x16,0x02,0x00,0x00]
+
+    e_andors r2, r2, r2, r2
+# CHECK: encoding: [0x16,0x8a,0x20,0x02]
+
+    e_andors r5, r5, r5, r5
+# CHECK: encoding: [0x16,0x56,0x51,0x05]
+
+    e_andors r7, r7, r7, r7
+# CHECK: encoding: [0x16,0xde,0x71,0x07]
+
+    e_andors r1, r1, r1, r1
+# CHECK: encoding: [0x16,0x46,0x10,0x01]
+
+    e_andors r0, r0, r0, r0
+# CHECK: encoding: [0x16,0x02,0x00,0x00]
+
+    e_andors r2, r2, r2, r2
+# CHECK: encoding: [0x16,0x8a,0x20,0x02]
+
+    e_andors r5, r5, r5, r5
+# CHECK: encoding: [0x16,0x56,0x51,0x05]
+
+    e_andors r7, r7, r7, r7
+# CHECK: encoding: [0x16,0xde,0x71,0x07]
+
+    e_andors r1, r1, r1, r1
+# CHECK: encoding: [0x16,0x46,0x10,0x01]
+
+    e_andors r0, r0, r0, r0
+# CHECK: encoding: [0x16,0x02,0x00,0x00]
+
+    e_andor_ze r0, r0, r0, r0
+# CHECK: encoding: [0x36,0x00,0x00,0x00]
+
+    e_andor_nz r2, r2, r2, r2
+# CHECK: encoding: [0x56,0x88,0x20,0x02]
+
+    e_andor_po r5, r5, r5, r5
+# CHECK: encoding: [0x76,0x54,0x51,0x05]
+
+    e_andor_ne r7, r7, r7, r7
+# CHECK: encoding: [0x96,0xdc,0x71,0x07]
+
+    e_andor r1, r1, r1, r1
+# CHECK: encoding: [0x16,0x44,0x10,0x01]
+
+    e_andor_az r0, r0, r0, r0
+# CHECK: encoding: [0xb6,0x00,0x00,0x00]
+
+    e_andor_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd6,0x88,0x20,0x02]
+
+    e_andor_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf6,0x54,0x51,0x05]
+
+    e_andor_nc r7, r7, r7, r7
+# CHECK: encoding: [0x16,0xdd,0x71,0x07]
+
+    e_andor_cz r1, r1, r1, r1
+# CHECK: encoding: [0x36,0x45,0x10,0x01]
+
+    e_andor_spo r0, r0, r0, r0
+# CHECK: encoding: [0x56,0x01,0x00,0x00]
+
+    e_andor_sne r2, r2, r2, r2
+# CHECK: encoding: [0x76,0x89,0x20,0x02]
+
+    e_andor_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x96,0x55,0x51,0x05]
+
+    e_andor_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb6,0xdd,0x71,0x07]
+
+    e_andor_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd6,0x45,0x10,0x01]
+
+    e_andor_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf6,0x01,0x00,0x00]
+
+    e_andors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x36,0x02,0x00,0x00]
+
+    e_andors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x56,0x8a,0x20,0x02]
+
+    e_andors_po r5, r5, r5, r5
+# CHECK: encoding: [0x76,0x56,0x51,0x05]
+
+    e_andors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x96,0xde,0x71,0x07]
+
+    e_andors r1, r1, r1, r1
+# CHECK: encoding: [0x16,0x46,0x10,0x01]
+
+    e_andors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb6,0x02,0x00,0x00]
+
+    e_andors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd6,0x8a,0x20,0x02]
+
+    e_andors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf6,0x56,0x51,0x05]
+
+    e_andors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x16,0xdf,0x71,0x07]
+
+    e_andors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x36,0x47,0x10,0x01]
+
+    e_andors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x56,0x03,0x00,0x00]
+
+    e_andors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x76,0x8b,0x20,0x02]
+
+    e_andors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x96,0x57,0x51,0x05]
+
+    e_andors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb6,0xdf,0x71,0x07]
+
+    e_andors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd6,0x47,0x10,0x01]
+
+    e_andors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf6,0x03,0x00,0x00]
+
+    e_rlsl r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x00]
+
+    e_rlsl r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x20,0x02]
+
+    e_rlsl r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x50,0x05]
+
+    e_rlsl r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x70,0x07]
+
+    e_rlsl r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x10,0x01]
+
+    e_rlsl r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x00]
+
+    e_rlsl r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x20,0x02]
+
+    e_rlsl r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x50,0x05]
+
+    e_rlsl r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x70,0x07]
+
+    e_rlsl r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x10,0x01]
+
+    e_rlsl r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x00]
+
+    e_rlsl r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x20,0x02]
+
+    e_rlsl r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x50,0x05]
+
+    e_rlsl r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x70,0x07]
+
+    e_rlsl r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x10,0x01]
+
+    e_rlsl r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x00]
+
+    e_rlsr r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x00]
+
+    e_rlsr r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x28,0x02]
+
+    e_rlsr r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x58,0x05]
+
+    e_rlsr r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x78,0x07]
+
+    e_rlsr r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x18,0x01]
+
+    e_rlsr r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x00]
+
+    e_rlsr r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x28,0x02]
+
+    e_rlsr r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x58,0x05]
+
+    e_rlsr r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x78,0x07]
+
+    e_rlsr r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x18,0x01]
+
+    e_rlsr r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x00]
+
+    e_rlsr r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x28,0x02]
+
+    e_rlsr r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x58,0x05]
+
+    e_rlsr r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x78,0x07]
+
+    e_rlsr r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x18,0x01]
+
+    e_rlsr r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x00]
+
+    e_rlsls r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x00]
+
+    e_rlsls r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x20,0x02]
+
+    e_rlsls r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x50,0x05]
+
+    e_rlsls r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x70,0x07]
+
+    e_rlsls r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x10,0x01]
+
+    e_rlsls r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x00]
+
+    e_rlsls r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x20,0x02]
+
+    e_rlsls r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x50,0x05]
+
+    e_rlsls r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x70,0x07]
+
+    e_rlsls r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x10,0x01]
+
+    e_rlsls r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x00]
+
+    e_rlsls r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x20,0x02]
+
+    e_rlsls r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x50,0x05]
+
+    e_rlsls r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x70,0x07]
+
+    e_rlsls r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x10,0x01]
+
+    e_rlsls r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x00]
+
+    e_rlsrs r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x00]
+
+    e_rlsrs r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x28,0x02]
+
+    e_rlsrs r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x58,0x05]
+
+    e_rlsrs r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x78,0x07]
+
+    e_rlsrs r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x18,0x01]
+
+    e_rlsrs r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x00]
+
+    e_rlsrs r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x28,0x02]
+
+    e_rlsrs r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x58,0x05]
+
+    e_rlsrs r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x78,0x07]
+
+    e_rlsrs r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x18,0x01]
+
+    e_rlsrs r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x00]
+
+    e_rlsrs r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x28,0x02]
+
+    e_rlsrs r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x58,0x05]
+
+    e_rlsrs r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x78,0x07]
+
+    e_rlsrs r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x18,0x01]
+
+    e_rlsrs r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x00]
+
+    e_rlsl_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x20]
+
+    e_rlsl_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x22]
+
+    e_rlsl_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x25]
+
+    e_rlsl_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x27]
+
+    e_rlsl_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x21]
+
+    e_rlsl_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x20]
+
+    e_rlsl_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x22]
+
+    e_rlsl_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x25]
+
+    e_rlsl_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x27]
+
+    e_rlsl_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x21]
+
+    e_rlsl_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x20]
+
+    e_rlsl_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x22]
+
+    e_rlsl_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x25]
+
+    e_rlsl_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x27]
+
+    e_rlsl_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x21]
+
+    e_rlsl_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x20]
+
+    e_rlsr_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x20]
+
+    e_rlsr_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x22]
+
+    e_rlsr_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x25]
+
+    e_rlsr_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x27]
+
+    e_rlsr_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x21]
+
+    e_rlsr_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x20]
+
+    e_rlsr_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x22]
+
+    e_rlsr_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x25]
+
+    e_rlsr_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x27]
+
+    e_rlsr_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x21]
+
+    e_rlsr_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x20]
+
+    e_rlsr_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x22]
+
+    e_rlsr_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x25]
+
+    e_rlsr_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x27]
+
+    e_rlsr_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x21]
+
+    e_rlsr_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x20]
+
+    e_rlsl_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x20]
+
+    e_rlsl_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x22]
+
+    e_rlsl_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x25]
+
+    e_rlsl_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x27]
+
+    e_rlsl_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x21]
+
+    e_rlsl_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x20]
+
+    e_rlsl_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x22]
+
+    e_rlsl_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x25]
+
+    e_rlsl_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x27]
+
+    e_rlsl_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x21]
+
+    e_rlsl_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x20]
+
+    e_rlsl_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x22]
+
+    e_rlsl_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x25]
+
+    e_rlsl_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x27]
+
+    e_rlsl_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x21]
+
+    e_rlsl_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x20]
+
+    e_rlsr_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x20]
+
+    e_rlsr_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x22]
+
+    e_rlsr_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x25]
+
+    e_rlsr_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x27]
+
+    e_rlsr_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x21]
+
+    e_rlsr_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x20]
+
+    e_rlsr_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x22]
+
+    e_rlsr_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x25]
+
+    e_rlsr_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x27]
+
+    e_rlsr_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x21]
+
+    e_rlsr_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x20]
+
+    e_rlsr_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x22]
+
+    e_rlsr_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x25]
+
+    e_rlsr_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x27]
+
+    e_rlsr_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x21]
+
+    e_rlsr_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x20]
+
+    e_rlsl_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x40]
+
+    e_rlsl_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x42]
+
+    e_rlsl_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x45]
+
+    e_rlsl_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x47]
+
+    e_rlsl_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x41]
+
+    e_rlsl_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x40]
+
+    e_rlsl_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x42]
+
+    e_rlsl_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x45]
+
+    e_rlsl_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x47]
+
+    e_rlsl_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x41]
+
+    e_rlsl_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x40]
+
+    e_rlsl_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x42]
+
+    e_rlsl_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x45]
+
+    e_rlsl_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x47]
+
+    e_rlsl_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x41]
+
+    e_rlsl_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x40]
+
+    e_rlsr_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x40]
+
+    e_rlsr_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x42]
+
+    e_rlsr_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x45]
+
+    e_rlsr_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x47]
+
+    e_rlsr_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x41]
+
+    e_rlsr_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x40]
+
+    e_rlsr_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x42]
+
+    e_rlsr_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x45]
+
+    e_rlsr_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x47]
+
+    e_rlsr_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x41]
+
+    e_rlsr_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x40]
+
+    e_rlsr_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x42]
+
+    e_rlsr_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x45]
+
+    e_rlsr_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x47]
+
+    e_rlsr_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x41]
+
+    e_rlsr_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x40]
+
+    e_rlsl_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x40]
+
+    e_rlsl_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x42]
+
+    e_rlsl_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x45]
+
+    e_rlsl_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x47]
+
+    e_rlsl_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x41]
+
+    e_rlsl_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x40]
+
+    e_rlsl_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x42]
+
+    e_rlsl_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x45]
+
+    e_rlsl_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x47]
+
+    e_rlsl_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x41]
+
+    e_rlsl_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x40]
+
+    e_rlsl_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x42]
+
+    e_rlsl_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x45]
+
+    e_rlsl_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x47]
+
+    e_rlsl_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x41]
+
+    e_rlsl_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x40]
+
+    e_rlsr_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x40]
+
+    e_rlsr_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x42]
+
+    e_rlsr_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x45]
+
+    e_rlsr_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x47]
+
+    e_rlsr_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x41]
+
+    e_rlsr_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x40]
+
+    e_rlsr_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x42]
+
+    e_rlsr_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x45]
+
+    e_rlsr_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x47]
+
+    e_rlsr_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x41]
+
+    e_rlsr_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x40]
+
+    e_rlsr_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x42]
+
+    e_rlsr_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x45]
+
+    e_rlsr_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x47]
+
+    e_rlsr_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x41]
+
+    e_rlsr_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x40]
+
+    e_rlsl_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x60]
+
+    e_rlsl_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x62]
+
+    e_rlsl_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x65]
+
+    e_rlsl_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x67]
+
+    e_rlsl_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x61]
+
+    e_rlsl_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x60]
+
+    e_rlsl_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x62]
+
+    e_rlsl_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x65]
+
+    e_rlsl_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x67]
+
+    e_rlsl_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x61]
+
+    e_rlsl_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x60]
+
+    e_rlsl_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x62]
+
+    e_rlsl_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x65]
+
+    e_rlsl_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x67]
+
+    e_rlsl_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x61]
+
+    e_rlsl_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x60]
+
+    e_rlsr_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x60]
+
+    e_rlsr_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x62]
+
+    e_rlsr_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x65]
+
+    e_rlsr_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x67]
+
+    e_rlsr_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x61]
+
+    e_rlsr_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x60]
+
+    e_rlsr_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x62]
+
+    e_rlsr_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x65]
+
+    e_rlsr_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x67]
+
+    e_rlsr_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x61]
+
+    e_rlsr_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x60]
+
+    e_rlsr_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x62]
+
+    e_rlsr_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x65]
+
+    e_rlsr_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x67]
+
+    e_rlsr_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x61]
+
+    e_rlsr_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x60]
+
+    e_rlsl_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x60]
+
+    e_rlsl_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x62]
+
+    e_rlsl_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x65]
+
+    e_rlsl_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x67]
+
+    e_rlsl_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x61]
+
+    e_rlsl_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x60]
+
+    e_rlsl_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x62]
+
+    e_rlsl_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x65]
+
+    e_rlsl_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x67]
+
+    e_rlsl_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x61]
+
+    e_rlsl_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x60]
+
+    e_rlsl_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x62]
+
+    e_rlsl_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x65]
+
+    e_rlsl_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x67]
+
+    e_rlsl_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x61]
+
+    e_rlsl_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x60]
+
+    e_rlsr_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x60]
+
+    e_rlsr_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x62]
+
+    e_rlsr_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x65]
+
+    e_rlsr_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x67]
+
+    e_rlsr_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x61]
+
+    e_rlsr_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x60]
+
+    e_rlsr_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x62]
+
+    e_rlsr_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x65]
+
+    e_rlsr_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x67]
+
+    e_rlsr_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x61]
+
+    e_rlsr_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x60]
+
+    e_rlsr_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x62]
+
+    e_rlsr_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x65]
+
+    e_rlsr_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x67]
+
+    e_rlsr_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x61]
+
+    e_rlsr_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x60]
+
+    e_rlsl_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x80]
+
+    e_rlsl_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x82]
+
+    e_rlsl_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x85]
+
+    e_rlsl_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x87]
+
+    e_rlsl_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x81]
+
+    e_rlsl_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x80]
+
+    e_rlsl_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x82]
+
+    e_rlsl_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x85]
+
+    e_rlsl_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x87]
+
+    e_rlsl_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x81]
+
+    e_rlsl_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x80]
+
+    e_rlsl_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x82]
+
+    e_rlsl_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x85]
+
+    e_rlsl_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x87]
+
+    e_rlsl_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x81]
+
+    e_rlsl_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x80]
+
+    e_rlsr_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x80]
+
+    e_rlsr_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x82]
+
+    e_rlsr_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x85]
+
+    e_rlsr_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x87]
+
+    e_rlsr_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x81]
+
+    e_rlsr_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x80]
+
+    e_rlsr_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x82]
+
+    e_rlsr_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x85]
+
+    e_rlsr_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x87]
+
+    e_rlsr_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x81]
+
+    e_rlsr_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x80]
+
+    e_rlsr_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x82]
+
+    e_rlsr_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x85]
+
+    e_rlsr_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x87]
+
+    e_rlsr_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x81]
+
+    e_rlsr_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x80]
+
+    e_rlsl_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x80]
+
+    e_rlsl_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x82]
+
+    e_rlsl_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x85]
+
+    e_rlsl_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x87]
+
+    e_rlsl_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x81]
+
+    e_rlsl_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x80]
+
+    e_rlsl_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x82]
+
+    e_rlsl_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x85]
+
+    e_rlsl_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x87]
+
+    e_rlsl_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x81]
+
+    e_rlsl_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x80]
+
+    e_rlsl_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x82]
+
+    e_rlsl_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x85]
+
+    e_rlsl_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x87]
+
+    e_rlsl_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x81]
+
+    e_rlsl_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x80]
+
+    e_rlsr_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x80]
+
+    e_rlsr_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x82]
+
+    e_rlsr_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x85]
+
+    e_rlsr_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x87]
+
+    e_rlsr_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x81]
+
+    e_rlsr_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x80]
+
+    e_rlsr_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x82]
+
+    e_rlsr_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x85]
+
+    e_rlsr_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x87]
+
+    e_rlsr_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x81]
+
+    e_rlsr_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x80]
+
+    e_rlsr_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x82]
+
+    e_rlsr_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x85]
+
+    e_rlsr_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x87]
+
+    e_rlsr_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x81]
+
+    e_rlsr_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x80]
+
+    e_rlsl_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xa0]
+
+    e_rlsl_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xa2]
+
+    e_rlsl_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xa5]
+
+    e_rlsl_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xa7]
+
+    e_rlsl_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xa1]
+
+    e_rlsl_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xa0]
+
+    e_rlsl_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xa2]
+
+    e_rlsl_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xa5]
+
+    e_rlsl_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xa7]
+
+    e_rlsl_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xa1]
+
+    e_rlsl_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xa0]
+
+    e_rlsl_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xa2]
+
+    e_rlsl_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xa5]
+
+    e_rlsl_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xa7]
+
+    e_rlsl_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xa1]
+
+    e_rlsl_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xa0]
+
+    e_rlsr_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xa0]
+
+    e_rlsr_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xa2]
+
+    e_rlsr_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xa5]
+
+    e_rlsr_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xa7]
+
+    e_rlsr_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xa1]
+
+    e_rlsr_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xa0]
+
+    e_rlsr_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xa2]
+
+    e_rlsr_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xa5]
+
+    e_rlsr_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xa7]
+
+    e_rlsr_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xa1]
+
+    e_rlsr_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xa0]
+
+    e_rlsr_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xa2]
+
+    e_rlsr_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xa5]
+
+    e_rlsr_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xa7]
+
+    e_rlsr_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xa1]
+
+    e_rlsr_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xa0]
+
+    e_rlsl_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xa0]
+
+    e_rlsl_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xa2]
+
+    e_rlsl_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xa5]
+
+    e_rlsl_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xa7]
+
+    e_rlsl_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xa1]
+
+    e_rlsl_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xa0]
+
+    e_rlsl_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xa2]
+
+    e_rlsl_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xa5]
+
+    e_rlsl_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xa7]
+
+    e_rlsl_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xa1]
+
+    e_rlsl_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xa0]
+
+    e_rlsl_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xa2]
+
+    e_rlsl_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xa5]
+
+    e_rlsl_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xa7]
+
+    e_rlsl_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xa1]
+
+    e_rlsl_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xa0]
+
+    e_rlsr_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xa0]
+
+    e_rlsr_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xa2]
+
+    e_rlsr_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xa5]
+
+    e_rlsr_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xa7]
+
+    e_rlsr_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xa1]
+
+    e_rlsr_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xa0]
+
+    e_rlsr_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xa2]
+
+    e_rlsr_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xa5]
+
+    e_rlsr_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xa7]
+
+    e_rlsr_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xa1]
+
+    e_rlsr_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xa0]
+
+    e_rlsr_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xa2]
+
+    e_rlsr_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xa5]
+
+    e_rlsr_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xa7]
+
+    e_rlsr_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xa1]
+
+    e_rlsr_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xa0]
+
+    e_rlsl_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xc0]
+
+    e_rlsl_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xc2]
+
+    e_rlsl_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xc5]
+
+    e_rlsl_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xc7]
+
+    e_rlsl_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xc1]
+
+    e_rlsl_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xc0]
+
+    e_rlsl_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xc2]
+
+    e_rlsl_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xc5]
+
+    e_rlsl_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xc7]
+
+    e_rlsl_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xc1]
+
+    e_rlsl_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xc0]
+
+    e_rlsl_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xc2]
+
+    e_rlsl_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xc5]
+
+    e_rlsl_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xc7]
+
+    e_rlsl_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xc1]
+
+    e_rlsl_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xc0]
+
+    e_rlsr_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xc0]
+
+    e_rlsr_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xc2]
+
+    e_rlsr_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xc5]
+
+    e_rlsr_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xc7]
+
+    e_rlsr_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xc1]
+
+    e_rlsr_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xc0]
+
+    e_rlsr_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xc2]
+
+    e_rlsr_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xc5]
+
+    e_rlsr_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xc7]
+
+    e_rlsr_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xc1]
+
+    e_rlsr_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xc0]
+
+    e_rlsr_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xc2]
+
+    e_rlsr_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xc5]
+
+    e_rlsr_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xc7]
+
+    e_rlsr_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xc1]
+
+    e_rlsr_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xc0]
+
+    e_rlsl_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xc0]
+
+    e_rlsl_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xc2]
+
+    e_rlsl_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xc5]
+
+    e_rlsl_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xc7]
+
+    e_rlsl_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xc1]
+
+    e_rlsl_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xc0]
+
+    e_rlsl_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xc2]
+
+    e_rlsl_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xc5]
+
+    e_rlsl_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xc7]
+
+    e_rlsl_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xc1]
+
+    e_rlsl_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xc0]
+
+    e_rlsl_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xc2]
+
+    e_rlsl_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xc5]
+
+    e_rlsl_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xc7]
+
+    e_rlsl_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xc1]
+
+    e_rlsl_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xc0]
+
+    e_rlsr_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xc0]
+
+    e_rlsr_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xc2]
+
+    e_rlsr_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xc5]
+
+    e_rlsr_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xc7]
+
+    e_rlsr_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xc1]
+
+    e_rlsr_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xc0]
+
+    e_rlsr_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xc2]
+
+    e_rlsr_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xc5]
+
+    e_rlsr_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xc7]
+
+    e_rlsr_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xc1]
+
+    e_rlsr_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xc0]
+
+    e_rlsr_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xc2]
+
+    e_rlsr_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xc5]
+
+    e_rlsr_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xc7]
+
+    e_rlsr_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xc1]
+
+    e_rlsr_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xc0]
+
+    e_rlsl_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xe0]
+
+    e_rlsl_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xe2]
+
+    e_rlsl_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xe5]
+
+    e_rlsl_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xe7]
+
+    e_rlsl_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xe1]
+
+    e_rlsl_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xe0]
+
+    e_rlsl_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xe2]
+
+    e_rlsl_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xe5]
+
+    e_rlsl_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xe7]
+
+    e_rlsl_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xe1]
+
+    e_rlsl_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xe0]
+
+    e_rlsl_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xe2]
+
+    e_rlsl_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xe5]
+
+    e_rlsl_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xe7]
+
+    e_rlsl_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xe1]
+
+    e_rlsl_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xe0]
+
+    e_rlsr_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xe0]
+
+    e_rlsr_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xe2]
+
+    e_rlsr_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xe5]
+
+    e_rlsr_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xe7]
+
+    e_rlsr_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xe1]
+
+    e_rlsr_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xe0]
+
+    e_rlsr_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xe2]
+
+    e_rlsr_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xe5]
+
+    e_rlsr_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xe7]
+
+    e_rlsr_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xe1]
+
+    e_rlsr_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xe0]
+
+    e_rlsr_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xe2]
+
+    e_rlsr_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xe5]
+
+    e_rlsr_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xe7]
+
+    e_rlsr_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xe1]
+
+    e_rlsr_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xe0]
+
+    e_rlsl_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xe0]
+
+    e_rlsl_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xe2]
+
+    e_rlsl_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xe5]
+
+    e_rlsl_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xe7]
+
+    e_rlsl_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xe1]
+
+    e_rlsl_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xe0]
+
+    e_rlsl_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xe2]
+
+    e_rlsl_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xe5]
+
+    e_rlsl_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xe7]
+
+    e_rlsl_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xe1]
+
+    e_rlsl_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xe0]
+
+    e_rlsl_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xe2]
+
+    e_rlsl_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xe5]
+
+    e_rlsl_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xe7]
+
+    e_rlsl_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xe1]
+
+    e_rlsl_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xe0]
+
+    e_rlsr_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xe0]
+
+    e_rlsr_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xe2]
+
+    e_rlsr_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xe5]
+
+    e_rlsr_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xe7]
+
+    e_rlsr_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xe1]
+
+    e_rlsr_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xe0]
+
+    e_rlsr_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xe2]
+
+    e_rlsr_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xe5]
+
+    e_rlsr_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xe7]
+
+    e_rlsr_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xe1]
+
+    e_rlsr_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xe0]
+
+    e_rlsr_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xe2]
+
+    e_rlsr_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xe5]
+
+    e_rlsr_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xe7]
+
+    e_rlsr_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xe1]
+
+    e_rlsr_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xe0]
+
+    e_rlsl_ze r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x00]
+
+    e_rlsl_nz r2, r2, r2
+# CHECK: encoding: [0x59,0x08,0x20,0x02]
+
+    e_rlsl_po r5, r5, r5
+# CHECK: encoding: [0x79,0x14,0x50,0x05]
+
+    e_rlsl_ne r7, r7, r7
+# CHECK: encoding: [0x99,0x1c,0x70,0x07]
+
+    e_rlsl r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x10,0x01]
+
+    e_rlsl_az r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x00]
+
+    e_rlsl_zb r2, r2, r2
+# CHECK: encoding: [0xd9,0x08,0x20,0x02]
+
+    e_rlsl_ca r5, r5, r5
+# CHECK: encoding: [0xf9,0x14,0x50,0x05]
+
+    e_rlsl_nc r7, r7, r7
+# CHECK: encoding: [0x19,0x1d,0x70,0x07]
+
+    e_rlsl_cz r1, r1, r1
+# CHECK: encoding: [0x39,0x05,0x10,0x01]
+
+    e_rlsl_spo r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x00]
+
+    e_rlsl_sne r2, r2, r2
+# CHECK: encoding: [0x79,0x09,0x20,0x02]
+
+    e_rlsl_nbs r5, r5, r5
+# CHECK: encoding: [0x99,0x15,0x50,0x05]
+
+    e_rlsl_nex r7, r7, r7
+# CHECK: encoding: [0xb9,0x1d,0x70,0x07]
+
+    e_rlsl_bs r1, r1, r1
+# CHECK: encoding: [0xd9,0x05,0x10,0x01]
+
+    e_rlsl_ex r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x00]
+
+    e_rlsr_ze r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x00]
+
+    e_rlsr_nz r2, r2, r2
+# CHECK: encoding: [0x59,0x08,0x28,0x02]
+
+    e_rlsr_po r5, r5, r5
+# CHECK: encoding: [0x79,0x14,0x58,0x05]
+
+    e_rlsr_ne r7, r7, r7
+# CHECK: encoding: [0x99,0x1c,0x78,0x07]
+
+    e_rlsr r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x18,0x01]
+
+    e_rlsr_az r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x00]
+
+    e_rlsr_zb r2, r2, r2
+# CHECK: encoding: [0xd9,0x08,0x28,0x02]
+
+    e_rlsr_ca r5, r5, r5
+# CHECK: encoding: [0xf9,0x14,0x58,0x05]
+
+    e_rlsr_nc r7, r7, r7
+# CHECK: encoding: [0x19,0x1d,0x78,0x07]
+
+    e_rlsr_cz r1, r1, r1
+# CHECK: encoding: [0x39,0x05,0x18,0x01]
+
+    e_rlsr_spo r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x00]
+
+    e_rlsr_sne r2, r2, r2
+# CHECK: encoding: [0x79,0x09,0x28,0x02]
+
+    e_rlsr_nbs r5, r5, r5
+# CHECK: encoding: [0x99,0x15,0x58,0x05]
+
+    e_rlsr_nex r7, r7, r7
+# CHECK: encoding: [0xb9,0x1d,0x78,0x07]
+
+    e_rlsr_bs r1, r1, r1
+# CHECK: encoding: [0xd9,0x05,0x18,0x01]
+
+    e_rlsr_ex r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x00]
+
+    e_rlsls_ze r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x00]
+
+    e_rlsls_nz r2, r2, r2
+# CHECK: encoding: [0x59,0x0a,0x20,0x02]
+
+    e_rlsls_po r5, r5, r5
+# CHECK: encoding: [0x79,0x16,0x50,0x05]
+
+    e_rlsls_ne r7, r7, r7
+# CHECK: encoding: [0x99,0x1e,0x70,0x07]
+
+    e_rlsls r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x10,0x01]
+
+    e_rlsls_az r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x00]
+
+    e_rlsls_zb r2, r2, r2
+# CHECK: encoding: [0xd9,0x0a,0x20,0x02]
+
+    e_rlsls_ca r5, r5, r5
+# CHECK: encoding: [0xf9,0x16,0x50,0x05]
+
+    e_rlsls_nc r7, r7, r7
+# CHECK: encoding: [0x19,0x1f,0x70,0x07]
+
+    e_rlsls_cz r1, r1, r1
+# CHECK: encoding: [0x39,0x07,0x10,0x01]
+
+    e_rlsls_spo r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x00]
+
+    e_rlsls_sne r2, r2, r2
+# CHECK: encoding: [0x79,0x0b,0x20,0x02]
+
+    e_rlsls_nbs r5, r5, r5
+# CHECK: encoding: [0x99,0x17,0x50,0x05]
+
+    e_rlsls_nex r7, r7, r7
+# CHECK: encoding: [0xb9,0x1f,0x70,0x07]
+
+    e_rlsls_bs r1, r1, r1
+# CHECK: encoding: [0xd9,0x07,0x10,0x01]
+
+    e_rlsls_ex r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x00]
+
+    e_rlsrs_ze r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x00]
+
+    e_rlsrs_nz r2, r2, r2
+# CHECK: encoding: [0x59,0x0a,0x28,0x02]
+
+    e_rlsrs_po r5, r5, r5
+# CHECK: encoding: [0x79,0x16,0x58,0x05]
+
+    e_rlsrs_ne r7, r7, r7
+# CHECK: encoding: [0x99,0x1e,0x78,0x07]
+
+    e_rlsrs r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x18,0x01]
+
+    e_rlsrs_az r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x00]
+
+    e_rlsrs_zb r2, r2, r2
+# CHECK: encoding: [0xd9,0x0a,0x28,0x02]
+
+    e_rlsrs_ca r5, r5, r5
+# CHECK: encoding: [0xf9,0x16,0x58,0x05]
+
+    e_rlsrs_nc r7, r7, r7
+# CHECK: encoding: [0x19,0x1f,0x78,0x07]
+
+    e_rlsrs_cz r1, r1, r1
+# CHECK: encoding: [0x39,0x07,0x18,0x01]
+
+    e_rlsrs_spo r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x00]
+
+    e_rlsrs_sne r2, r2, r2
+# CHECK: encoding: [0x79,0x0b,0x28,0x02]
+
+    e_rlsrs_nbs r5, r5, r5
+# CHECK: encoding: [0x99,0x17,0x58,0x05]
+
+    e_rlsrs_nex r7, r7, r7
+# CHECK: encoding: [0xb9,0x1f,0x78,0x07]
+
+    e_rlsrs_bs r1, r1, r1
+# CHECK: encoding: [0xd9,0x07,0x18,0x01]
+
+    e_rlsrs_ex r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x00]
+
+    e_rlsl_and_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x20]
+
+    e_rlsl_and_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0x22]
+
+    e_rlsl_and_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0x25]
+
+    e_rlsl_and_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0x27]
+
+    e_rlsl_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x21]
+
+    e_rlsl_and_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x20]
+
+    e_rlsl_and_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0x22]
+
+    e_rlsl_and_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0x25]
+
+    e_rlsl_and_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0x27]
+
+    e_rlsl_and_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0x21]
+
+    e_rlsl_and_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x20]
+
+    e_rlsl_and_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0x22]
+
+    e_rlsl_and_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0x25]
+
+    e_rlsl_and_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0x27]
+
+    e_rlsl_and_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0x21]
+
+    e_rlsl_and_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x20]
+
+    e_rlsr_and_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x20]
+
+    e_rlsr_and_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0x22]
+
+    e_rlsr_and_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0x25]
+
+    e_rlsr_and_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0x27]
+
+    e_rlsr_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x21]
+
+    e_rlsr_and_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x20]
+
+    e_rlsr_and_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0x22]
+
+    e_rlsr_and_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0x25]
+
+    e_rlsr_and_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0x27]
+
+    e_rlsr_and_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0x21]
+
+    e_rlsr_and_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x20]
+
+    e_rlsr_and_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0x22]
+
+    e_rlsr_and_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0x25]
+
+    e_rlsr_and_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0x27]
+
+    e_rlsr_and_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0x21]
+
+    e_rlsr_and_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x20]
+
+    e_rlsl_ands_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x20]
+
+    e_rlsl_ands_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0x22]
+
+    e_rlsl_ands_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0x25]
+
+    e_rlsl_ands_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0x27]
+
+    e_rlsl_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x21]
+
+    e_rlsl_ands_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x20]
+
+    e_rlsl_ands_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0x22]
+
+    e_rlsl_ands_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0x25]
+
+    e_rlsl_ands_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0x27]
+
+    e_rlsl_ands_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0x21]
+
+    e_rlsl_ands_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x20]
+
+    e_rlsl_ands_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0x22]
+
+    e_rlsl_ands_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0x25]
+
+    e_rlsl_ands_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0x27]
+
+    e_rlsl_ands_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0x21]
+
+    e_rlsl_ands_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x20]
+
+    e_rlsr_ands_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x20]
+
+    e_rlsr_ands_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0x22]
+
+    e_rlsr_ands_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0x25]
+
+    e_rlsr_ands_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0x27]
+
+    e_rlsr_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x21]
+
+    e_rlsr_ands_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x20]
+
+    e_rlsr_ands_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0x22]
+
+    e_rlsr_ands_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0x25]
+
+    e_rlsr_ands_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0x27]
+
+    e_rlsr_ands_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0x21]
+
+    e_rlsr_ands_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x20]
+
+    e_rlsr_ands_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0x22]
+
+    e_rlsr_ands_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0x25]
+
+    e_rlsr_ands_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0x27]
+
+    e_rlsr_ands_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0x21]
+
+    e_rlsr_ands_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x20]
+
+    e_rlsl_or_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x40]
+
+    e_rlsl_or_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0x42]
+
+    e_rlsl_or_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0x45]
+
+    e_rlsl_or_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0x47]
+
+    e_rlsl_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x41]
+
+    e_rlsl_or_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x40]
+
+    e_rlsl_or_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0x42]
+
+    e_rlsl_or_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0x45]
+
+    e_rlsl_or_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0x47]
+
+    e_rlsl_or_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0x41]
+
+    e_rlsl_or_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x40]
+
+    e_rlsl_or_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0x42]
+
+    e_rlsl_or_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0x45]
+
+    e_rlsl_or_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0x47]
+
+    e_rlsl_or_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0x41]
+
+    e_rlsl_or_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x40]
+
+    e_rlsr_or_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x40]
+
+    e_rlsr_or_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0x42]
+
+    e_rlsr_or_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0x45]
+
+    e_rlsr_or_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0x47]
+
+    e_rlsr_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x41]
+
+    e_rlsr_or_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x40]
+
+    e_rlsr_or_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0x42]
+
+    e_rlsr_or_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0x45]
+
+    e_rlsr_or_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0x47]
+
+    e_rlsr_or_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0x41]
+
+    e_rlsr_or_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x40]
+
+    e_rlsr_or_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0x42]
+
+    e_rlsr_or_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0x45]
+
+    e_rlsr_or_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0x47]
+
+    e_rlsr_or_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0x41]
+
+    e_rlsr_or_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x40]
+
+    e_rlsl_ors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x40]
+
+    e_rlsl_ors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0x42]
+
+    e_rlsl_ors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0x45]
+
+    e_rlsl_ors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0x47]
+
+    e_rlsl_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x41]
+
+    e_rlsl_ors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x40]
+
+    e_rlsl_ors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0x42]
+
+    e_rlsl_ors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0x45]
+
+    e_rlsl_ors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0x47]
+
+    e_rlsl_ors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0x41]
+
+    e_rlsl_ors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x40]
+
+    e_rlsl_ors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0x42]
+
+    e_rlsl_ors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0x45]
+
+    e_rlsl_ors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0x47]
+
+    e_rlsl_ors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0x41]
+
+    e_rlsl_ors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x40]
+
+    e_rlsr_ors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x40]
+
+    e_rlsr_ors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0x42]
+
+    e_rlsr_ors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0x45]
+
+    e_rlsr_ors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0x47]
+
+    e_rlsr_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x41]
+
+    e_rlsr_ors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x40]
+
+    e_rlsr_ors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0x42]
+
+    e_rlsr_ors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0x45]
+
+    e_rlsr_ors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0x47]
+
+    e_rlsr_ors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0x41]
+
+    e_rlsr_ors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x40]
+
+    e_rlsr_ors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0x42]
+
+    e_rlsr_ors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0x45]
+
+    e_rlsr_ors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0x47]
+
+    e_rlsr_ors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0x41]
+
+    e_rlsr_ors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x40]
+
+    e_rlsl_xor_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x60]
+
+    e_rlsl_xor_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0x62]
+
+    e_rlsl_xor_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0x65]
+
+    e_rlsl_xor_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0x67]
+
+    e_rlsl_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x61]
+
+    e_rlsl_xor_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x60]
+
+    e_rlsl_xor_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0x62]
+
+    e_rlsl_xor_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0x65]
+
+    e_rlsl_xor_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0x67]
+
+    e_rlsl_xor_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0x61]
+
+    e_rlsl_xor_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x60]
+
+    e_rlsl_xor_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0x62]
+
+    e_rlsl_xor_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0x65]
+
+    e_rlsl_xor_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0x67]
+
+    e_rlsl_xor_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0x61]
+
+    e_rlsl_xor_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x60]
+
+    e_rlsr_xor_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x60]
+
+    e_rlsr_xor_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0x62]
+
+    e_rlsr_xor_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0x65]
+
+    e_rlsr_xor_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0x67]
+
+    e_rlsr_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x61]
+
+    e_rlsr_xor_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x60]
+
+    e_rlsr_xor_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0x62]
+
+    e_rlsr_xor_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0x65]
+
+    e_rlsr_xor_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0x67]
+
+    e_rlsr_xor_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0x61]
+
+    e_rlsr_xor_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x60]
+
+    e_rlsr_xor_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0x62]
+
+    e_rlsr_xor_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0x65]
+
+    e_rlsr_xor_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0x67]
+
+    e_rlsr_xor_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0x61]
+
+    e_rlsr_xor_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x60]
+
+    e_rlsl_xors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x60]
+
+    e_rlsl_xors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0x62]
+
+    e_rlsl_xors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0x65]
+
+    e_rlsl_xors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0x67]
+
+    e_rlsl_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x61]
+
+    e_rlsl_xors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x60]
+
+    e_rlsl_xors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0x62]
+
+    e_rlsl_xors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0x65]
+
+    e_rlsl_xors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0x67]
+
+    e_rlsl_xors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0x61]
+
+    e_rlsl_xors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x60]
+
+    e_rlsl_xors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0x62]
+
+    e_rlsl_xors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0x65]
+
+    e_rlsl_xors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0x67]
+
+    e_rlsl_xors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0x61]
+
+    e_rlsl_xors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x60]
+
+    e_rlsr_xors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x60]
+
+    e_rlsr_xors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0x62]
+
+    e_rlsr_xors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0x65]
+
+    e_rlsr_xors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0x67]
+
+    e_rlsr_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x61]
+
+    e_rlsr_xors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x60]
+
+    e_rlsr_xors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0x62]
+
+    e_rlsr_xors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0x65]
+
+    e_rlsr_xors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0x67]
+
+    e_rlsr_xors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0x61]
+
+    e_rlsr_xors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x60]
+
+    e_rlsr_xors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0x62]
+
+    e_rlsr_xors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0x65]
+
+    e_rlsr_xors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0x67]
+
+    e_rlsr_xors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0x61]
+
+    e_rlsr_xors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x60]
+
+    e_rlsl_add_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x80]
+
+    e_rlsl_add_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0x82]
+
+    e_rlsl_add_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0x85]
+
+    e_rlsl_add_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0x87]
+
+    e_rlsl_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x81]
+
+    e_rlsl_add_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x80]
+
+    e_rlsl_add_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0x82]
+
+    e_rlsl_add_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0x85]
+
+    e_rlsl_add_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0x87]
+
+    e_rlsl_add_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0x81]
+
+    e_rlsl_add_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x80]
+
+    e_rlsl_add_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0x82]
+
+    e_rlsl_add_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0x85]
+
+    e_rlsl_add_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0x87]
+
+    e_rlsl_add_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0x81]
+
+    e_rlsl_add_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x80]
+
+    e_rlsr_add_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x80]
+
+    e_rlsr_add_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0x82]
+
+    e_rlsr_add_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0x85]
+
+    e_rlsr_add_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0x87]
+
+    e_rlsr_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x81]
+
+    e_rlsr_add_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x80]
+
+    e_rlsr_add_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0x82]
+
+    e_rlsr_add_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0x85]
+
+    e_rlsr_add_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0x87]
+
+    e_rlsr_add_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0x81]
+
+    e_rlsr_add_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x80]
+
+    e_rlsr_add_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0x82]
+
+    e_rlsr_add_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0x85]
+
+    e_rlsr_add_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0x87]
+
+    e_rlsr_add_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0x81]
+
+    e_rlsr_add_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x80]
+
+    e_rlsl_adds_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x80]
+
+    e_rlsl_adds_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0x82]
+
+    e_rlsl_adds_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0x85]
+
+    e_rlsl_adds_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0x87]
+
+    e_rlsl_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x81]
+
+    e_rlsl_adds_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x80]
+
+    e_rlsl_adds_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0x82]
+
+    e_rlsl_adds_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0x85]
+
+    e_rlsl_adds_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0x87]
+
+    e_rlsl_adds_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0x81]
+
+    e_rlsl_adds_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x80]
+
+    e_rlsl_adds_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0x82]
+
+    e_rlsl_adds_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0x85]
+
+    e_rlsl_adds_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0x87]
+
+    e_rlsl_adds_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0x81]
+
+    e_rlsl_adds_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x80]
+
+    e_rlsr_adds_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x80]
+
+    e_rlsr_adds_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0x82]
+
+    e_rlsr_adds_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0x85]
+
+    e_rlsr_adds_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0x87]
+
+    e_rlsr_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x81]
+
+    e_rlsr_adds_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x80]
+
+    e_rlsr_adds_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0x82]
+
+    e_rlsr_adds_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0x85]
+
+    e_rlsr_adds_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0x87]
+
+    e_rlsr_adds_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0x81]
+
+    e_rlsr_adds_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x80]
+
+    e_rlsr_adds_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0x82]
+
+    e_rlsr_adds_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0x85]
+
+    e_rlsr_adds_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0x87]
+
+    e_rlsr_adds_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0x81]
+
+    e_rlsr_adds_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x80]
+
+    e_rlsl_sub_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0xa0]
+
+    e_rlsl_sub_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0xa2]
+
+    e_rlsl_sub_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0xa5]
+
+    e_rlsl_sub_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0xa7]
+
+    e_rlsl_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xa1]
+
+    e_rlsl_sub_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0xa0]
+
+    e_rlsl_sub_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0xa2]
+
+    e_rlsl_sub_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0xa5]
+
+    e_rlsl_sub_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0xa7]
+
+    e_rlsl_sub_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0xa1]
+
+    e_rlsl_sub_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0xa0]
+
+    e_rlsl_sub_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0xa2]
+
+    e_rlsl_sub_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0xa5]
+
+    e_rlsl_sub_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0xa7]
+
+    e_rlsl_sub_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0xa1]
+
+    e_rlsl_sub_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0xa0]
+
+    e_rlsr_sub_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0xa0]
+
+    e_rlsr_sub_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0xa2]
+
+    e_rlsr_sub_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0xa5]
+
+    e_rlsr_sub_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0xa7]
+
+    e_rlsr_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xa1]
+
+    e_rlsr_sub_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0xa0]
+
+    e_rlsr_sub_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0xa2]
+
+    e_rlsr_sub_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0xa5]
+
+    e_rlsr_sub_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0xa7]
+
+    e_rlsr_sub_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0xa1]
+
+    e_rlsr_sub_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0xa0]
+
+    e_rlsr_sub_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0xa2]
+
+    e_rlsr_sub_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0xa5]
+
+    e_rlsr_sub_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0xa7]
+
+    e_rlsr_sub_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0xa1]
+
+    e_rlsr_sub_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0xa0]
+
+    e_rlsl_subs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0xa0]
+
+    e_rlsl_subs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0xa2]
+
+    e_rlsl_subs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0xa5]
+
+    e_rlsl_subs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0xa7]
+
+    e_rlsl_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xa1]
+
+    e_rlsl_subs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0xa0]
+
+    e_rlsl_subs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0xa2]
+
+    e_rlsl_subs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0xa5]
+
+    e_rlsl_subs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0xa7]
+
+    e_rlsl_subs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0xa1]
+
+    e_rlsl_subs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0xa0]
+
+    e_rlsl_subs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0xa2]
+
+    e_rlsl_subs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0xa5]
+
+    e_rlsl_subs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0xa7]
+
+    e_rlsl_subs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0xa1]
+
+    e_rlsl_subs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0xa0]
+
+    e_rlsr_subs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0xa0]
+
+    e_rlsr_subs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0xa2]
+
+    e_rlsr_subs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0xa5]
+
+    e_rlsr_subs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0xa7]
+
+    e_rlsr_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xa1]
+
+    e_rlsr_subs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0xa0]
+
+    e_rlsr_subs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0xa2]
+
+    e_rlsr_subs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0xa5]
+
+    e_rlsr_subs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0xa7]
+
+    e_rlsr_subs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0xa1]
+
+    e_rlsr_subs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0xa0]
+
+    e_rlsr_subs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0xa2]
+
+    e_rlsr_subs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0xa5]
+
+    e_rlsr_subs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0xa7]
+
+    e_rlsr_subs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0xa1]
+
+    e_rlsr_subs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0xa0]
+
+    e_rlsl_adc_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0xc0]
+
+    e_rlsl_adc_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0xc2]
+
+    e_rlsl_adc_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0xc5]
+
+    e_rlsl_adc_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0xc7]
+
+    e_rlsl_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xc1]
+
+    e_rlsl_adc_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0xc0]
+
+    e_rlsl_adc_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0xc2]
+
+    e_rlsl_adc_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0xc5]
+
+    e_rlsl_adc_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0xc7]
+
+    e_rlsl_adc_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0xc1]
+
+    e_rlsl_adc_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0xc0]
+
+    e_rlsl_adc_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0xc2]
+
+    e_rlsl_adc_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0xc5]
+
+    e_rlsl_adc_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0xc7]
+
+    e_rlsl_adc_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0xc1]
+
+    e_rlsl_adc_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0xc0]
+
+    e_rlsr_adc_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0xc0]
+
+    e_rlsr_adc_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0xc2]
+
+    e_rlsr_adc_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0xc5]
+
+    e_rlsr_adc_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0xc7]
+
+    e_rlsr_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xc1]
+
+    e_rlsr_adc_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0xc0]
+
+    e_rlsr_adc_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0xc2]
+
+    e_rlsr_adc_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0xc5]
+
+    e_rlsr_adc_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0xc7]
+
+    e_rlsr_adc_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0xc1]
+
+    e_rlsr_adc_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0xc0]
+
+    e_rlsr_adc_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0xc2]
+
+    e_rlsr_adc_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0xc5]
+
+    e_rlsr_adc_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0xc7]
+
+    e_rlsr_adc_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0xc1]
+
+    e_rlsr_adc_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0xc0]
+
+    e_rlsl_adcs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0xc0]
+
+    e_rlsl_adcs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0xc2]
+
+    e_rlsl_adcs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0xc5]
+
+    e_rlsl_adcs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0xc7]
+
+    e_rlsl_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xc1]
+
+    e_rlsl_adcs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0xc0]
+
+    e_rlsl_adcs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0xc2]
+
+    e_rlsl_adcs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0xc5]
+
+    e_rlsl_adcs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0xc7]
+
+    e_rlsl_adcs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0xc1]
+
+    e_rlsl_adcs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0xc0]
+
+    e_rlsl_adcs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0xc2]
+
+    e_rlsl_adcs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0xc5]
+
+    e_rlsl_adcs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0xc7]
+
+    e_rlsl_adcs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0xc1]
+
+    e_rlsl_adcs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0xc0]
+
+    e_rlsr_adcs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0xc0]
+
+    e_rlsr_adcs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0xc2]
+
+    e_rlsr_adcs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0xc5]
+
+    e_rlsr_adcs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0xc7]
+
+    e_rlsr_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xc1]
+
+    e_rlsr_adcs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0xc0]
+
+    e_rlsr_adcs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0xc2]
+
+    e_rlsr_adcs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0xc5]
+
+    e_rlsr_adcs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0xc7]
+
+    e_rlsr_adcs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0xc1]
+
+    e_rlsr_adcs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0xc0]
+
+    e_rlsr_adcs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0xc2]
+
+    e_rlsr_adcs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0xc5]
+
+    e_rlsr_adcs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0xc7]
+
+    e_rlsr_adcs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0xc1]
+
+    e_rlsr_adcs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0xc0]
+
+    e_rlsl_sbc_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0xe0]
+
+    e_rlsl_sbc_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0xe2]
+
+    e_rlsl_sbc_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0xe5]
+
+    e_rlsl_sbc_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0xe7]
+
+    e_rlsl_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xe1]
+
+    e_rlsl_sbc_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0xe0]
+
+    e_rlsl_sbc_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0xe2]
+
+    e_rlsl_sbc_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0xe5]
+
+    e_rlsl_sbc_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0xe7]
+
+    e_rlsl_sbc_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0xe1]
+
+    e_rlsl_sbc_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0xe0]
+
+    e_rlsl_sbc_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0xe2]
+
+    e_rlsl_sbc_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0xe5]
+
+    e_rlsl_sbc_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0xe7]
+
+    e_rlsl_sbc_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0xe1]
+
+    e_rlsl_sbc_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0xe0]
+
+    e_rlsr_sbc_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0xe0]
+
+    e_rlsr_sbc_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0xe2]
+
+    e_rlsr_sbc_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0xe5]
+
+    e_rlsr_sbc_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0xe7]
+
+    e_rlsr_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xe1]
+
+    e_rlsr_sbc_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0xe0]
+
+    e_rlsr_sbc_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0xe2]
+
+    e_rlsr_sbc_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0xe5]
+
+    e_rlsr_sbc_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0xe7]
+
+    e_rlsr_sbc_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0xe1]
+
+    e_rlsr_sbc_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0xe0]
+
+    e_rlsr_sbc_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0xe2]
+
+    e_rlsr_sbc_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0xe5]
+
+    e_rlsr_sbc_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0xe7]
+
+    e_rlsr_sbc_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0xe1]
+
+    e_rlsr_sbc_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0xe0]
+
+    e_rlsl_sbcs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0xe0]
+
+    e_rlsl_sbcs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0xe2]
+
+    e_rlsl_sbcs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0xe5]
+
+    e_rlsl_sbcs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0xe7]
+
+    e_rlsl_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xe1]
+
+    e_rlsl_sbcs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0xe0]
+
+    e_rlsl_sbcs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0xe2]
+
+    e_rlsl_sbcs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0xe5]
+
+    e_rlsl_sbcs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0xe7]
+
+    e_rlsl_sbcs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0xe1]
+
+    e_rlsl_sbcs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0xe0]
+
+    e_rlsl_sbcs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0xe2]
+
+    e_rlsl_sbcs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0xe5]
+
+    e_rlsl_sbcs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0xe7]
+
+    e_rlsl_sbcs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0xe1]
+
+    e_rlsl_sbcs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0xe0]
+
+    e_rlsr_sbcs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0xe0]
+
+    e_rlsr_sbcs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0xe2]
+
+    e_rlsr_sbcs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0xe5]
+
+    e_rlsr_sbcs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0xe7]
+
+    e_rlsr_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xe1]
+
+    e_rlsr_sbcs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0xe0]
+
+    e_rlsr_sbcs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0xe2]
+
+    e_rlsr_sbcs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0xe5]
+
+    e_rlsr_sbcs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0xe7]
+
+    e_rlsr_sbcs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0xe1]
+
+    e_rlsr_sbcs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0xe0]
+
+    e_rlsr_sbcs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0xe2]
+
+    e_rlsr_sbcs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0xe5]
+
+    e_rlsr_sbcs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0xe7]
+
+    e_rlsr_sbcs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0xe1]
+
+    e_rlsr_sbcs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0xe0]
+
+    e_and_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x30]
+
+    e_and_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x32]
+
+    e_and_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x35]
+
+    e_and_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x37]
+
+    e_and_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x31]
+
+    e_and_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x30]
+
+    e_and_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x32]
+
+    e_and_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x35]
+
+    e_and_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x37]
+
+    e_and_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x31]
+
+    e_and_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x30]
+
+    e_and_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x32]
+
+    e_and_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x35]
+
+    e_and_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x37]
+
+    e_and_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x31]
+
+    e_and_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x30]
+
+    e_and_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x30]
+
+    e_and_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x32]
+
+    e_and_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x35]
+
+    e_and_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x37]
+
+    e_and_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x31]
+
+    e_and_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x30]
+
+    e_and_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x32]
+
+    e_and_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x35]
+
+    e_and_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x37]
+
+    e_and_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x31]
+
+    e_and_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x30]
+
+    e_and_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x32]
+
+    e_and_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x35]
+
+    e_and_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x37]
+
+    e_and_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x31]
+
+    e_and_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x30]
+
+    e_and_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x30]
+
+    e_and_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x32]
+
+    e_and_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x35]
+
+    e_and_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x37]
+
+    e_and_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x31]
+
+    e_and_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x30]
+
+    e_and_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x32]
+
+    e_and_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x35]
+
+    e_and_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x37]
+
+    e_and_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x31]
+
+    e_and_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x30]
+
+    e_and_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x32]
+
+    e_and_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x35]
+
+    e_and_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x37]
+
+    e_and_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x31]
+
+    e_and_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x30]
+
+    e_and_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x30]
+
+    e_and_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x32]
+
+    e_and_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x35]
+
+    e_and_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x37]
+
+    e_and_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x31]
+
+    e_and_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x30]
+
+    e_and_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x32]
+
+    e_and_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x35]
+
+    e_and_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x37]
+
+    e_and_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x31]
+
+    e_and_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x30]
+
+    e_and_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x32]
+
+    e_and_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x35]
+
+    e_and_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x37]
+
+    e_and_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x31]
+
+    e_and_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x30]
+
+    e_or_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x50]
+
+    e_or_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x52]
+
+    e_or_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x55]
+
+    e_or_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x57]
+
+    e_or_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x51]
+
+    e_or_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x50]
+
+    e_or_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x52]
+
+    e_or_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x55]
+
+    e_or_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x57]
+
+    e_or_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x51]
+
+    e_or_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x50]
+
+    e_or_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x52]
+
+    e_or_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x55]
+
+    e_or_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x57]
+
+    e_or_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x51]
+
+    e_or_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x50]
+
+    e_or_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x50]
+
+    e_or_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x52]
+
+    e_or_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x55]
+
+    e_or_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x57]
+
+    e_or_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x51]
+
+    e_or_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x50]
+
+    e_or_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x52]
+
+    e_or_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x55]
+
+    e_or_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x57]
+
+    e_or_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x51]
+
+    e_or_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x50]
+
+    e_or_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x52]
+
+    e_or_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x55]
+
+    e_or_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x57]
+
+    e_or_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x51]
+
+    e_or_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x50]
+
+    e_or_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x50]
+
+    e_or_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x52]
+
+    e_or_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x55]
+
+    e_or_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x57]
+
+    e_or_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x51]
+
+    e_or_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x50]
+
+    e_or_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x52]
+
+    e_or_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x55]
+
+    e_or_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x57]
+
+    e_or_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x51]
+
+    e_or_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x50]
+
+    e_or_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x52]
+
+    e_or_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x55]
+
+    e_or_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x57]
+
+    e_or_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x51]
+
+    e_or_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x50]
+
+    e_or_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x50]
+
+    e_or_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x52]
+
+    e_or_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x55]
+
+    e_or_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x57]
+
+    e_or_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x51]
+
+    e_or_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x50]
+
+    e_or_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x52]
+
+    e_or_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x55]
+
+    e_or_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x57]
+
+    e_or_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x51]
+
+    e_or_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x50]
+
+    e_or_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x52]
+
+    e_or_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x55]
+
+    e_or_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x57]
+
+    e_or_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x51]
+
+    e_or_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x50]
+
+    e_xor_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x70]
+
+    e_xor_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x72]
+
+    e_xor_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x75]
+
+    e_xor_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x77]
+
+    e_xor_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x71]
+
+    e_xor_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x70]
+
+    e_xor_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x72]
+
+    e_xor_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x75]
+
+    e_xor_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x77]
+
+    e_xor_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x71]
+
+    e_xor_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x70]
+
+    e_xor_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x72]
+
+    e_xor_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x75]
+
+    e_xor_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x77]
+
+    e_xor_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x71]
+
+    e_xor_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x70]
+
+    e_xor_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x70]
+
+    e_xor_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x72]
+
+    e_xor_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x75]
+
+    e_xor_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x77]
+
+    e_xor_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x71]
+
+    e_xor_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x70]
+
+    e_xor_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x72]
+
+    e_xor_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x75]
+
+    e_xor_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x77]
+
+    e_xor_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x71]
+
+    e_xor_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x70]
+
+    e_xor_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x72]
+
+    e_xor_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x75]
+
+    e_xor_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x77]
+
+    e_xor_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x71]
+
+    e_xor_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x70]
+
+    e_xor_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x70]
+
+    e_xor_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x72]
+
+    e_xor_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x75]
+
+    e_xor_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x77]
+
+    e_xor_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x71]
+
+    e_xor_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x70]
+
+    e_xor_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x72]
+
+    e_xor_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x75]
+
+    e_xor_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x77]
+
+    e_xor_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x71]
+
+    e_xor_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x70]
+
+    e_xor_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x72]
+
+    e_xor_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x75]
+
+    e_xor_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x77]
+
+    e_xor_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x71]
+
+    e_xor_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x70]
+
+    e_xor_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x70]
+
+    e_xor_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x72]
+
+    e_xor_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x75]
+
+    e_xor_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x77]
+
+    e_xor_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x71]
+
+    e_xor_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x70]
+
+    e_xor_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x72]
+
+    e_xor_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x75]
+
+    e_xor_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x77]
+
+    e_xor_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x71]
+
+    e_xor_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x70]
+
+    e_xor_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x72]
+
+    e_xor_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x75]
+
+    e_xor_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x77]
+
+    e_xor_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x71]
+
+    e_xor_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x70]
+
+    e_add_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x90]
+
+    e_add_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x92]
+
+    e_add_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x95]
+
+    e_add_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x97]
+
+    e_add_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x91]
+
+    e_add_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x90]
+
+    e_add_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x92]
+
+    e_add_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x95]
+
+    e_add_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x97]
+
+    e_add_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x91]
+
+    e_add_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x90]
+
+    e_add_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0x92]
+
+    e_add_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0x95]
+
+    e_add_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0x97]
+
+    e_add_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x91]
+
+    e_add_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0x90]
+
+    e_add_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x90]
+
+    e_add_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x92]
+
+    e_add_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x95]
+
+    e_add_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x97]
+
+    e_add_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x91]
+
+    e_add_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x90]
+
+    e_add_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x92]
+
+    e_add_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x95]
+
+    e_add_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x97]
+
+    e_add_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x91]
+
+    e_add_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x90]
+
+    e_add_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0x92]
+
+    e_add_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0x95]
+
+    e_add_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0x97]
+
+    e_add_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x91]
+
+    e_add_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0x90]
+
+    e_add_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x90]
+
+    e_add_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x92]
+
+    e_add_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x95]
+
+    e_add_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x97]
+
+    e_add_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x91]
+
+    e_add_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x90]
+
+    e_add_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x92]
+
+    e_add_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x95]
+
+    e_add_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x97]
+
+    e_add_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x91]
+
+    e_add_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x90]
+
+    e_add_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0x92]
+
+    e_add_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0x95]
+
+    e_add_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0x97]
+
+    e_add_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x91]
+
+    e_add_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0x90]
+
+    e_add_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x90]
+
+    e_add_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x92]
+
+    e_add_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x95]
+
+    e_add_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x97]
+
+    e_add_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x91]
+
+    e_add_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x90]
+
+    e_add_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x92]
+
+    e_add_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x95]
+
+    e_add_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x97]
+
+    e_add_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x91]
+
+    e_add_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x90]
+
+    e_add_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0x92]
+
+    e_add_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0x95]
+
+    e_add_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0x97]
+
+    e_add_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x91]
+
+    e_add_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0x90]
+
+    e_sub_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xb0]
+
+    e_sub_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xb2]
+
+    e_sub_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xb5]
+
+    e_sub_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xb7]
+
+    e_sub_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xb1]
+
+    e_sub_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xb0]
+
+    e_sub_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xb2]
+
+    e_sub_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xb5]
+
+    e_sub_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xb7]
+
+    e_sub_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xb1]
+
+    e_sub_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xb0]
+
+    e_sub_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xb2]
+
+    e_sub_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xb5]
+
+    e_sub_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xb7]
+
+    e_sub_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xb1]
+
+    e_sub_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xb0]
+
+    e_sub_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xb0]
+
+    e_sub_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xb2]
+
+    e_sub_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xb5]
+
+    e_sub_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xb7]
+
+    e_sub_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xb1]
+
+    e_sub_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xb0]
+
+    e_sub_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xb2]
+
+    e_sub_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xb5]
+
+    e_sub_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xb7]
+
+    e_sub_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xb1]
+
+    e_sub_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xb0]
+
+    e_sub_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xb2]
+
+    e_sub_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xb5]
+
+    e_sub_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xb7]
+
+    e_sub_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xb1]
+
+    e_sub_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xb0]
+
+    e_sub_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xb0]
+
+    e_sub_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xb2]
+
+    e_sub_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xb5]
+
+    e_sub_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xb7]
+
+    e_sub_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xb1]
+
+    e_sub_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xb0]
+
+    e_sub_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xb2]
+
+    e_sub_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xb5]
+
+    e_sub_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xb7]
+
+    e_sub_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xb1]
+
+    e_sub_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xb0]
+
+    e_sub_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xb2]
+
+    e_sub_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xb5]
+
+    e_sub_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xb7]
+
+    e_sub_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xb1]
+
+    e_sub_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xb0]
+
+    e_sub_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xb0]
+
+    e_sub_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xb2]
+
+    e_sub_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xb5]
+
+    e_sub_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xb7]
+
+    e_sub_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xb1]
+
+    e_sub_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xb0]
+
+    e_sub_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xb2]
+
+    e_sub_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xb5]
+
+    e_sub_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xb7]
+
+    e_sub_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xb1]
+
+    e_sub_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xb0]
+
+    e_sub_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xb2]
+
+    e_sub_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xb5]
+
+    e_sub_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xb7]
+
+    e_sub_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xb1]
+
+    e_sub_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xb0]
+
+    e_adc_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xd0]
+
+    e_adc_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xd2]
+
+    e_adc_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xd5]
+
+    e_adc_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xd7]
+
+    e_adc_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xd1]
+
+    e_adc_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xd0]
+
+    e_adc_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xd2]
+
+    e_adc_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xd5]
+
+    e_adc_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xd7]
+
+    e_adc_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xd1]
+
+    e_adc_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xd0]
+
+    e_adc_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xd2]
+
+    e_adc_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xd5]
+
+    e_adc_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xd7]
+
+    e_adc_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xd1]
+
+    e_adc_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xd0]
+
+    e_adc_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xd0]
+
+    e_adc_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xd2]
+
+    e_adc_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xd5]
+
+    e_adc_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xd7]
+
+    e_adc_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xd1]
+
+    e_adc_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xd0]
+
+    e_adc_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xd2]
+
+    e_adc_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xd5]
+
+    e_adc_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xd7]
+
+    e_adc_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xd1]
+
+    e_adc_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xd0]
+
+    e_adc_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xd2]
+
+    e_adc_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xd5]
+
+    e_adc_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xd7]
+
+    e_adc_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xd1]
+
+    e_adc_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xd0]
+
+    e_adc_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xd0]
+
+    e_adc_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xd2]
+
+    e_adc_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xd5]
+
+    e_adc_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xd7]
+
+    e_adc_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xd1]
+
+    e_adc_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xd0]
+
+    e_adc_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xd2]
+
+    e_adc_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xd5]
+
+    e_adc_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xd7]
+
+    e_adc_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xd1]
+
+    e_adc_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xd0]
+
+    e_adc_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xd2]
+
+    e_adc_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xd5]
+
+    e_adc_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xd7]
+
+    e_adc_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xd1]
+
+    e_adc_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xd0]
+
+    e_adc_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xd0]
+
+    e_adc_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xd2]
+
+    e_adc_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xd5]
+
+    e_adc_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xd7]
+
+    e_adc_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xd1]
+
+    e_adc_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xd0]
+
+    e_adc_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xd2]
+
+    e_adc_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xd5]
+
+    e_adc_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xd7]
+
+    e_adc_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xd1]
+
+    e_adc_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xd0]
+
+    e_adc_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xd2]
+
+    e_adc_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xd5]
+
+    e_adc_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xd7]
+
+    e_adc_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xd1]
+
+    e_adc_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xd0]
+
+    e_sbc_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xf0]
+
+    e_sbc_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xf2]
+
+    e_sbc_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xf5]
+
+    e_sbc_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xf7]
+
+    e_sbc_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xf1]
+
+    e_sbc_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xf0]
+
+    e_sbc_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xf2]
+
+    e_sbc_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xf5]
+
+    e_sbc_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xf7]
+
+    e_sbc_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xf1]
+
+    e_sbc_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xf0]
+
+    e_sbc_rlsl r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x20,0xf2]
+
+    e_sbc_rlsl r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x51,0xf5]
+
+    e_sbc_rlsl r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x71,0xf7]
+
+    e_sbc_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xf1]
+
+    e_sbc_rlsl r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x00,0xf0]
+
+    e_sbc_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xf0]
+
+    e_sbc_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xf2]
+
+    e_sbc_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xf5]
+
+    e_sbc_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xf7]
+
+    e_sbc_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xf1]
+
+    e_sbc_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xf0]
+
+    e_sbc_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xf2]
+
+    e_sbc_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xf5]
+
+    e_sbc_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xf7]
+
+    e_sbc_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xf1]
+
+    e_sbc_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xf0]
+
+    e_sbc_rlsr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x28,0xf2]
+
+    e_sbc_rlsr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x59,0xf5]
+
+    e_sbc_rlsr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x79,0xf7]
+
+    e_sbc_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xf1]
+
+    e_sbc_rlsr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x08,0xf0]
+
+    e_sbc_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xf0]
+
+    e_sbc_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xf2]
+
+    e_sbc_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xf5]
+
+    e_sbc_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xf7]
+
+    e_sbc_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xf1]
+
+    e_sbc_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xf0]
+
+    e_sbc_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xf2]
+
+    e_sbc_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xf5]
+
+    e_sbc_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xf7]
+
+    e_sbc_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xf1]
+
+    e_sbc_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xf0]
+
+    e_sbc_rlsls r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x20,0xf2]
+
+    e_sbc_rlsls r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x51,0xf5]
+
+    e_sbc_rlsls r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x71,0xf7]
+
+    e_sbc_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xf1]
+
+    e_sbc_rlsls r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x00,0xf0]
+
+    e_sbc_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xf0]
+
+    e_sbc_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xf2]
+
+    e_sbc_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xf5]
+
+    e_sbc_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xf7]
+
+    e_sbc_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xf1]
+
+    e_sbc_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xf0]
+
+    e_sbc_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xf2]
+
+    e_sbc_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xf5]
+
+    e_sbc_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xf7]
+
+    e_sbc_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xf1]
+
+    e_sbc_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xf0]
+
+    e_sbc_rlsrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x28,0xf2]
+
+    e_sbc_rlsrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x59,0xf5]
+
+    e_sbc_rlsrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x79,0xf7]
+
+    e_sbc_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xf1]
+
+    e_sbc_rlsrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x08,0xf0]
+
+    e_and_rlsl_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x30]
+
+    e_and_rlsl_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0x32]
+
+    e_and_rlsl_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0x35]
+
+    e_and_rlsl_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0x37]
+
+    e_and_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x31]
+
+    e_and_rlsl_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x30]
+
+    e_and_rlsl_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0x32]
+
+    e_and_rlsl_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0x35]
+
+    e_and_rlsl_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0x37]
+
+    e_and_rlsl_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0x31]
+
+    e_and_rlsl_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x30]
+
+    e_and_rlsl_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0x32]
+
+    e_and_rlsl_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0x35]
+
+    e_and_rlsl_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0x37]
+
+    e_and_rlsl_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0x31]
+
+    e_and_rlsl_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x30]
+
+    e_and_rlsr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x30]
+
+    e_and_rlsr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0x32]
+
+    e_and_rlsr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0x35]
+
+    e_and_rlsr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0x37]
+
+    e_and_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x31]
+
+    e_and_rlsr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x30]
+
+    e_and_rlsr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0x32]
+
+    e_and_rlsr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0x35]
+
+    e_and_rlsr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0x37]
+
+    e_and_rlsr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0x31]
+
+    e_and_rlsr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x30]
+
+    e_and_rlsr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0x32]
+
+    e_and_rlsr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0x35]
+
+    e_and_rlsr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0x37]
+
+    e_and_rlsr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0x31]
+
+    e_and_rlsr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x30]
+
+    e_and_rlsls_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x30]
+
+    e_and_rlsls_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0x32]
+
+    e_and_rlsls_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0x35]
+
+    e_and_rlsls_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0x37]
+
+    e_and_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x31]
+
+    e_and_rlsls_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x30]
+
+    e_and_rlsls_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0x32]
+
+    e_and_rlsls_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0x35]
+
+    e_and_rlsls_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0x37]
+
+    e_and_rlsls_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0x31]
+
+    e_and_rlsls_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x30]
+
+    e_and_rlsls_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0x32]
+
+    e_and_rlsls_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0x35]
+
+    e_and_rlsls_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0x37]
+
+    e_and_rlsls_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0x31]
+
+    e_and_rlsls_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x30]
+
+    e_and_rlsrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x30]
+
+    e_and_rlsrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0x32]
+
+    e_and_rlsrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0x35]
+
+    e_and_rlsrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0x37]
+
+    e_and_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x31]
+
+    e_and_rlsrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x30]
+
+    e_and_rlsrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0x32]
+
+    e_and_rlsrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0x35]
+
+    e_and_rlsrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0x37]
+
+    e_and_rlsrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0x31]
+
+    e_and_rlsrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x30]
+
+    e_and_rlsrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0x32]
+
+    e_and_rlsrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0x35]
+
+    e_and_rlsrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0x37]
+
+    e_and_rlsrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0x31]
+
+    e_and_rlsrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x30]
+
+    e_or_rlsl_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x50]
+
+    e_or_rlsl_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0x52]
+
+    e_or_rlsl_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0x55]
+
+    e_or_rlsl_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0x57]
+
+    e_or_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x51]
+
+    e_or_rlsl_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x50]
+
+    e_or_rlsl_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0x52]
+
+    e_or_rlsl_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0x55]
+
+    e_or_rlsl_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0x57]
+
+    e_or_rlsl_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0x51]
+
+    e_or_rlsl_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x50]
+
+    e_or_rlsl_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0x52]
+
+    e_or_rlsl_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0x55]
+
+    e_or_rlsl_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0x57]
+
+    e_or_rlsl_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0x51]
+
+    e_or_rlsl_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x50]
+
+    e_or_rlsr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x50]
+
+    e_or_rlsr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0x52]
+
+    e_or_rlsr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0x55]
+
+    e_or_rlsr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0x57]
+
+    e_or_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x51]
+
+    e_or_rlsr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x50]
+
+    e_or_rlsr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0x52]
+
+    e_or_rlsr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0x55]
+
+    e_or_rlsr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0x57]
+
+    e_or_rlsr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0x51]
+
+    e_or_rlsr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x50]
+
+    e_or_rlsr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0x52]
+
+    e_or_rlsr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0x55]
+
+    e_or_rlsr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0x57]
+
+    e_or_rlsr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0x51]
+
+    e_or_rlsr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x50]
+
+    e_or_rlsls_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x50]
+
+    e_or_rlsls_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0x52]
+
+    e_or_rlsls_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0x55]
+
+    e_or_rlsls_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0x57]
+
+    e_or_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x51]
+
+    e_or_rlsls_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x50]
+
+    e_or_rlsls_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0x52]
+
+    e_or_rlsls_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0x55]
+
+    e_or_rlsls_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0x57]
+
+    e_or_rlsls_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0x51]
+
+    e_or_rlsls_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x50]
+
+    e_or_rlsls_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0x52]
+
+    e_or_rlsls_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0x55]
+
+    e_or_rlsls_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0x57]
+
+    e_or_rlsls_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0x51]
+
+    e_or_rlsls_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x50]
+
+    e_or_rlsrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x50]
+
+    e_or_rlsrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0x52]
+
+    e_or_rlsrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0x55]
+
+    e_or_rlsrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0x57]
+
+    e_or_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x51]
+
+    e_or_rlsrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x50]
+
+    e_or_rlsrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0x52]
+
+    e_or_rlsrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0x55]
+
+    e_or_rlsrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0x57]
+
+    e_or_rlsrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0x51]
+
+    e_or_rlsrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x50]
+
+    e_or_rlsrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0x52]
+
+    e_or_rlsrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0x55]
+
+    e_or_rlsrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0x57]
+
+    e_or_rlsrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0x51]
+
+    e_or_rlsrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x50]
+
+    e_xor_rlsl_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x70]
+
+    e_xor_rlsl_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0x72]
+
+    e_xor_rlsl_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0x75]
+
+    e_xor_rlsl_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0x77]
+
+    e_xor_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x71]
+
+    e_xor_rlsl_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x70]
+
+    e_xor_rlsl_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0x72]
+
+    e_xor_rlsl_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0x75]
+
+    e_xor_rlsl_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0x77]
+
+    e_xor_rlsl_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0x71]
+
+    e_xor_rlsl_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x70]
+
+    e_xor_rlsl_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0x72]
+
+    e_xor_rlsl_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0x75]
+
+    e_xor_rlsl_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0x77]
+
+    e_xor_rlsl_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0x71]
+
+    e_xor_rlsl_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x70]
+
+    e_xor_rlsr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x70]
+
+    e_xor_rlsr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0x72]
+
+    e_xor_rlsr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0x75]
+
+    e_xor_rlsr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0x77]
+
+    e_xor_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x71]
+
+    e_xor_rlsr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x70]
+
+    e_xor_rlsr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0x72]
+
+    e_xor_rlsr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0x75]
+
+    e_xor_rlsr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0x77]
+
+    e_xor_rlsr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0x71]
+
+    e_xor_rlsr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x70]
+
+    e_xor_rlsr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0x72]
+
+    e_xor_rlsr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0x75]
+
+    e_xor_rlsr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0x77]
+
+    e_xor_rlsr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0x71]
+
+    e_xor_rlsr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x70]
+
+    e_xor_rlsls_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x70]
+
+    e_xor_rlsls_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0x72]
+
+    e_xor_rlsls_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0x75]
+
+    e_xor_rlsls_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0x77]
+
+    e_xor_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x71]
+
+    e_xor_rlsls_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x70]
+
+    e_xor_rlsls_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0x72]
+
+    e_xor_rlsls_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0x75]
+
+    e_xor_rlsls_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0x77]
+
+    e_xor_rlsls_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0x71]
+
+    e_xor_rlsls_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x70]
+
+    e_xor_rlsls_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0x72]
+
+    e_xor_rlsls_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0x75]
+
+    e_xor_rlsls_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0x77]
+
+    e_xor_rlsls_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0x71]
+
+    e_xor_rlsls_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x70]
+
+    e_xor_rlsrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x70]
+
+    e_xor_rlsrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0x72]
+
+    e_xor_rlsrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0x75]
+
+    e_xor_rlsrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0x77]
+
+    e_xor_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x71]
+
+    e_xor_rlsrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x70]
+
+    e_xor_rlsrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0x72]
+
+    e_xor_rlsrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0x75]
+
+    e_xor_rlsrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0x77]
+
+    e_xor_rlsrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0x71]
+
+    e_xor_rlsrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x70]
+
+    e_xor_rlsrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0x72]
+
+    e_xor_rlsrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0x75]
+
+    e_xor_rlsrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0x77]
+
+    e_xor_rlsrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0x71]
+
+    e_xor_rlsrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x70]
+
+    e_add_rlsl_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0x90]
+
+    e_add_rlsl_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0x92]
+
+    e_add_rlsl_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0x95]
+
+    e_add_rlsl_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0x97]
+
+    e_add_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0x91]
+
+    e_add_rlsl_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0x90]
+
+    e_add_rlsl_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0x92]
+
+    e_add_rlsl_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0x95]
+
+    e_add_rlsl_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0x97]
+
+    e_add_rlsl_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0x91]
+
+    e_add_rlsl_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0x90]
+
+    e_add_rlsl_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0x92]
+
+    e_add_rlsl_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0x95]
+
+    e_add_rlsl_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0x97]
+
+    e_add_rlsl_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0x91]
+
+    e_add_rlsl_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0x90]
+
+    e_add_rlsr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0x90]
+
+    e_add_rlsr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0x92]
+
+    e_add_rlsr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0x95]
+
+    e_add_rlsr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0x97]
+
+    e_add_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0x91]
+
+    e_add_rlsr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0x90]
+
+    e_add_rlsr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0x92]
+
+    e_add_rlsr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0x95]
+
+    e_add_rlsr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0x97]
+
+    e_add_rlsr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0x91]
+
+    e_add_rlsr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0x90]
+
+    e_add_rlsr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0x92]
+
+    e_add_rlsr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0x95]
+
+    e_add_rlsr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0x97]
+
+    e_add_rlsr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0x91]
+
+    e_add_rlsr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0x90]
+
+    e_add_rlsls_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0x90]
+
+    e_add_rlsls_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0x92]
+
+    e_add_rlsls_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0x95]
+
+    e_add_rlsls_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0x97]
+
+    e_add_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0x91]
+
+    e_add_rlsls_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0x90]
+
+    e_add_rlsls_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0x92]
+
+    e_add_rlsls_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0x95]
+
+    e_add_rlsls_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0x97]
+
+    e_add_rlsls_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0x91]
+
+    e_add_rlsls_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0x90]
+
+    e_add_rlsls_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0x92]
+
+    e_add_rlsls_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0x95]
+
+    e_add_rlsls_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0x97]
+
+    e_add_rlsls_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0x91]
+
+    e_add_rlsls_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0x90]
+
+    e_add_rlsrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0x90]
+
+    e_add_rlsrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0x92]
+
+    e_add_rlsrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0x95]
+
+    e_add_rlsrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0x97]
+
+    e_add_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0x91]
+
+    e_add_rlsrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0x90]
+
+    e_add_rlsrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0x92]
+
+    e_add_rlsrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0x95]
+
+    e_add_rlsrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0x97]
+
+    e_add_rlsrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0x91]
+
+    e_add_rlsrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0x90]
+
+    e_add_rlsrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0x92]
+
+    e_add_rlsrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0x95]
+
+    e_add_rlsrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0x97]
+
+    e_add_rlsrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0x91]
+
+    e_add_rlsrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0x90]
+
+    e_sub_rlsl_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0xb0]
+
+    e_sub_rlsl_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0xb2]
+
+    e_sub_rlsl_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0xb5]
+
+    e_sub_rlsl_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0xb7]
+
+    e_sub_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xb1]
+
+    e_sub_rlsl_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0xb0]
+
+    e_sub_rlsl_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0xb2]
+
+    e_sub_rlsl_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0xb5]
+
+    e_sub_rlsl_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0xb7]
+
+    e_sub_rlsl_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0xb1]
+
+    e_sub_rlsl_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0xb0]
+
+    e_sub_rlsl_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0xb2]
+
+    e_sub_rlsl_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0xb5]
+
+    e_sub_rlsl_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0xb7]
+
+    e_sub_rlsl_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0xb1]
+
+    e_sub_rlsl_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0xb0]
+
+    e_sub_rlsr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0xb0]
+
+    e_sub_rlsr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0xb2]
+
+    e_sub_rlsr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0xb5]
+
+    e_sub_rlsr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0xb7]
+
+    e_sub_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xb1]
+
+    e_sub_rlsr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0xb0]
+
+    e_sub_rlsr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0xb2]
+
+    e_sub_rlsr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0xb5]
+
+    e_sub_rlsr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0xb7]
+
+    e_sub_rlsr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0xb1]
+
+    e_sub_rlsr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0xb0]
+
+    e_sub_rlsr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0xb2]
+
+    e_sub_rlsr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0xb5]
+
+    e_sub_rlsr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0xb7]
+
+    e_sub_rlsr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0xb1]
+
+    e_sub_rlsr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0xb0]
+
+    e_sub_rlsls_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0xb0]
+
+    e_sub_rlsls_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0xb2]
+
+    e_sub_rlsls_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0xb5]
+
+    e_sub_rlsls_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0xb7]
+
+    e_sub_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xb1]
+
+    e_sub_rlsls_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0xb0]
+
+    e_sub_rlsls_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0xb2]
+
+    e_sub_rlsls_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0xb5]
+
+    e_sub_rlsls_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0xb7]
+
+    e_sub_rlsls_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0xb1]
+
+    e_sub_rlsls_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0xb0]
+
+    e_sub_rlsls_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0xb2]
+
+    e_sub_rlsls_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0xb5]
+
+    e_sub_rlsls_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0xb7]
+
+    e_sub_rlsls_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0xb1]
+
+    e_sub_rlsls_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0xb0]
+
+    e_sub_rlsrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0xb0]
+
+    e_sub_rlsrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0xb2]
+
+    e_sub_rlsrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0xb5]
+
+    e_sub_rlsrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0xb7]
+
+    e_sub_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xb1]
+
+    e_sub_rlsrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0xb0]
+
+    e_sub_rlsrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0xb2]
+
+    e_sub_rlsrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0xb5]
+
+    e_sub_rlsrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0xb7]
+
+    e_sub_rlsrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0xb1]
+
+    e_sub_rlsrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0xb0]
+
+    e_sub_rlsrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0xb2]
+
+    e_sub_rlsrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0xb5]
+
+    e_sub_rlsrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0xb7]
+
+    e_sub_rlsrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0xb1]
+
+    e_sub_rlsrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0xb0]
+
+    e_adc_rlsl_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0xd0]
+
+    e_adc_rlsl_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0xd2]
+
+    e_adc_rlsl_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0xd5]
+
+    e_adc_rlsl_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0xd7]
+
+    e_adc_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xd1]
+
+    e_adc_rlsl_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0xd0]
+
+    e_adc_rlsl_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0xd2]
+
+    e_adc_rlsl_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0xd5]
+
+    e_adc_rlsl_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0xd7]
+
+    e_adc_rlsl_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0xd1]
+
+    e_adc_rlsl_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0xd0]
+
+    e_adc_rlsl_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0xd2]
+
+    e_adc_rlsl_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0xd5]
+
+    e_adc_rlsl_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0xd7]
+
+    e_adc_rlsl_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0xd1]
+
+    e_adc_rlsl_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0xd0]
+
+    e_adc_rlsr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0xd0]
+
+    e_adc_rlsr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0xd2]
+
+    e_adc_rlsr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0xd5]
+
+    e_adc_rlsr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0xd7]
+
+    e_adc_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xd1]
+
+    e_adc_rlsr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0xd0]
+
+    e_adc_rlsr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0xd2]
+
+    e_adc_rlsr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0xd5]
+
+    e_adc_rlsr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0xd7]
+
+    e_adc_rlsr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0xd1]
+
+    e_adc_rlsr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0xd0]
+
+    e_adc_rlsr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0xd2]
+
+    e_adc_rlsr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0xd5]
+
+    e_adc_rlsr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0xd7]
+
+    e_adc_rlsr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0xd1]
+
+    e_adc_rlsr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0xd0]
+
+    e_adc_rlsls_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0xd0]
+
+    e_adc_rlsls_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0xd2]
+
+    e_adc_rlsls_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0xd5]
+
+    e_adc_rlsls_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0xd7]
+
+    e_adc_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xd1]
+
+    e_adc_rlsls_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0xd0]
+
+    e_adc_rlsls_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0xd2]
+
+    e_adc_rlsls_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0xd5]
+
+    e_adc_rlsls_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0xd7]
+
+    e_adc_rlsls_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0xd1]
+
+    e_adc_rlsls_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0xd0]
+
+    e_adc_rlsls_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0xd2]
+
+    e_adc_rlsls_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0xd5]
+
+    e_adc_rlsls_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0xd7]
+
+    e_adc_rlsls_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0xd1]
+
+    e_adc_rlsls_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0xd0]
+
+    e_adc_rlsrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0xd0]
+
+    e_adc_rlsrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0xd2]
+
+    e_adc_rlsrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0xd5]
+
+    e_adc_rlsrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0xd7]
+
+    e_adc_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xd1]
+
+    e_adc_rlsrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0xd0]
+
+    e_adc_rlsrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0xd2]
+
+    e_adc_rlsrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0xd5]
+
+    e_adc_rlsrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0xd7]
+
+    e_adc_rlsrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0xd1]
+
+    e_adc_rlsrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0xd0]
+
+    e_adc_rlsrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0xd2]
+
+    e_adc_rlsrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0xd5]
+
+    e_adc_rlsrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0xd7]
+
+    e_adc_rlsrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0xd1]
+
+    e_adc_rlsrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0xd0]
+
+    e_sbc_rlsl_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x00,0xf0]
+
+    e_sbc_rlsl_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x20,0xf2]
+
+    e_sbc_rlsl_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x51,0xf5]
+
+    e_sbc_rlsl_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x71,0xf7]
+
+    e_sbc_rlsl r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x10,0xf1]
+
+    e_sbc_rlsl_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x00,0xf0]
+
+    e_sbc_rlsl_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x20,0xf2]
+
+    e_sbc_rlsl_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x51,0xf5]
+
+    e_sbc_rlsl_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x71,0xf7]
+
+    e_sbc_rlsl_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x10,0xf1]
+
+    e_sbc_rlsl_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x00,0xf0]
+
+    e_sbc_rlsl_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x20,0xf2]
+
+    e_sbc_rlsl_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x51,0xf5]
+
+    e_sbc_rlsl_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x71,0xf7]
+
+    e_sbc_rlsl_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x10,0xf1]
+
+    e_sbc_rlsl_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x00,0xf0]
+
+    e_sbc_rlsr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x08,0xf0]
+
+    e_sbc_rlsr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x28,0xf2]
+
+    e_sbc_rlsr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x59,0xf5]
+
+    e_sbc_rlsr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x79,0xf7]
+
+    e_sbc_rlsr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x18,0xf1]
+
+    e_sbc_rlsr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x08,0xf0]
+
+    e_sbc_rlsr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x28,0xf2]
+
+    e_sbc_rlsr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x59,0xf5]
+
+    e_sbc_rlsr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x79,0xf7]
+
+    e_sbc_rlsr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x18,0xf1]
+
+    e_sbc_rlsr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x08,0xf0]
+
+    e_sbc_rlsr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x28,0xf2]
+
+    e_sbc_rlsr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x59,0xf5]
+
+    e_sbc_rlsr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x79,0xf7]
+
+    e_sbc_rlsr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x18,0xf1]
+
+    e_sbc_rlsr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x08,0xf0]
+
+    e_sbc_rlsls_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x00,0xf0]
+
+    e_sbc_rlsls_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x20,0xf2]
+
+    e_sbc_rlsls_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x51,0xf5]
+
+    e_sbc_rlsls_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x71,0xf7]
+
+    e_sbc_rlsls r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x10,0xf1]
+
+    e_sbc_rlsls_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x00,0xf0]
+
+    e_sbc_rlsls_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x20,0xf2]
+
+    e_sbc_rlsls_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x51,0xf5]
+
+    e_sbc_rlsls_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x71,0xf7]
+
+    e_sbc_rlsls_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x10,0xf1]
+
+    e_sbc_rlsls_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x00,0xf0]
+
+    e_sbc_rlsls_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x20,0xf2]
+
+    e_sbc_rlsls_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x51,0xf5]
+
+    e_sbc_rlsls_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x71,0xf7]
+
+    e_sbc_rlsls_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x10,0xf1]
+
+    e_sbc_rlsls_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x00,0xf0]
+
+    e_sbc_rlsrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x08,0xf0]
+
+    e_sbc_rlsrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x28,0xf2]
+
+    e_sbc_rlsrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x59,0xf5]
+
+    e_sbc_rlsrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x79,0xf7]
+
+    e_sbc_rlsrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x18,0xf1]
+
+    e_sbc_rlsrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x08,0xf0]
+
+    e_sbc_rlsrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x28,0xf2]
+
+    e_sbc_rlsrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x59,0xf5]
+
+    e_sbc_rlsrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x79,0xf7]
+
+    e_sbc_rlsrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x18,0xf1]
+
+    e_sbc_rlsrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x08,0xf0]
+
+    e_sbc_rlsrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x28,0xf2]
+
+    e_sbc_rlsrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x59,0xf5]
+
+    e_sbc_rlsrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x79,0xf7]
+
+    e_sbc_rlsrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x18,0xf1]
+
+    e_sbc_rlsrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x08,0xf0]
+
+    e_rror r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x00]
+
+    e_rror r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x2c,0x02]
+
+    e_rror r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x5c,0x05]
+
+    e_rror r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x7c,0x07]
+
+    e_rror r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x1c,0x01]
+
+    e_rror r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x00]
+
+    e_rror r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x2c,0x02]
+
+    e_rror r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x5c,0x05]
+
+    e_rror r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x7c,0x07]
+
+    e_rror r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x1c,0x01]
+
+    e_rror r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x00]
+
+    e_rror r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x2c,0x02]
+
+    e_rror r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x5c,0x05]
+
+    e_rror r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x7c,0x07]
+
+    e_rror r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x1c,0x01]
+
+    e_rror r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x00]
+
+    e_rrors r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x00]
+
+    e_rrors r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x2c,0x02]
+
+    e_rrors r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x5c,0x05]
+
+    e_rrors r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x7c,0x07]
+
+    e_rrors r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x1c,0x01]
+
+    e_rrors r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x00]
+
+    e_rrors r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x2c,0x02]
+
+    e_rrors r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x5c,0x05]
+
+    e_rrors r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x7c,0x07]
+
+    e_rrors r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x1c,0x01]
+
+    e_rrors r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x00]
+
+    e_rrors r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x2c,0x02]
+
+    e_rrors r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x5c,0x05]
+
+    e_rrors r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x7c,0x07]
+
+    e_rrors r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x1c,0x01]
+
+    e_rrors r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x00]
+
+    e_rror_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x20]
+
+    e_rror_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x22]
+
+    e_rror_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x25]
+
+    e_rror_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x27]
+
+    e_rror_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x21]
+
+    e_rror_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x20]
+
+    e_rror_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x22]
+
+    e_rror_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x25]
+
+    e_rror_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x27]
+
+    e_rror_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x21]
+
+    e_rror_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x20]
+
+    e_rror_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x22]
+
+    e_rror_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x25]
+
+    e_rror_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x27]
+
+    e_rror_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x21]
+
+    e_rror_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x20]
+
+    e_rror_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x20]
+
+    e_rror_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x22]
+
+    e_rror_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x25]
+
+    e_rror_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x27]
+
+    e_rror_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x21]
+
+    e_rror_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x20]
+
+    e_rror_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x22]
+
+    e_rror_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x25]
+
+    e_rror_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x27]
+
+    e_rror_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x21]
+
+    e_rror_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x20]
+
+    e_rror_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x22]
+
+    e_rror_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x25]
+
+    e_rror_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x27]
+
+    e_rror_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x21]
+
+    e_rror_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x20]
+
+    e_rror_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x40]
+
+    e_rror_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x42]
+
+    e_rror_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x45]
+
+    e_rror_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x47]
+
+    e_rror_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x41]
+
+    e_rror_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x40]
+
+    e_rror_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x42]
+
+    e_rror_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x45]
+
+    e_rror_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x47]
+
+    e_rror_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x41]
+
+    e_rror_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x40]
+
+    e_rror_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x42]
+
+    e_rror_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x45]
+
+    e_rror_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x47]
+
+    e_rror_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x41]
+
+    e_rror_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x40]
+
+    e_rror_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x40]
+
+    e_rror_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x42]
+
+    e_rror_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x45]
+
+    e_rror_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x47]
+
+    e_rror_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x41]
+
+    e_rror_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x40]
+
+    e_rror_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x42]
+
+    e_rror_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x45]
+
+    e_rror_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x47]
+
+    e_rror_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x41]
+
+    e_rror_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x40]
+
+    e_rror_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x42]
+
+    e_rror_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x45]
+
+    e_rror_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x47]
+
+    e_rror_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x41]
+
+    e_rror_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x40]
+
+    e_rror_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x60]
+
+    e_rror_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x62]
+
+    e_rror_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x65]
+
+    e_rror_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x67]
+
+    e_rror_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x61]
+
+    e_rror_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x60]
+
+    e_rror_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x62]
+
+    e_rror_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x65]
+
+    e_rror_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x67]
+
+    e_rror_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x61]
+
+    e_rror_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x60]
+
+    e_rror_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x62]
+
+    e_rror_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x65]
+
+    e_rror_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x67]
+
+    e_rror_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x61]
+
+    e_rror_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x60]
+
+    e_rror_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x60]
+
+    e_rror_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x62]
+
+    e_rror_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x65]
+
+    e_rror_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x67]
+
+    e_rror_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x61]
+
+    e_rror_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x60]
+
+    e_rror_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x62]
+
+    e_rror_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x65]
+
+    e_rror_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x67]
+
+    e_rror_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x61]
+
+    e_rror_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x60]
+
+    e_rror_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x62]
+
+    e_rror_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x65]
+
+    e_rror_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x67]
+
+    e_rror_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x61]
+
+    e_rror_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x60]
+
+    e_rror_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x80]
+
+    e_rror_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x82]
+
+    e_rror_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x85]
+
+    e_rror_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x87]
+
+    e_rror_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x81]
+
+    e_rror_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x80]
+
+    e_rror_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x82]
+
+    e_rror_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x85]
+
+    e_rror_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x87]
+
+    e_rror_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x81]
+
+    e_rror_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x80]
+
+    e_rror_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x82]
+
+    e_rror_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x85]
+
+    e_rror_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x87]
+
+    e_rror_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x81]
+
+    e_rror_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x80]
+
+    e_rror_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x80]
+
+    e_rror_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x82]
+
+    e_rror_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x85]
+
+    e_rror_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x87]
+
+    e_rror_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x81]
+
+    e_rror_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x80]
+
+    e_rror_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x82]
+
+    e_rror_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x85]
+
+    e_rror_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x87]
+
+    e_rror_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x81]
+
+    e_rror_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x80]
+
+    e_rror_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x82]
+
+    e_rror_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x85]
+
+    e_rror_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x87]
+
+    e_rror_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x81]
+
+    e_rror_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x80]
+
+    e_rror_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xa0]
+
+    e_rror_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xa2]
+
+    e_rror_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xa5]
+
+    e_rror_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xa7]
+
+    e_rror_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xa1]
+
+    e_rror_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xa0]
+
+    e_rror_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xa2]
+
+    e_rror_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xa5]
+
+    e_rror_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xa7]
+
+    e_rror_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xa1]
+
+    e_rror_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xa0]
+
+    e_rror_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xa2]
+
+    e_rror_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xa5]
+
+    e_rror_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xa7]
+
+    e_rror_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xa1]
+
+    e_rror_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xa0]
+
+    e_rror_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xa0]
+
+    e_rror_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xa2]
+
+    e_rror_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xa5]
+
+    e_rror_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xa7]
+
+    e_rror_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xa1]
+
+    e_rror_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xa0]
+
+    e_rror_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xa2]
+
+    e_rror_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xa5]
+
+    e_rror_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xa7]
+
+    e_rror_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xa1]
+
+    e_rror_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xa0]
+
+    e_rror_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xa2]
+
+    e_rror_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xa5]
+
+    e_rror_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xa7]
+
+    e_rror_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xa1]
+
+    e_rror_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xa0]
+
+    e_rror_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xc0]
+
+    e_rror_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xc2]
+
+    e_rror_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xc5]
+
+    e_rror_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xc7]
+
+    e_rror_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xc1]
+
+    e_rror_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xc0]
+
+    e_rror_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xc2]
+
+    e_rror_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xc5]
+
+    e_rror_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xc7]
+
+    e_rror_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xc1]
+
+    e_rror_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xc0]
+
+    e_rror_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xc2]
+
+    e_rror_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xc5]
+
+    e_rror_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xc7]
+
+    e_rror_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xc1]
+
+    e_rror_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xc0]
+
+    e_rror_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xc0]
+
+    e_rror_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xc2]
+
+    e_rror_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xc5]
+
+    e_rror_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xc7]
+
+    e_rror_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xc1]
+
+    e_rror_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xc0]
+
+    e_rror_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xc2]
+
+    e_rror_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xc5]
+
+    e_rror_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xc7]
+
+    e_rror_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xc1]
+
+    e_rror_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xc0]
+
+    e_rror_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xc2]
+
+    e_rror_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xc5]
+
+    e_rror_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xc7]
+
+    e_rror_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xc1]
+
+    e_rror_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xc0]
+
+    e_rror_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xe0]
+
+    e_rror_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xe2]
+
+    e_rror_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xe5]
+
+    e_rror_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xe7]
+
+    e_rror_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xe1]
+
+    e_rror_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xe0]
+
+    e_rror_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xe2]
+
+    e_rror_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xe5]
+
+    e_rror_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xe7]
+
+    e_rror_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xe1]
+
+    e_rror_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xe0]
+
+    e_rror_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xe2]
+
+    e_rror_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xe5]
+
+    e_rror_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xe7]
+
+    e_rror_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xe1]
+
+    e_rror_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xe0]
+
+    e_rror_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xe0]
+
+    e_rror_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xe2]
+
+    e_rror_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xe5]
+
+    e_rror_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xe7]
+
+    e_rror_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xe1]
+
+    e_rror_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xe0]
+
+    e_rror_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xe2]
+
+    e_rror_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xe5]
+
+    e_rror_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xe7]
+
+    e_rror_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xe1]
+
+    e_rror_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xe0]
+
+    e_rror_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xe2]
+
+    e_rror_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xe5]
+
+    e_rror_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xe7]
+
+    e_rror_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xe1]
+
+    e_rror_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xe0]
+
+    e_rror_ze r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x00]
+
+    e_rror_nz r2, r2, r2
+# CHECK: encoding: [0x59,0x08,0x2c,0x02]
+
+    e_rror_po r5, r5, r5
+# CHECK: encoding: [0x79,0x14,0x5c,0x05]
+
+    e_rror_ne r7, r7, r7
+# CHECK: encoding: [0x99,0x1c,0x7c,0x07]
+
+    e_rror r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x1c,0x01]
+
+    e_rror_az r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x00]
+
+    e_rror_zb r2, r2, r2
+# CHECK: encoding: [0xd9,0x08,0x2c,0x02]
+
+    e_rror_ca r5, r5, r5
+# CHECK: encoding: [0xf9,0x14,0x5c,0x05]
+
+    e_rror_nc r7, r7, r7
+# CHECK: encoding: [0x19,0x1d,0x7c,0x07]
+
+    e_rror_cz r1, r1, r1
+# CHECK: encoding: [0x39,0x05,0x1c,0x01]
+
+    e_rror_spo r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x00]
+
+    e_rror_sne r2, r2, r2
+# CHECK: encoding: [0x79,0x09,0x2c,0x02]
+
+    e_rror_nbs r5, r5, r5
+# CHECK: encoding: [0x99,0x15,0x5c,0x05]
+
+    e_rror_nex r7, r7, r7
+# CHECK: encoding: [0xb9,0x1d,0x7c,0x07]
+
+    e_rror_bs r1, r1, r1
+# CHECK: encoding: [0xd9,0x05,0x1c,0x01]
+
+    e_rror_ex r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x00]
+
+    e_rrors_ze r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x00]
+
+    e_rrors_nz r2, r2, r2
+# CHECK: encoding: [0x59,0x0a,0x2c,0x02]
+
+    e_rrors_po r5, r5, r5
+# CHECK: encoding: [0x79,0x16,0x5c,0x05]
+
+    e_rrors_ne r7, r7, r7
+# CHECK: encoding: [0x99,0x1e,0x7c,0x07]
+
+    e_rrors r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x1c,0x01]
+
+    e_rrors_az r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x00]
+
+    e_rrors_zb r2, r2, r2
+# CHECK: encoding: [0xd9,0x0a,0x2c,0x02]
+
+    e_rrors_ca r5, r5, r5
+# CHECK: encoding: [0xf9,0x16,0x5c,0x05]
+
+    e_rrors_nc r7, r7, r7
+# CHECK: encoding: [0x19,0x1f,0x7c,0x07]
+
+    e_rrors_cz r1, r1, r1
+# CHECK: encoding: [0x39,0x07,0x1c,0x01]
+
+    e_rrors_spo r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x00]
+
+    e_rrors_sne r2, r2, r2
+# CHECK: encoding: [0x79,0x0b,0x2c,0x02]
+
+    e_rrors_nbs r5, r5, r5
+# CHECK: encoding: [0x99,0x17,0x5c,0x05]
+
+    e_rrors_nex r7, r7, r7
+# CHECK: encoding: [0xb9,0x1f,0x7c,0x07]
+
+    e_rrors_bs r1, r1, r1
+# CHECK: encoding: [0xd9,0x07,0x1c,0x01]
+
+    e_rrors_ex r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x00]
+
+    e_rror_and_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x20]
+
+    e_rror_and_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0x22]
+
+    e_rror_and_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0x25]
+
+    e_rror_and_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0x27]
+
+    e_rror_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x21]
+
+    e_rror_and_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x20]
+
+    e_rror_and_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0x22]
+
+    e_rror_and_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0x25]
+
+    e_rror_and_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0x27]
+
+    e_rror_and_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0x21]
+
+    e_rror_and_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x20]
+
+    e_rror_and_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0x22]
+
+    e_rror_and_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0x25]
+
+    e_rror_and_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0x27]
+
+    e_rror_and_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0x21]
+
+    e_rror_and_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x20]
+
+    e_rror_ands_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x20]
+
+    e_rror_ands_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0x22]
+
+    e_rror_ands_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0x25]
+
+    e_rror_ands_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0x27]
+
+    e_rror_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x21]
+
+    e_rror_ands_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x20]
+
+    e_rror_ands_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0x22]
+
+    e_rror_ands_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0x25]
+
+    e_rror_ands_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0x27]
+
+    e_rror_ands_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0x21]
+
+    e_rror_ands_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x20]
+
+    e_rror_ands_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0x22]
+
+    e_rror_ands_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0x25]
+
+    e_rror_ands_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0x27]
+
+    e_rror_ands_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0x21]
+
+    e_rror_ands_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x20]
+
+    e_rror_or_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x40]
+
+    e_rror_or_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0x42]
+
+    e_rror_or_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0x45]
+
+    e_rror_or_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0x47]
+
+    e_rror_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x41]
+
+    e_rror_or_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x40]
+
+    e_rror_or_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0x42]
+
+    e_rror_or_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0x45]
+
+    e_rror_or_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0x47]
+
+    e_rror_or_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0x41]
+
+    e_rror_or_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x40]
+
+    e_rror_or_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0x42]
+
+    e_rror_or_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0x45]
+
+    e_rror_or_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0x47]
+
+    e_rror_or_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0x41]
+
+    e_rror_or_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x40]
+
+    e_rror_ors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x40]
+
+    e_rror_ors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0x42]
+
+    e_rror_ors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0x45]
+
+    e_rror_ors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0x47]
+
+    e_rror_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x41]
+
+    e_rror_ors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x40]
+
+    e_rror_ors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0x42]
+
+    e_rror_ors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0x45]
+
+    e_rror_ors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0x47]
+
+    e_rror_ors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0x41]
+
+    e_rror_ors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x40]
+
+    e_rror_ors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0x42]
+
+    e_rror_ors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0x45]
+
+    e_rror_ors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0x47]
+
+    e_rror_ors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0x41]
+
+    e_rror_ors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x40]
+
+    e_rror_xor_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x60]
+
+    e_rror_xor_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0x62]
+
+    e_rror_xor_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0x65]
+
+    e_rror_xor_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0x67]
+
+    e_rror_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x61]
+
+    e_rror_xor_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x60]
+
+    e_rror_xor_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0x62]
+
+    e_rror_xor_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0x65]
+
+    e_rror_xor_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0x67]
+
+    e_rror_xor_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0x61]
+
+    e_rror_xor_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x60]
+
+    e_rror_xor_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0x62]
+
+    e_rror_xor_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0x65]
+
+    e_rror_xor_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0x67]
+
+    e_rror_xor_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0x61]
+
+    e_rror_xor_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x60]
+
+    e_rror_xors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x60]
+
+    e_rror_xors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0x62]
+
+    e_rror_xors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0x65]
+
+    e_rror_xors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0x67]
+
+    e_rror_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x61]
+
+    e_rror_xors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x60]
+
+    e_rror_xors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0x62]
+
+    e_rror_xors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0x65]
+
+    e_rror_xors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0x67]
+
+    e_rror_xors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0x61]
+
+    e_rror_xors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x60]
+
+    e_rror_xors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0x62]
+
+    e_rror_xors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0x65]
+
+    e_rror_xors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0x67]
+
+    e_rror_xors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0x61]
+
+    e_rror_xors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x60]
+
+    e_rror_add_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x80]
+
+    e_rror_add_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0x82]
+
+    e_rror_add_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0x85]
+
+    e_rror_add_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0x87]
+
+    e_rror_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x81]
+
+    e_rror_add_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x80]
+
+    e_rror_add_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0x82]
+
+    e_rror_add_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0x85]
+
+    e_rror_add_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0x87]
+
+    e_rror_add_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0x81]
+
+    e_rror_add_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x80]
+
+    e_rror_add_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0x82]
+
+    e_rror_add_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0x85]
+
+    e_rror_add_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0x87]
+
+    e_rror_add_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0x81]
+
+    e_rror_add_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x80]
+
+    e_rror_adds_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x80]
+
+    e_rror_adds_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0x82]
+
+    e_rror_adds_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0x85]
+
+    e_rror_adds_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0x87]
+
+    e_rror_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x81]
+
+    e_rror_adds_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x80]
+
+    e_rror_adds_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0x82]
+
+    e_rror_adds_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0x85]
+
+    e_rror_adds_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0x87]
+
+    e_rror_adds_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0x81]
+
+    e_rror_adds_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x80]
+
+    e_rror_adds_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0x82]
+
+    e_rror_adds_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0x85]
+
+    e_rror_adds_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0x87]
+
+    e_rror_adds_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0x81]
+
+    e_rror_adds_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x80]
+
+    e_rror_sub_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0xa0]
+
+    e_rror_sub_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0xa2]
+
+    e_rror_sub_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0xa5]
+
+    e_rror_sub_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0xa7]
+
+    e_rror_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xa1]
+
+    e_rror_sub_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0xa0]
+
+    e_rror_sub_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0xa2]
+
+    e_rror_sub_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0xa5]
+
+    e_rror_sub_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0xa7]
+
+    e_rror_sub_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0xa1]
+
+    e_rror_sub_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0xa0]
+
+    e_rror_sub_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0xa2]
+
+    e_rror_sub_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0xa5]
+
+    e_rror_sub_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0xa7]
+
+    e_rror_sub_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0xa1]
+
+    e_rror_sub_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0xa0]
+
+    e_rror_subs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0xa0]
+
+    e_rror_subs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0xa2]
+
+    e_rror_subs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0xa5]
+
+    e_rror_subs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0xa7]
+
+    e_rror_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xa1]
+
+    e_rror_subs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0xa0]
+
+    e_rror_subs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0xa2]
+
+    e_rror_subs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0xa5]
+
+    e_rror_subs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0xa7]
+
+    e_rror_subs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0xa1]
+
+    e_rror_subs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0xa0]
+
+    e_rror_subs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0xa2]
+
+    e_rror_subs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0xa5]
+
+    e_rror_subs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0xa7]
+
+    e_rror_subs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0xa1]
+
+    e_rror_subs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0xa0]
+
+    e_rror_adc_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0xc0]
+
+    e_rror_adc_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0xc2]
+
+    e_rror_adc_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0xc5]
+
+    e_rror_adc_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0xc7]
+
+    e_rror_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xc1]
+
+    e_rror_adc_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0xc0]
+
+    e_rror_adc_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0xc2]
+
+    e_rror_adc_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0xc5]
+
+    e_rror_adc_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0xc7]
+
+    e_rror_adc_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0xc1]
+
+    e_rror_adc_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0xc0]
+
+    e_rror_adc_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0xc2]
+
+    e_rror_adc_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0xc5]
+
+    e_rror_adc_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0xc7]
+
+    e_rror_adc_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0xc1]
+
+    e_rror_adc_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0xc0]
+
+    e_rror_adcs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0xc0]
+
+    e_rror_adcs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0xc2]
+
+    e_rror_adcs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0xc5]
+
+    e_rror_adcs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0xc7]
+
+    e_rror_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xc1]
+
+    e_rror_adcs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0xc0]
+
+    e_rror_adcs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0xc2]
+
+    e_rror_adcs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0xc5]
+
+    e_rror_adcs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0xc7]
+
+    e_rror_adcs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0xc1]
+
+    e_rror_adcs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0xc0]
+
+    e_rror_adcs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0xc2]
+
+    e_rror_adcs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0xc5]
+
+    e_rror_adcs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0xc7]
+
+    e_rror_adcs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0xc1]
+
+    e_rror_adcs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0xc0]
+
+    e_rror_sbc_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0xe0]
+
+    e_rror_sbc_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0xe2]
+
+    e_rror_sbc_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0xe5]
+
+    e_rror_sbc_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0xe7]
+
+    e_rror_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xe1]
+
+    e_rror_sbc_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0xe0]
+
+    e_rror_sbc_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0xe2]
+
+    e_rror_sbc_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0xe5]
+
+    e_rror_sbc_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0xe7]
+
+    e_rror_sbc_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0xe1]
+
+    e_rror_sbc_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0xe0]
+
+    e_rror_sbc_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0xe2]
+
+    e_rror_sbc_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0xe5]
+
+    e_rror_sbc_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0xe7]
+
+    e_rror_sbc_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0xe1]
+
+    e_rror_sbc_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0xe0]
+
+    e_rror_sbcs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0xe0]
+
+    e_rror_sbcs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0xe2]
+
+    e_rror_sbcs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0xe5]
+
+    e_rror_sbcs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0xe7]
+
+    e_rror_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xe1]
+
+    e_rror_sbcs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0xe0]
+
+    e_rror_sbcs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0xe2]
+
+    e_rror_sbcs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0xe5]
+
+    e_rror_sbcs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0xe7]
+
+    e_rror_sbcs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0xe1]
+
+    e_rror_sbcs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0xe0]
+
+    e_rror_sbcs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0xe2]
+
+    e_rror_sbcs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0xe5]
+
+    e_rror_sbcs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0xe7]
+
+    e_rror_sbcs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0xe1]
+
+    e_rror_sbcs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0xe0]
+
+    e_and_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x30]
+
+    e_and_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x32]
+
+    e_and_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x35]
+
+    e_and_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x37]
+
+    e_and_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x31]
+
+    e_and_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x30]
+
+    e_and_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x32]
+
+    e_and_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x35]
+
+    e_and_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x37]
+
+    e_and_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x31]
+
+    e_and_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x30]
+
+    e_and_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x32]
+
+    e_and_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x35]
+
+    e_and_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x37]
+
+    e_and_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x31]
+
+    e_and_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x30]
+
+    e_and_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x30]
+
+    e_and_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x32]
+
+    e_and_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x35]
+
+    e_and_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x37]
+
+    e_and_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x31]
+
+    e_and_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x30]
+
+    e_and_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x32]
+
+    e_and_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x35]
+
+    e_and_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x37]
+
+    e_and_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x31]
+
+    e_and_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x30]
+
+    e_and_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x32]
+
+    e_and_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x35]
+
+    e_and_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x37]
+
+    e_and_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x31]
+
+    e_and_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x30]
+
+    e_or_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x50]
+
+    e_or_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x52]
+
+    e_or_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x55]
+
+    e_or_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x57]
+
+    e_or_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x51]
+
+    e_or_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x50]
+
+    e_or_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x52]
+
+    e_or_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x55]
+
+    e_or_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x57]
+
+    e_or_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x51]
+
+    e_or_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x50]
+
+    e_or_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x52]
+
+    e_or_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x55]
+
+    e_or_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x57]
+
+    e_or_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x51]
+
+    e_or_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x50]
+
+    e_or_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x50]
+
+    e_or_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x52]
+
+    e_or_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x55]
+
+    e_or_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x57]
+
+    e_or_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x51]
+
+    e_or_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x50]
+
+    e_or_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x52]
+
+    e_or_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x55]
+
+    e_or_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x57]
+
+    e_or_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x51]
+
+    e_or_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x50]
+
+    e_or_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x52]
+
+    e_or_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x55]
+
+    e_or_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x57]
+
+    e_or_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x51]
+
+    e_or_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x50]
+
+    e_xor_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x70]
+
+    e_xor_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x72]
+
+    e_xor_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x75]
+
+    e_xor_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x77]
+
+    e_xor_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x71]
+
+    e_xor_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x70]
+
+    e_xor_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x72]
+
+    e_xor_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x75]
+
+    e_xor_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x77]
+
+    e_xor_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x71]
+
+    e_xor_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x70]
+
+    e_xor_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x72]
+
+    e_xor_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x75]
+
+    e_xor_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x77]
+
+    e_xor_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x71]
+
+    e_xor_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x70]
+
+    e_xor_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x70]
+
+    e_xor_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x72]
+
+    e_xor_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x75]
+
+    e_xor_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x77]
+
+    e_xor_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x71]
+
+    e_xor_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x70]
+
+    e_xor_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x72]
+
+    e_xor_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x75]
+
+    e_xor_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x77]
+
+    e_xor_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x71]
+
+    e_xor_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x70]
+
+    e_xor_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x72]
+
+    e_xor_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x75]
+
+    e_xor_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x77]
+
+    e_xor_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x71]
+
+    e_xor_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x70]
+
+    e_add_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x90]
+
+    e_add_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x92]
+
+    e_add_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x95]
+
+    e_add_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x97]
+
+    e_add_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x91]
+
+    e_add_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x90]
+
+    e_add_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x92]
+
+    e_add_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x95]
+
+    e_add_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x97]
+
+    e_add_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x91]
+
+    e_add_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x90]
+
+    e_add_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0x92]
+
+    e_add_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0x95]
+
+    e_add_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0x97]
+
+    e_add_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x91]
+
+    e_add_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0x90]
+
+    e_add_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x90]
+
+    e_add_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x92]
+
+    e_add_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x95]
+
+    e_add_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x97]
+
+    e_add_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x91]
+
+    e_add_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x90]
+
+    e_add_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x92]
+
+    e_add_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x95]
+
+    e_add_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x97]
+
+    e_add_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x91]
+
+    e_add_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x90]
+
+    e_add_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0x92]
+
+    e_add_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0x95]
+
+    e_add_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0x97]
+
+    e_add_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x91]
+
+    e_add_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0x90]
+
+    e_sub_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xb0]
+
+    e_sub_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xb2]
+
+    e_sub_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xb5]
+
+    e_sub_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xb7]
+
+    e_sub_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xb1]
+
+    e_sub_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xb0]
+
+    e_sub_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xb2]
+
+    e_sub_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xb5]
+
+    e_sub_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xb7]
+
+    e_sub_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xb1]
+
+    e_sub_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xb0]
+
+    e_sub_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xb2]
+
+    e_sub_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xb5]
+
+    e_sub_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xb7]
+
+    e_sub_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xb1]
+
+    e_sub_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xb0]
+
+    e_sub_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xb0]
+
+    e_sub_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xb2]
+
+    e_sub_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xb5]
+
+    e_sub_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xb7]
+
+    e_sub_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xb1]
+
+    e_sub_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xb0]
+
+    e_sub_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xb2]
+
+    e_sub_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xb5]
+
+    e_sub_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xb7]
+
+    e_sub_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xb1]
+
+    e_sub_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xb0]
+
+    e_sub_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xb2]
+
+    e_sub_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xb5]
+
+    e_sub_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xb7]
+
+    e_sub_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xb1]
+
+    e_sub_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xb0]
+
+    e_adc_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xd0]
+
+    e_adc_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xd2]
+
+    e_adc_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xd5]
+
+    e_adc_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xd7]
+
+    e_adc_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xd1]
+
+    e_adc_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xd0]
+
+    e_adc_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xd2]
+
+    e_adc_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xd5]
+
+    e_adc_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xd7]
+
+    e_adc_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xd1]
+
+    e_adc_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xd0]
+
+    e_adc_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xd2]
+
+    e_adc_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xd5]
+
+    e_adc_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xd7]
+
+    e_adc_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xd1]
+
+    e_adc_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xd0]
+
+    e_adc_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xd0]
+
+    e_adc_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xd2]
+
+    e_adc_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xd5]
+
+    e_adc_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xd7]
+
+    e_adc_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xd1]
+
+    e_adc_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xd0]
+
+    e_adc_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xd2]
+
+    e_adc_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xd5]
+
+    e_adc_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xd7]
+
+    e_adc_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xd1]
+
+    e_adc_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xd0]
+
+    e_adc_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xd2]
+
+    e_adc_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xd5]
+
+    e_adc_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xd7]
+
+    e_adc_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xd1]
+
+    e_adc_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xd0]
+
+    e_sbc_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xf0]
+
+    e_sbc_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xf2]
+
+    e_sbc_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xf5]
+
+    e_sbc_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xf7]
+
+    e_sbc_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xf1]
+
+    e_sbc_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xf0]
+
+    e_sbc_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xf2]
+
+    e_sbc_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xf5]
+
+    e_sbc_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xf7]
+
+    e_sbc_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xf1]
+
+    e_sbc_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xf0]
+
+    e_sbc_rror r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x2c,0xf2]
+
+    e_sbc_rror r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x5d,0xf5]
+
+    e_sbc_rror r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x7d,0xf7]
+
+    e_sbc_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xf1]
+
+    e_sbc_rror r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x0c,0xf0]
+
+    e_sbc_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xf0]
+
+    e_sbc_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xf2]
+
+    e_sbc_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xf5]
+
+    e_sbc_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xf7]
+
+    e_sbc_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xf1]
+
+    e_sbc_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xf0]
+
+    e_sbc_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xf2]
+
+    e_sbc_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xf5]
+
+    e_sbc_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xf7]
+
+    e_sbc_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xf1]
+
+    e_sbc_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xf0]
+
+    e_sbc_rrors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x2c,0xf2]
+
+    e_sbc_rrors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x5d,0xf5]
+
+    e_sbc_rrors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x7d,0xf7]
+
+    e_sbc_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xf1]
+
+    e_sbc_rrors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x0c,0xf0]
+
+    e_and_rror_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x30]
+
+    e_and_rror_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0x32]
+
+    e_and_rror_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0x35]
+
+    e_and_rror_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0x37]
+
+    e_and_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x31]
+
+    e_and_rror_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x30]
+
+    e_and_rror_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0x32]
+
+    e_and_rror_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0x35]
+
+    e_and_rror_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0x37]
+
+    e_and_rror_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0x31]
+
+    e_and_rror_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x30]
+
+    e_and_rror_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0x32]
+
+    e_and_rror_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0x35]
+
+    e_and_rror_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0x37]
+
+    e_and_rror_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0x31]
+
+    e_and_rror_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x30]
+
+    e_and_rrors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x30]
+
+    e_and_rrors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0x32]
+
+    e_and_rrors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0x35]
+
+    e_and_rrors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0x37]
+
+    e_and_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x31]
+
+    e_and_rrors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x30]
+
+    e_and_rrors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0x32]
+
+    e_and_rrors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0x35]
+
+    e_and_rrors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0x37]
+
+    e_and_rrors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0x31]
+
+    e_and_rrors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x30]
+
+    e_and_rrors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0x32]
+
+    e_and_rrors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0x35]
+
+    e_and_rrors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0x37]
+
+    e_and_rrors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0x31]
+
+    e_and_rrors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x30]
+
+    e_or_rror_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x50]
+
+    e_or_rror_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0x52]
+
+    e_or_rror_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0x55]
+
+    e_or_rror_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0x57]
+
+    e_or_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x51]
+
+    e_or_rror_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x50]
+
+    e_or_rror_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0x52]
+
+    e_or_rror_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0x55]
+
+    e_or_rror_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0x57]
+
+    e_or_rror_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0x51]
+
+    e_or_rror_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x50]
+
+    e_or_rror_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0x52]
+
+    e_or_rror_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0x55]
+
+    e_or_rror_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0x57]
+
+    e_or_rror_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0x51]
+
+    e_or_rror_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x50]
+
+    e_or_rrors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x50]
+
+    e_or_rrors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0x52]
+
+    e_or_rrors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0x55]
+
+    e_or_rrors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0x57]
+
+    e_or_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x51]
+
+    e_or_rrors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x50]
+
+    e_or_rrors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0x52]
+
+    e_or_rrors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0x55]
+
+    e_or_rrors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0x57]
+
+    e_or_rrors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0x51]
+
+    e_or_rrors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x50]
+
+    e_or_rrors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0x52]
+
+    e_or_rrors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0x55]
+
+    e_or_rrors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0x57]
+
+    e_or_rrors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0x51]
+
+    e_or_rrors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x50]
+
+    e_xor_rror_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x70]
+
+    e_xor_rror_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0x72]
+
+    e_xor_rror_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0x75]
+
+    e_xor_rror_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0x77]
+
+    e_xor_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x71]
+
+    e_xor_rror_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x70]
+
+    e_xor_rror_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0x72]
+
+    e_xor_rror_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0x75]
+
+    e_xor_rror_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0x77]
+
+    e_xor_rror_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0x71]
+
+    e_xor_rror_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x70]
+
+    e_xor_rror_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0x72]
+
+    e_xor_rror_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0x75]
+
+    e_xor_rror_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0x77]
+
+    e_xor_rror_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0x71]
+
+    e_xor_rror_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x70]
+
+    e_xor_rrors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x70]
+
+    e_xor_rrors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0x72]
+
+    e_xor_rrors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0x75]
+
+    e_xor_rrors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0x77]
+
+    e_xor_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x71]
+
+    e_xor_rrors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x70]
+
+    e_xor_rrors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0x72]
+
+    e_xor_rrors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0x75]
+
+    e_xor_rrors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0x77]
+
+    e_xor_rrors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0x71]
+
+    e_xor_rrors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x70]
+
+    e_xor_rrors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0x72]
+
+    e_xor_rrors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0x75]
+
+    e_xor_rrors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0x77]
+
+    e_xor_rrors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0x71]
+
+    e_xor_rrors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x70]
+
+    e_add_rror_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0x90]
+
+    e_add_rror_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0x92]
+
+    e_add_rror_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0x95]
+
+    e_add_rror_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0x97]
+
+    e_add_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0x91]
+
+    e_add_rror_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0x90]
+
+    e_add_rror_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0x92]
+
+    e_add_rror_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0x95]
+
+    e_add_rror_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0x97]
+
+    e_add_rror_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0x91]
+
+    e_add_rror_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0x90]
+
+    e_add_rror_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0x92]
+
+    e_add_rror_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0x95]
+
+    e_add_rror_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0x97]
+
+    e_add_rror_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0x91]
+
+    e_add_rror_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0x90]
+
+    e_add_rrors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0x90]
+
+    e_add_rrors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0x92]
+
+    e_add_rrors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0x95]
+
+    e_add_rrors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0x97]
+
+    e_add_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0x91]
+
+    e_add_rrors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0x90]
+
+    e_add_rrors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0x92]
+
+    e_add_rrors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0x95]
+
+    e_add_rrors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0x97]
+
+    e_add_rrors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0x91]
+
+    e_add_rrors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0x90]
+
+    e_add_rrors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0x92]
+
+    e_add_rrors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0x95]
+
+    e_add_rrors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0x97]
+
+    e_add_rrors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0x91]
+
+    e_add_rrors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0x90]
+
+    e_sub_rror_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0xb0]
+
+    e_sub_rror_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0xb2]
+
+    e_sub_rror_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0xb5]
+
+    e_sub_rror_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0xb7]
+
+    e_sub_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xb1]
+
+    e_sub_rror_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0xb0]
+
+    e_sub_rror_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0xb2]
+
+    e_sub_rror_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0xb5]
+
+    e_sub_rror_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0xb7]
+
+    e_sub_rror_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0xb1]
+
+    e_sub_rror_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0xb0]
+
+    e_sub_rror_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0xb2]
+
+    e_sub_rror_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0xb5]
+
+    e_sub_rror_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0xb7]
+
+    e_sub_rror_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0xb1]
+
+    e_sub_rror_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0xb0]
+
+    e_sub_rrors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0xb0]
+
+    e_sub_rrors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0xb2]
+
+    e_sub_rrors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0xb5]
+
+    e_sub_rrors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0xb7]
+
+    e_sub_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xb1]
+
+    e_sub_rrors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0xb0]
+
+    e_sub_rrors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0xb2]
+
+    e_sub_rrors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0xb5]
+
+    e_sub_rrors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0xb7]
+
+    e_sub_rrors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0xb1]
+
+    e_sub_rrors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0xb0]
+
+    e_sub_rrors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0xb2]
+
+    e_sub_rrors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0xb5]
+
+    e_sub_rrors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0xb7]
+
+    e_sub_rrors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0xb1]
+
+    e_sub_rrors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0xb0]
+
+    e_adc_rror_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0xd0]
+
+    e_adc_rror_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0xd2]
+
+    e_adc_rror_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0xd5]
+
+    e_adc_rror_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0xd7]
+
+    e_adc_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xd1]
+
+    e_adc_rror_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0xd0]
+
+    e_adc_rror_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0xd2]
+
+    e_adc_rror_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0xd5]
+
+    e_adc_rror_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0xd7]
+
+    e_adc_rror_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0xd1]
+
+    e_adc_rror_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0xd0]
+
+    e_adc_rror_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0xd2]
+
+    e_adc_rror_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0xd5]
+
+    e_adc_rror_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0xd7]
+
+    e_adc_rror_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0xd1]
+
+    e_adc_rror_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0xd0]
+
+    e_adc_rrors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0xd0]
+
+    e_adc_rrors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0xd2]
+
+    e_adc_rrors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0xd5]
+
+    e_adc_rrors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0xd7]
+
+    e_adc_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xd1]
+
+    e_adc_rrors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0xd0]
+
+    e_adc_rrors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0xd2]
+
+    e_adc_rrors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0xd5]
+
+    e_adc_rrors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0xd7]
+
+    e_adc_rrors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0xd1]
+
+    e_adc_rrors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0xd0]
+
+    e_adc_rrors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0xd2]
+
+    e_adc_rrors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0xd5]
+
+    e_adc_rrors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0xd7]
+
+    e_adc_rrors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0xd1]
+
+    e_adc_rrors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0xd0]
+
+    e_sbc_rror_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x0c,0xf0]
+
+    e_sbc_rror_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x2c,0xf2]
+
+    e_sbc_rror_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x5d,0xf5]
+
+    e_sbc_rror_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x7d,0xf7]
+
+    e_sbc_rror r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x1c,0xf1]
+
+    e_sbc_rror_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x0c,0xf0]
+
+    e_sbc_rror_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x2c,0xf2]
+
+    e_sbc_rror_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x5d,0xf5]
+
+    e_sbc_rror_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x7d,0xf7]
+
+    e_sbc_rror_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x1c,0xf1]
+
+    e_sbc_rror_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x0c,0xf0]
+
+    e_sbc_rror_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x2c,0xf2]
+
+    e_sbc_rror_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x5d,0xf5]
+
+    e_sbc_rror_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x7d,0xf7]
+
+    e_sbc_rror_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x1c,0xf1]
+
+    e_sbc_rror_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x0c,0xf0]
+
+    e_sbc_rrors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x0c,0xf0]
+
+    e_sbc_rrors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x2c,0xf2]
+
+    e_sbc_rrors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x5d,0xf5]
+
+    e_sbc_rrors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x7d,0xf7]
+
+    e_sbc_rrors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x1c,0xf1]
+
+    e_sbc_rrors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x0c,0xf0]
+
+    e_sbc_rrors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x2c,0xf2]
+
+    e_sbc_rrors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x5d,0xf5]
+
+    e_sbc_rrors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x7d,0xf7]
+
+    e_sbc_rrors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x1c,0xf1]
+
+    e_sbc_rrors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x0c,0xf0]
+
+    e_sbc_rrors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x2c,0xf2]
+
+    e_sbc_rrors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x5d,0xf5]
+
+    e_sbc_rrors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x7d,0xf7]
+
+    e_sbc_rrors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x1c,0xf1]
+
+    e_sbc_rrors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x0c,0xf0]
+
+    e_rasr r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x00]
+
+    e_rasr r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x24,0x02]
+
+    e_rasr r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x54,0x05]
+
+    e_rasr r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x74,0x07]
+
+    e_rasr r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x14,0x01]
+
+    e_rasr r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x00]
+
+    e_rasr r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x24,0x02]
+
+    e_rasr r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x54,0x05]
+
+    e_rasr r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x74,0x07]
+
+    e_rasr r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x14,0x01]
+
+    e_rasr r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x00]
+
+    e_rasr r2, r2, r2
+# CHECK: encoding: [0x19,0x08,0x24,0x02]
+
+    e_rasr r5, r5, r5
+# CHECK: encoding: [0x19,0x14,0x54,0x05]
+
+    e_rasr r7, r7, r7
+# CHECK: encoding: [0x19,0x1c,0x74,0x07]
+
+    e_rasr r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x14,0x01]
+
+    e_rasr r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x00]
+
+    e_rasrs r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x00]
+
+    e_rasrs r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x24,0x02]
+
+    e_rasrs r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x54,0x05]
+
+    e_rasrs r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x74,0x07]
+
+    e_rasrs r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x14,0x01]
+
+    e_rasrs r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x00]
+
+    e_rasrs r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x24,0x02]
+
+    e_rasrs r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x54,0x05]
+
+    e_rasrs r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x74,0x07]
+
+    e_rasrs r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x14,0x01]
+
+    e_rasrs r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x00]
+
+    e_rasrs r2, r2, r2
+# CHECK: encoding: [0x19,0x0a,0x24,0x02]
+
+    e_rasrs r5, r5, r5
+# CHECK: encoding: [0x19,0x16,0x54,0x05]
+
+    e_rasrs r7, r7, r7
+# CHECK: encoding: [0x19,0x1e,0x74,0x07]
+
+    e_rasrs r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x14,0x01]
+
+    e_rasrs r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x00]
+
+    e_rasr_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x20]
+
+    e_rasr_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x22]
+
+    e_rasr_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x25]
+
+    e_rasr_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x27]
+
+    e_rasr_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x21]
+
+    e_rasr_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x20]
+
+    e_rasr_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x22]
+
+    e_rasr_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x25]
+
+    e_rasr_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x27]
+
+    e_rasr_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x21]
+
+    e_rasr_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x20]
+
+    e_rasr_and r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x22]
+
+    e_rasr_and r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x25]
+
+    e_rasr_and r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x27]
+
+    e_rasr_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x21]
+
+    e_rasr_and r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x20]
+
+    e_rasr_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x20]
+
+    e_rasr_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x22]
+
+    e_rasr_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x25]
+
+    e_rasr_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x27]
+
+    e_rasr_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x21]
+
+    e_rasr_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x20]
+
+    e_rasr_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x22]
+
+    e_rasr_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x25]
+
+    e_rasr_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x27]
+
+    e_rasr_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x21]
+
+    e_rasr_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x20]
+
+    e_rasr_ands r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x22]
+
+    e_rasr_ands r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x25]
+
+    e_rasr_ands r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x27]
+
+    e_rasr_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x21]
+
+    e_rasr_ands r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x20]
+
+    e_rasr_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x40]
+
+    e_rasr_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x42]
+
+    e_rasr_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x45]
+
+    e_rasr_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x47]
+
+    e_rasr_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x41]
+
+    e_rasr_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x40]
+
+    e_rasr_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x42]
+
+    e_rasr_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x45]
+
+    e_rasr_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x47]
+
+    e_rasr_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x41]
+
+    e_rasr_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x40]
+
+    e_rasr_or r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x42]
+
+    e_rasr_or r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x45]
+
+    e_rasr_or r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x47]
+
+    e_rasr_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x41]
+
+    e_rasr_or r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x40]
+
+    e_rasr_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x40]
+
+    e_rasr_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x42]
+
+    e_rasr_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x45]
+
+    e_rasr_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x47]
+
+    e_rasr_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x41]
+
+    e_rasr_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x40]
+
+    e_rasr_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x42]
+
+    e_rasr_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x45]
+
+    e_rasr_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x47]
+
+    e_rasr_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x41]
+
+    e_rasr_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x40]
+
+    e_rasr_ors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x42]
+
+    e_rasr_ors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x45]
+
+    e_rasr_ors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x47]
+
+    e_rasr_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x41]
+
+    e_rasr_ors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x40]
+
+    e_rasr_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x60]
+
+    e_rasr_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x62]
+
+    e_rasr_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x65]
+
+    e_rasr_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x67]
+
+    e_rasr_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x61]
+
+    e_rasr_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x60]
+
+    e_rasr_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x62]
+
+    e_rasr_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x65]
+
+    e_rasr_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x67]
+
+    e_rasr_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x61]
+
+    e_rasr_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x60]
+
+    e_rasr_xor r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x62]
+
+    e_rasr_xor r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x65]
+
+    e_rasr_xor r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x67]
+
+    e_rasr_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x61]
+
+    e_rasr_xor r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x60]
+
+    e_rasr_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x60]
+
+    e_rasr_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x62]
+
+    e_rasr_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x65]
+
+    e_rasr_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x67]
+
+    e_rasr_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x61]
+
+    e_rasr_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x60]
+
+    e_rasr_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x62]
+
+    e_rasr_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x65]
+
+    e_rasr_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x67]
+
+    e_rasr_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x61]
+
+    e_rasr_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x60]
+
+    e_rasr_xors r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x62]
+
+    e_rasr_xors r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x65]
+
+    e_rasr_xors r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x67]
+
+    e_rasr_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x61]
+
+    e_rasr_xors r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x60]
+
+    e_rasr_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x80]
+
+    e_rasr_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x82]
+
+    e_rasr_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x85]
+
+    e_rasr_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x87]
+
+    e_rasr_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x81]
+
+    e_rasr_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x80]
+
+    e_rasr_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x82]
+
+    e_rasr_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x85]
+
+    e_rasr_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x87]
+
+    e_rasr_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x81]
+
+    e_rasr_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x80]
+
+    e_rasr_add r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x82]
+
+    e_rasr_add r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x85]
+
+    e_rasr_add r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x87]
+
+    e_rasr_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x81]
+
+    e_rasr_add r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x80]
+
+    e_rasr_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x80]
+
+    e_rasr_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x82]
+
+    e_rasr_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x85]
+
+    e_rasr_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x87]
+
+    e_rasr_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x81]
+
+    e_rasr_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x80]
+
+    e_rasr_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x82]
+
+    e_rasr_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x85]
+
+    e_rasr_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x87]
+
+    e_rasr_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x81]
+
+    e_rasr_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x80]
+
+    e_rasr_adds r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x82]
+
+    e_rasr_adds r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x85]
+
+    e_rasr_adds r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x87]
+
+    e_rasr_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x81]
+
+    e_rasr_adds r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x80]
+
+    e_rasr_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xa0]
+
+    e_rasr_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xa2]
+
+    e_rasr_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xa5]
+
+    e_rasr_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xa7]
+
+    e_rasr_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xa1]
+
+    e_rasr_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xa0]
+
+    e_rasr_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xa2]
+
+    e_rasr_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xa5]
+
+    e_rasr_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xa7]
+
+    e_rasr_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xa1]
+
+    e_rasr_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xa0]
+
+    e_rasr_sub r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xa2]
+
+    e_rasr_sub r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xa5]
+
+    e_rasr_sub r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xa7]
+
+    e_rasr_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xa1]
+
+    e_rasr_sub r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xa0]
+
+    e_rasr_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xa0]
+
+    e_rasr_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xa2]
+
+    e_rasr_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xa5]
+
+    e_rasr_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xa7]
+
+    e_rasr_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xa1]
+
+    e_rasr_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xa0]
+
+    e_rasr_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xa2]
+
+    e_rasr_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xa5]
+
+    e_rasr_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xa7]
+
+    e_rasr_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xa1]
+
+    e_rasr_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xa0]
+
+    e_rasr_subs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xa2]
+
+    e_rasr_subs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xa5]
+
+    e_rasr_subs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xa7]
+
+    e_rasr_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xa1]
+
+    e_rasr_subs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xa0]
+
+    e_rasr_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xc0]
+
+    e_rasr_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xc2]
+
+    e_rasr_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xc5]
+
+    e_rasr_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xc7]
+
+    e_rasr_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xc1]
+
+    e_rasr_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xc0]
+
+    e_rasr_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xc2]
+
+    e_rasr_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xc5]
+
+    e_rasr_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xc7]
+
+    e_rasr_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xc1]
+
+    e_rasr_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xc0]
+
+    e_rasr_adc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xc2]
+
+    e_rasr_adc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xc5]
+
+    e_rasr_adc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xc7]
+
+    e_rasr_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xc1]
+
+    e_rasr_adc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xc0]
+
+    e_rasr_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xc0]
+
+    e_rasr_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xc2]
+
+    e_rasr_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xc5]
+
+    e_rasr_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xc7]
+
+    e_rasr_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xc1]
+
+    e_rasr_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xc0]
+
+    e_rasr_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xc2]
+
+    e_rasr_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xc5]
+
+    e_rasr_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xc7]
+
+    e_rasr_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xc1]
+
+    e_rasr_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xc0]
+
+    e_rasr_adcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xc2]
+
+    e_rasr_adcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xc5]
+
+    e_rasr_adcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xc7]
+
+    e_rasr_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xc1]
+
+    e_rasr_adcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xc0]
+
+    e_rasr_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xe0]
+
+    e_rasr_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xe2]
+
+    e_rasr_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xe5]
+
+    e_rasr_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xe7]
+
+    e_rasr_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xe1]
+
+    e_rasr_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xe0]
+
+    e_rasr_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xe2]
+
+    e_rasr_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xe5]
+
+    e_rasr_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xe7]
+
+    e_rasr_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xe1]
+
+    e_rasr_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xe0]
+
+    e_rasr_sbc r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xe2]
+
+    e_rasr_sbc r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xe5]
+
+    e_rasr_sbc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xe7]
+
+    e_rasr_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xe1]
+
+    e_rasr_sbc r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xe0]
+
+    e_rasr_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xe0]
+
+    e_rasr_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xe2]
+
+    e_rasr_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xe5]
+
+    e_rasr_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xe7]
+
+    e_rasr_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xe1]
+
+    e_rasr_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xe0]
+
+    e_rasr_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xe2]
+
+    e_rasr_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xe5]
+
+    e_rasr_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xe7]
+
+    e_rasr_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xe1]
+
+    e_rasr_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xe0]
+
+    e_rasr_sbcs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xe2]
+
+    e_rasr_sbcs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xe5]
+
+    e_rasr_sbcs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xe7]
+
+    e_rasr_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xe1]
+
+    e_rasr_sbcs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xe0]
+
+    e_rasr_ze r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x00]
+
+    e_rasr_nz r2, r2, r2
+# CHECK: encoding: [0x59,0x08,0x24,0x02]
+
+    e_rasr_po r5, r5, r5
+# CHECK: encoding: [0x79,0x14,0x54,0x05]
+
+    e_rasr_ne r7, r7, r7
+# CHECK: encoding: [0x99,0x1c,0x74,0x07]
+
+    e_rasr r1, r1, r1
+# CHECK: encoding: [0x19,0x04,0x14,0x01]
+
+    e_rasr_az r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x00]
+
+    e_rasr_zb r2, r2, r2
+# CHECK: encoding: [0xd9,0x08,0x24,0x02]
+
+    e_rasr_ca r5, r5, r5
+# CHECK: encoding: [0xf9,0x14,0x54,0x05]
+
+    e_rasr_nc r7, r7, r7
+# CHECK: encoding: [0x19,0x1d,0x74,0x07]
+
+    e_rasr_cz r1, r1, r1
+# CHECK: encoding: [0x39,0x05,0x14,0x01]
+
+    e_rasr_spo r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x00]
+
+    e_rasr_sne r2, r2, r2
+# CHECK: encoding: [0x79,0x09,0x24,0x02]
+
+    e_rasr_nbs r5, r5, r5
+# CHECK: encoding: [0x99,0x15,0x54,0x05]
+
+    e_rasr_nex r7, r7, r7
+# CHECK: encoding: [0xb9,0x1d,0x74,0x07]
+
+    e_rasr_bs r1, r1, r1
+# CHECK: encoding: [0xd9,0x05,0x14,0x01]
+
+    e_rasr_ex r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x00]
+
+    e_rasrs_ze r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x00]
+
+    e_rasrs_nz r2, r2, r2
+# CHECK: encoding: [0x59,0x0a,0x24,0x02]
+
+    e_rasrs_po r5, r5, r5
+# CHECK: encoding: [0x79,0x16,0x54,0x05]
+
+    e_rasrs_ne r7, r7, r7
+# CHECK: encoding: [0x99,0x1e,0x74,0x07]
+
+    e_rasrs r1, r1, r1
+# CHECK: encoding: [0x19,0x06,0x14,0x01]
+
+    e_rasrs_az r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x00]
+
+    e_rasrs_zb r2, r2, r2
+# CHECK: encoding: [0xd9,0x0a,0x24,0x02]
+
+    e_rasrs_ca r5, r5, r5
+# CHECK: encoding: [0xf9,0x16,0x54,0x05]
+
+    e_rasrs_nc r7, r7, r7
+# CHECK: encoding: [0x19,0x1f,0x74,0x07]
+
+    e_rasrs_cz r1, r1, r1
+# CHECK: encoding: [0x39,0x07,0x14,0x01]
+
+    e_rasrs_spo r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x00]
+
+    e_rasrs_sne r2, r2, r2
+# CHECK: encoding: [0x79,0x0b,0x24,0x02]
+
+    e_rasrs_nbs r5, r5, r5
+# CHECK: encoding: [0x99,0x17,0x54,0x05]
+
+    e_rasrs_nex r7, r7, r7
+# CHECK: encoding: [0xb9,0x1f,0x74,0x07]
+
+    e_rasrs_bs r1, r1, r1
+# CHECK: encoding: [0xd9,0x07,0x14,0x01]
+
+    e_rasrs_ex r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x00]
+
+    e_rasr_and_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x20]
+
+    e_rasr_and_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0x22]
+
+    e_rasr_and_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0x25]
+
+    e_rasr_and_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0x27]
+
+    e_rasr_and r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x21]
+
+    e_rasr_and_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x20]
+
+    e_rasr_and_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0x22]
+
+    e_rasr_and_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0x25]
+
+    e_rasr_and_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0x27]
+
+    e_rasr_and_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0x21]
+
+    e_rasr_and_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x20]
+
+    e_rasr_and_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0x22]
+
+    e_rasr_and_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0x25]
+
+    e_rasr_and_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0x27]
+
+    e_rasr_and_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0x21]
+
+    e_rasr_and_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x20]
+
+    e_rasr_ands_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x20]
+
+    e_rasr_ands_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0x22]
+
+    e_rasr_ands_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0x25]
+
+    e_rasr_ands_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0x27]
+
+    e_rasr_ands r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x21]
+
+    e_rasr_ands_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x20]
+
+    e_rasr_ands_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0x22]
+
+    e_rasr_ands_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0x25]
+
+    e_rasr_ands_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0x27]
+
+    e_rasr_ands_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0x21]
+
+    e_rasr_ands_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x20]
+
+    e_rasr_ands_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0x22]
+
+    e_rasr_ands_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0x25]
+
+    e_rasr_ands_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0x27]
+
+    e_rasr_ands_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0x21]
+
+    e_rasr_ands_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x20]
+
+    e_rasr_or_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x40]
+
+    e_rasr_or_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0x42]
+
+    e_rasr_or_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0x45]
+
+    e_rasr_or_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0x47]
+
+    e_rasr_or r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x41]
+
+    e_rasr_or_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x40]
+
+    e_rasr_or_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0x42]
+
+    e_rasr_or_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0x45]
+
+    e_rasr_or_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0x47]
+
+    e_rasr_or_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0x41]
+
+    e_rasr_or_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x40]
+
+    e_rasr_or_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0x42]
+
+    e_rasr_or_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0x45]
+
+    e_rasr_or_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0x47]
+
+    e_rasr_or_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0x41]
+
+    e_rasr_or_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x40]
+
+    e_rasr_ors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x40]
+
+    e_rasr_ors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0x42]
+
+    e_rasr_ors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0x45]
+
+    e_rasr_ors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0x47]
+
+    e_rasr_ors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x41]
+
+    e_rasr_ors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x40]
+
+    e_rasr_ors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0x42]
+
+    e_rasr_ors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0x45]
+
+    e_rasr_ors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0x47]
+
+    e_rasr_ors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0x41]
+
+    e_rasr_ors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x40]
+
+    e_rasr_ors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0x42]
+
+    e_rasr_ors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0x45]
+
+    e_rasr_ors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0x47]
+
+    e_rasr_ors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0x41]
+
+    e_rasr_ors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x40]
+
+    e_rasr_xor_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x60]
+
+    e_rasr_xor_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0x62]
+
+    e_rasr_xor_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0x65]
+
+    e_rasr_xor_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0x67]
+
+    e_rasr_xor r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x61]
+
+    e_rasr_xor_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x60]
+
+    e_rasr_xor_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0x62]
+
+    e_rasr_xor_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0x65]
+
+    e_rasr_xor_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0x67]
+
+    e_rasr_xor_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0x61]
+
+    e_rasr_xor_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x60]
+
+    e_rasr_xor_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0x62]
+
+    e_rasr_xor_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0x65]
+
+    e_rasr_xor_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0x67]
+
+    e_rasr_xor_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0x61]
+
+    e_rasr_xor_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x60]
+
+    e_rasr_xors_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x60]
+
+    e_rasr_xors_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0x62]
+
+    e_rasr_xors_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0x65]
+
+    e_rasr_xors_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0x67]
+
+    e_rasr_xors r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x61]
+
+    e_rasr_xors_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x60]
+
+    e_rasr_xors_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0x62]
+
+    e_rasr_xors_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0x65]
+
+    e_rasr_xors_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0x67]
+
+    e_rasr_xors_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0x61]
+
+    e_rasr_xors_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x60]
+
+    e_rasr_xors_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0x62]
+
+    e_rasr_xors_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0x65]
+
+    e_rasr_xors_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0x67]
+
+    e_rasr_xors_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0x61]
+
+    e_rasr_xors_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x60]
+
+    e_rasr_add_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x80]
+
+    e_rasr_add_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0x82]
+
+    e_rasr_add_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0x85]
+
+    e_rasr_add_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0x87]
+
+    e_rasr_add r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x81]
+
+    e_rasr_add_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x80]
+
+    e_rasr_add_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0x82]
+
+    e_rasr_add_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0x85]
+
+    e_rasr_add_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0x87]
+
+    e_rasr_add_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0x81]
+
+    e_rasr_add_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x80]
+
+    e_rasr_add_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0x82]
+
+    e_rasr_add_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0x85]
+
+    e_rasr_add_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0x87]
+
+    e_rasr_add_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0x81]
+
+    e_rasr_add_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x80]
+
+    e_rasr_adds_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x80]
+
+    e_rasr_adds_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0x82]
+
+    e_rasr_adds_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0x85]
+
+    e_rasr_adds_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0x87]
+
+    e_rasr_adds r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x81]
+
+    e_rasr_adds_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x80]
+
+    e_rasr_adds_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0x82]
+
+    e_rasr_adds_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0x85]
+
+    e_rasr_adds_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0x87]
+
+    e_rasr_adds_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0x81]
+
+    e_rasr_adds_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x80]
+
+    e_rasr_adds_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0x82]
+
+    e_rasr_adds_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0x85]
+
+    e_rasr_adds_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0x87]
+
+    e_rasr_adds_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0x81]
+
+    e_rasr_adds_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x80]
+
+    e_rasr_sub_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0xa0]
+
+    e_rasr_sub_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0xa2]
+
+    e_rasr_sub_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0xa5]
+
+    e_rasr_sub_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0xa7]
+
+    e_rasr_sub r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xa1]
+
+    e_rasr_sub_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0xa0]
+
+    e_rasr_sub_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0xa2]
+
+    e_rasr_sub_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0xa5]
+
+    e_rasr_sub_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0xa7]
+
+    e_rasr_sub_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0xa1]
+
+    e_rasr_sub_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0xa0]
+
+    e_rasr_sub_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0xa2]
+
+    e_rasr_sub_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0xa5]
+
+    e_rasr_sub_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0xa7]
+
+    e_rasr_sub_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0xa1]
+
+    e_rasr_sub_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0xa0]
+
+    e_rasr_subs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0xa0]
+
+    e_rasr_subs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0xa2]
+
+    e_rasr_subs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0xa5]
+
+    e_rasr_subs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0xa7]
+
+    e_rasr_subs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xa1]
+
+    e_rasr_subs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0xa0]
+
+    e_rasr_subs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0xa2]
+
+    e_rasr_subs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0xa5]
+
+    e_rasr_subs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0xa7]
+
+    e_rasr_subs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0xa1]
+
+    e_rasr_subs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0xa0]
+
+    e_rasr_subs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0xa2]
+
+    e_rasr_subs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0xa5]
+
+    e_rasr_subs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0xa7]
+
+    e_rasr_subs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0xa1]
+
+    e_rasr_subs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0xa0]
+
+    e_rasr_adc_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0xc0]
+
+    e_rasr_adc_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0xc2]
+
+    e_rasr_adc_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0xc5]
+
+    e_rasr_adc_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0xc7]
+
+    e_rasr_adc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xc1]
+
+    e_rasr_adc_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0xc0]
+
+    e_rasr_adc_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0xc2]
+
+    e_rasr_adc_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0xc5]
+
+    e_rasr_adc_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0xc7]
+
+    e_rasr_adc_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0xc1]
+
+    e_rasr_adc_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0xc0]
+
+    e_rasr_adc_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0xc2]
+
+    e_rasr_adc_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0xc5]
+
+    e_rasr_adc_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0xc7]
+
+    e_rasr_adc_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0xc1]
+
+    e_rasr_adc_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0xc0]
+
+    e_rasr_adcs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0xc0]
+
+    e_rasr_adcs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0xc2]
+
+    e_rasr_adcs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0xc5]
+
+    e_rasr_adcs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0xc7]
+
+    e_rasr_adcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xc1]
+
+    e_rasr_adcs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0xc0]
+
+    e_rasr_adcs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0xc2]
+
+    e_rasr_adcs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0xc5]
+
+    e_rasr_adcs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0xc7]
+
+    e_rasr_adcs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0xc1]
+
+    e_rasr_adcs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0xc0]
+
+    e_rasr_adcs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0xc2]
+
+    e_rasr_adcs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0xc5]
+
+    e_rasr_adcs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0xc7]
+
+    e_rasr_adcs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0xc1]
+
+    e_rasr_adcs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0xc0]
+
+    e_rasr_sbc_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0xe0]
+
+    e_rasr_sbc_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0xe2]
+
+    e_rasr_sbc_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0xe5]
+
+    e_rasr_sbc_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0xe7]
+
+    e_rasr_sbc r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xe1]
+
+    e_rasr_sbc_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0xe0]
+
+    e_rasr_sbc_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0xe2]
+
+    e_rasr_sbc_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0xe5]
+
+    e_rasr_sbc_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0xe7]
+
+    e_rasr_sbc_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0xe1]
+
+    e_rasr_sbc_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0xe0]
+
+    e_rasr_sbc_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0xe2]
+
+    e_rasr_sbc_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0xe5]
+
+    e_rasr_sbc_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0xe7]
+
+    e_rasr_sbc_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0xe1]
+
+    e_rasr_sbc_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0xe0]
+
+    e_rasr_sbcs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0xe0]
+
+    e_rasr_sbcs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0xe2]
+
+    e_rasr_sbcs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0xe5]
+
+    e_rasr_sbcs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0xe7]
+
+    e_rasr_sbcs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xe1]
+
+    e_rasr_sbcs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0xe0]
+
+    e_rasr_sbcs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0xe2]
+
+    e_rasr_sbcs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0xe5]
+
+    e_rasr_sbcs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0xe7]
+
+    e_rasr_sbcs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0xe1]
+
+    e_rasr_sbcs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0xe0]
+
+    e_rasr_sbcs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0xe2]
+
+    e_rasr_sbcs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0xe5]
+
+    e_rasr_sbcs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0xe7]
+
+    e_rasr_sbcs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0xe1]
+
+    e_rasr_sbcs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0xe0]
+
+    e_and_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x30]
+
+    e_and_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x32]
+
+    e_and_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x35]
+
+    e_and_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x37]
+
+    e_and_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x31]
+
+    e_and_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x30]
+
+    e_and_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x32]
+
+    e_and_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x35]
+
+    e_and_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x37]
+
+    e_and_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x31]
+
+    e_and_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x30]
+
+    e_and_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x32]
+
+    e_and_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x35]
+
+    e_and_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x37]
+
+    e_and_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x31]
+
+    e_and_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x30]
+
+    e_and_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x30]
+
+    e_and_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x32]
+
+    e_and_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x35]
+
+    e_and_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x37]
+
+    e_and_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x31]
+
+    e_and_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x30]
+
+    e_and_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x32]
+
+    e_and_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x35]
+
+    e_and_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x37]
+
+    e_and_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x31]
+
+    e_and_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x30]
+
+    e_and_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x32]
+
+    e_and_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x35]
+
+    e_and_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x37]
+
+    e_and_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x31]
+
+    e_and_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x30]
+
+    e_or_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x50]
+
+    e_or_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x52]
+
+    e_or_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x55]
+
+    e_or_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x57]
+
+    e_or_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x51]
+
+    e_or_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x50]
+
+    e_or_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x52]
+
+    e_or_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x55]
+
+    e_or_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x57]
+
+    e_or_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x51]
+
+    e_or_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x50]
+
+    e_or_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x52]
+
+    e_or_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x55]
+
+    e_or_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x57]
+
+    e_or_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x51]
+
+    e_or_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x50]
+
+    e_or_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x50]
+
+    e_or_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x52]
+
+    e_or_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x55]
+
+    e_or_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x57]
+
+    e_or_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x51]
+
+    e_or_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x50]
+
+    e_or_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x52]
+
+    e_or_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x55]
+
+    e_or_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x57]
+
+    e_or_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x51]
+
+    e_or_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x50]
+
+    e_or_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x52]
+
+    e_or_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x55]
+
+    e_or_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x57]
+
+    e_or_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x51]
+
+    e_or_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x50]
+
+    e_xor_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x70]
+
+    e_xor_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x72]
+
+    e_xor_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x75]
+
+    e_xor_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x77]
+
+    e_xor_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x71]
+
+    e_xor_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x70]
+
+    e_xor_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x72]
+
+    e_xor_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x75]
+
+    e_xor_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x77]
+
+    e_xor_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x71]
+
+    e_xor_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x70]
+
+    e_xor_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x72]
+
+    e_xor_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x75]
+
+    e_xor_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x77]
+
+    e_xor_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x71]
+
+    e_xor_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x70]
+
+    e_xor_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x70]
+
+    e_xor_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x72]
+
+    e_xor_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x75]
+
+    e_xor_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x77]
+
+    e_xor_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x71]
+
+    e_xor_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x70]
+
+    e_xor_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x72]
+
+    e_xor_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x75]
+
+    e_xor_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x77]
+
+    e_xor_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x71]
+
+    e_xor_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x70]
+
+    e_xor_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x72]
+
+    e_xor_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x75]
+
+    e_xor_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x77]
+
+    e_xor_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x71]
+
+    e_xor_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x70]
+
+    e_add_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x90]
+
+    e_add_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x92]
+
+    e_add_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x95]
+
+    e_add_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x97]
+
+    e_add_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x91]
+
+    e_add_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x90]
+
+    e_add_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x92]
+
+    e_add_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x95]
+
+    e_add_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x97]
+
+    e_add_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x91]
+
+    e_add_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x90]
+
+    e_add_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0x92]
+
+    e_add_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0x95]
+
+    e_add_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0x97]
+
+    e_add_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x91]
+
+    e_add_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0x90]
+
+    e_add_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x90]
+
+    e_add_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x92]
+
+    e_add_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x95]
+
+    e_add_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x97]
+
+    e_add_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x91]
+
+    e_add_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x90]
+
+    e_add_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x92]
+
+    e_add_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x95]
+
+    e_add_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x97]
+
+    e_add_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x91]
+
+    e_add_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x90]
+
+    e_add_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0x92]
+
+    e_add_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0x95]
+
+    e_add_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0x97]
+
+    e_add_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x91]
+
+    e_add_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0x90]
+
+    e_sub_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xb0]
+
+    e_sub_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xb2]
+
+    e_sub_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xb5]
+
+    e_sub_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xb7]
+
+    e_sub_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xb1]
+
+    e_sub_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xb0]
+
+    e_sub_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xb2]
+
+    e_sub_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xb5]
+
+    e_sub_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xb7]
+
+    e_sub_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xb1]
+
+    e_sub_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xb0]
+
+    e_sub_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xb2]
+
+    e_sub_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xb5]
+
+    e_sub_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xb7]
+
+    e_sub_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xb1]
+
+    e_sub_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xb0]
+
+    e_sub_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xb0]
+
+    e_sub_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xb2]
+
+    e_sub_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xb5]
+
+    e_sub_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xb7]
+
+    e_sub_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xb1]
+
+    e_sub_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xb0]
+
+    e_sub_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xb2]
+
+    e_sub_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xb5]
+
+    e_sub_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xb7]
+
+    e_sub_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xb1]
+
+    e_sub_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xb0]
+
+    e_sub_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xb2]
+
+    e_sub_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xb5]
+
+    e_sub_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xb7]
+
+    e_sub_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xb1]
+
+    e_sub_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xb0]
+
+    e_adc_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xd0]
+
+    e_adc_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xd2]
+
+    e_adc_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xd5]
+
+    e_adc_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xd7]
+
+    e_adc_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xd1]
+
+    e_adc_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xd0]
+
+    e_adc_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xd2]
+
+    e_adc_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xd5]
+
+    e_adc_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xd7]
+
+    e_adc_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xd1]
+
+    e_adc_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xd0]
+
+    e_adc_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xd2]
+
+    e_adc_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xd5]
+
+    e_adc_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xd7]
+
+    e_adc_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xd1]
+
+    e_adc_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xd0]
+
+    e_adc_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xd0]
+
+    e_adc_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xd2]
+
+    e_adc_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xd5]
+
+    e_adc_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xd7]
+
+    e_adc_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xd1]
+
+    e_adc_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xd0]
+
+    e_adc_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xd2]
+
+    e_adc_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xd5]
+
+    e_adc_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xd7]
+
+    e_adc_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xd1]
+
+    e_adc_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xd0]
+
+    e_adc_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xd2]
+
+    e_adc_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xd5]
+
+    e_adc_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xd7]
+
+    e_adc_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xd1]
+
+    e_adc_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xd0]
+
+    e_sbc_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xf0]
+
+    e_sbc_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xf2]
+
+    e_sbc_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xf5]
+
+    e_sbc_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xf7]
+
+    e_sbc_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xf1]
+
+    e_sbc_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xf0]
+
+    e_sbc_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xf2]
+
+    e_sbc_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xf5]
+
+    e_sbc_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xf7]
+
+    e_sbc_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xf1]
+
+    e_sbc_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xf0]
+
+    e_sbc_rasr r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x88,0x24,0xf2]
+
+    e_sbc_rasr r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x54,0x55,0xf5]
+
+    e_sbc_rasr r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdc,0x75,0xf7]
+
+    e_sbc_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xf1]
+
+    e_sbc_rasr r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x00,0x04,0xf0]
+
+    e_sbc_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xf0]
+
+    e_sbc_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xf2]
+
+    e_sbc_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xf5]
+
+    e_sbc_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xf7]
+
+    e_sbc_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xf1]
+
+    e_sbc_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xf0]
+
+    e_sbc_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xf2]
+
+    e_sbc_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xf5]
+
+    e_sbc_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xf7]
+
+    e_sbc_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xf1]
+
+    e_sbc_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xf0]
+
+    e_sbc_rasrs r2, r2, r2, r2
+# CHECK: encoding: [0x19,0x8a,0x24,0xf2]
+
+    e_sbc_rasrs r5, r5, r5, r5
+# CHECK: encoding: [0x19,0x56,0x55,0xf5]
+
+    e_sbc_rasrs r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xde,0x75,0xf7]
+
+    e_sbc_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xf1]
+
+    e_sbc_rasrs r0, r0, r0, r0
+# CHECK: encoding: [0x19,0x02,0x04,0xf0]
+
+    e_and_rasr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x30]
+
+    e_and_rasr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0x32]
+
+    e_and_rasr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0x35]
+
+    e_and_rasr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0x37]
+
+    e_and_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x31]
+
+    e_and_rasr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x30]
+
+    e_and_rasr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0x32]
+
+    e_and_rasr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0x35]
+
+    e_and_rasr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0x37]
+
+    e_and_rasr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0x31]
+
+    e_and_rasr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x30]
+
+    e_and_rasr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0x32]
+
+    e_and_rasr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0x35]
+
+    e_and_rasr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0x37]
+
+    e_and_rasr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0x31]
+
+    e_and_rasr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x30]
+
+    e_and_rasrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x30]
+
+    e_and_rasrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0x32]
+
+    e_and_rasrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0x35]
+
+    e_and_rasrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0x37]
+
+    e_and_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x31]
+
+    e_and_rasrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x30]
+
+    e_and_rasrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0x32]
+
+    e_and_rasrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0x35]
+
+    e_and_rasrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0x37]
+
+    e_and_rasrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0x31]
+
+    e_and_rasrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x30]
+
+    e_and_rasrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0x32]
+
+    e_and_rasrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0x35]
+
+    e_and_rasrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0x37]
+
+    e_and_rasrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0x31]
+
+    e_and_rasrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x30]
+
+    e_or_rasr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x50]
+
+    e_or_rasr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0x52]
+
+    e_or_rasr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0x55]
+
+    e_or_rasr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0x57]
+
+    e_or_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x51]
+
+    e_or_rasr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x50]
+
+    e_or_rasr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0x52]
+
+    e_or_rasr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0x55]
+
+    e_or_rasr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0x57]
+
+    e_or_rasr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0x51]
+
+    e_or_rasr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x50]
+
+    e_or_rasr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0x52]
+
+    e_or_rasr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0x55]
+
+    e_or_rasr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0x57]
+
+    e_or_rasr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0x51]
+
+    e_or_rasr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x50]
+
+    e_or_rasrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x50]
+
+    e_or_rasrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0x52]
+
+    e_or_rasrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0x55]
+
+    e_or_rasrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0x57]
+
+    e_or_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x51]
+
+    e_or_rasrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x50]
+
+    e_or_rasrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0x52]
+
+    e_or_rasrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0x55]
+
+    e_or_rasrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0x57]
+
+    e_or_rasrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0x51]
+
+    e_or_rasrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x50]
+
+    e_or_rasrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0x52]
+
+    e_or_rasrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0x55]
+
+    e_or_rasrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0x57]
+
+    e_or_rasrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0x51]
+
+    e_or_rasrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x50]
+
+    e_xor_rasr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x70]
+
+    e_xor_rasr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0x72]
+
+    e_xor_rasr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0x75]
+
+    e_xor_rasr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0x77]
+
+    e_xor_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x71]
+
+    e_xor_rasr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x70]
+
+    e_xor_rasr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0x72]
+
+    e_xor_rasr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0x75]
+
+    e_xor_rasr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0x77]
+
+    e_xor_rasr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0x71]
+
+    e_xor_rasr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x70]
+
+    e_xor_rasr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0x72]
+
+    e_xor_rasr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0x75]
+
+    e_xor_rasr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0x77]
+
+    e_xor_rasr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0x71]
+
+    e_xor_rasr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x70]
+
+    e_xor_rasrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x70]
+
+    e_xor_rasrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0x72]
+
+    e_xor_rasrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0x75]
+
+    e_xor_rasrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0x77]
+
+    e_xor_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x71]
+
+    e_xor_rasrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x70]
+
+    e_xor_rasrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0x72]
+
+    e_xor_rasrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0x75]
+
+    e_xor_rasrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0x77]
+
+    e_xor_rasrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0x71]
+
+    e_xor_rasrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x70]
+
+    e_xor_rasrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0x72]
+
+    e_xor_rasrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0x75]
+
+    e_xor_rasrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0x77]
+
+    e_xor_rasrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0x71]
+
+    e_xor_rasrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x70]
+
+    e_add_rasr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0x90]
+
+    e_add_rasr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0x92]
+
+    e_add_rasr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0x95]
+
+    e_add_rasr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0x97]
+
+    e_add_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0x91]
+
+    e_add_rasr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0x90]
+
+    e_add_rasr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0x92]
+
+    e_add_rasr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0x95]
+
+    e_add_rasr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0x97]
+
+    e_add_rasr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0x91]
+
+    e_add_rasr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0x90]
+
+    e_add_rasr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0x92]
+
+    e_add_rasr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0x95]
+
+    e_add_rasr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0x97]
+
+    e_add_rasr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0x91]
+
+    e_add_rasr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0x90]
+
+    e_add_rasrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0x90]
+
+    e_add_rasrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0x92]
+
+    e_add_rasrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0x95]
+
+    e_add_rasrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0x97]
+
+    e_add_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0x91]
+
+    e_add_rasrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0x90]
+
+    e_add_rasrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0x92]
+
+    e_add_rasrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0x95]
+
+    e_add_rasrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0x97]
+
+    e_add_rasrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0x91]
+
+    e_add_rasrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0x90]
+
+    e_add_rasrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0x92]
+
+    e_add_rasrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0x95]
+
+    e_add_rasrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0x97]
+
+    e_add_rasrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0x91]
+
+    e_add_rasrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0x90]
+
+    e_sub_rasr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0xb0]
+
+    e_sub_rasr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0xb2]
+
+    e_sub_rasr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0xb5]
+
+    e_sub_rasr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0xb7]
+
+    e_sub_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xb1]
+
+    e_sub_rasr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0xb0]
+
+    e_sub_rasr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0xb2]
+
+    e_sub_rasr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0xb5]
+
+    e_sub_rasr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0xb7]
+
+    e_sub_rasr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0xb1]
+
+    e_sub_rasr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0xb0]
+
+    e_sub_rasr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0xb2]
+
+    e_sub_rasr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0xb5]
+
+    e_sub_rasr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0xb7]
+
+    e_sub_rasr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0xb1]
+
+    e_sub_rasr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0xb0]
+
+    e_sub_rasrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0xb0]
+
+    e_sub_rasrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0xb2]
+
+    e_sub_rasrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0xb5]
+
+    e_sub_rasrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0xb7]
+
+    e_sub_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xb1]
+
+    e_sub_rasrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0xb0]
+
+    e_sub_rasrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0xb2]
+
+    e_sub_rasrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0xb5]
+
+    e_sub_rasrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0xb7]
+
+    e_sub_rasrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0xb1]
+
+    e_sub_rasrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0xb0]
+
+    e_sub_rasrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0xb2]
+
+    e_sub_rasrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0xb5]
+
+    e_sub_rasrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0xb7]
+
+    e_sub_rasrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0xb1]
+
+    e_sub_rasrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0xb0]
+
+    e_adc_rasr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0xd0]
+
+    e_adc_rasr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0xd2]
+
+    e_adc_rasr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0xd5]
+
+    e_adc_rasr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0xd7]
+
+    e_adc_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xd1]
+
+    e_adc_rasr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0xd0]
+
+    e_adc_rasr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0xd2]
+
+    e_adc_rasr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0xd5]
+
+    e_adc_rasr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0xd7]
+
+    e_adc_rasr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0xd1]
+
+    e_adc_rasr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0xd0]
+
+    e_adc_rasr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0xd2]
+
+    e_adc_rasr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0xd5]
+
+    e_adc_rasr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0xd7]
+
+    e_adc_rasr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0xd1]
+
+    e_adc_rasr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0xd0]
+
+    e_adc_rasrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0xd0]
+
+    e_adc_rasrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0xd2]
+
+    e_adc_rasrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0xd5]
+
+    e_adc_rasrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0xd7]
+
+    e_adc_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xd1]
+
+    e_adc_rasrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0xd0]
+
+    e_adc_rasrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0xd2]
+
+    e_adc_rasrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0xd5]
+
+    e_adc_rasrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0xd7]
+
+    e_adc_rasrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0xd1]
+
+    e_adc_rasrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0xd0]
+
+    e_adc_rasrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0xd2]
+
+    e_adc_rasrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0xd5]
+
+    e_adc_rasrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0xd7]
+
+    e_adc_rasrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0xd1]
+
+    e_adc_rasrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0xd0]
+
+    e_sbc_rasr_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x00,0x04,0xf0]
+
+    e_sbc_rasr_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x88,0x24,0xf2]
+
+    e_sbc_rasr_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x54,0x55,0xf5]
+
+    e_sbc_rasr_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xdc,0x75,0xf7]
+
+    e_sbc_rasr r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x44,0x14,0xf1]
+
+    e_sbc_rasr_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x00,0x04,0xf0]
+
+    e_sbc_rasr_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x88,0x24,0xf2]
+
+    e_sbc_rasr_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x54,0x55,0xf5]
+
+    e_sbc_rasr_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdd,0x75,0xf7]
+
+    e_sbc_rasr_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x45,0x14,0xf1]
+
+    e_sbc_rasr_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x01,0x04,0xf0]
+
+    e_sbc_rasr_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x89,0x24,0xf2]
+
+    e_sbc_rasr_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x55,0x55,0xf5]
+
+    e_sbc_rasr_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdd,0x75,0xf7]
+
+    e_sbc_rasr_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x45,0x14,0xf1]
+
+    e_sbc_rasr_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x01,0x04,0xf0]
+
+    e_sbc_rasrs_ze r0, r0, r0, r0
+# CHECK: encoding: [0x39,0x02,0x04,0xf0]
+
+    e_sbc_rasrs_nz r2, r2, r2, r2
+# CHECK: encoding: [0x59,0x8a,0x24,0xf2]
+
+    e_sbc_rasrs_po r5, r5, r5, r5
+# CHECK: encoding: [0x79,0x56,0x55,0xf5]
+
+    e_sbc_rasrs_ne r7, r7, r7, r7
+# CHECK: encoding: [0x99,0xde,0x75,0xf7]
+
+    e_sbc_rasrs r1, r1, r1, r1
+# CHECK: encoding: [0x19,0x46,0x14,0xf1]
+
+    e_sbc_rasrs_az r0, r0, r0, r0
+# CHECK: encoding: [0xb9,0x02,0x04,0xf0]
+
+    e_sbc_rasrs_zb r2, r2, r2, r2
+# CHECK: encoding: [0xd9,0x8a,0x24,0xf2]
+
+    e_sbc_rasrs_ca r5, r5, r5, r5
+# CHECK: encoding: [0xf9,0x56,0x55,0xf5]
+
+    e_sbc_rasrs_nc r7, r7, r7, r7
+# CHECK: encoding: [0x19,0xdf,0x75,0xf7]
+
+    e_sbc_rasrs_cz r1, r1, r1, r1
+# CHECK: encoding: [0x39,0x47,0x14,0xf1]
+
+    e_sbc_rasrs_spo r0, r0, r0, r0
+# CHECK: encoding: [0x59,0x03,0x04,0xf0]
+
+    e_sbc_rasrs_sne r2, r2, r2, r2
+# CHECK: encoding: [0x79,0x8b,0x24,0xf2]
+
+    e_sbc_rasrs_nbs r5, r5, r5, r5
+# CHECK: encoding: [0x99,0x57,0x55,0xf5]
+
+    e_sbc_rasrs_nex r7, r7, r7, r7
+# CHECK: encoding: [0xb9,0xdf,0x75,0xf7]
+
+    e_sbc_rasrs_bs r1, r1, r1, r1
+# CHECK: encoding: [0xd9,0x47,0x14,0xf1]
+
+    e_sbc_rasrs_ex r0, r0, r0, r0
+# CHECK: encoding: [0xf9,0x03,0x04,0xf0]
+
+    e_btst r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xa0]
+
+    e_btst r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xa0]
+
+    e_btst r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xa0]
+
+    e_btst r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xa0]
+
+    e_btst r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xa0]
+
+    e_btst r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xa0]
+
+    e_btst r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xa0]
+
+    e_btst r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xa0]
+
+    e_btst r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xa0]
+
+    e_btst r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xa0]
+
+    e_btst r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xa0]
+
+    e_btst r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xa0]
+
+    e_btst r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xa0]
+
+    e_btst r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xa0]
+
+    e_btst r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xa0]
+
+    e_btst r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xa0]
+
+    e_bclr r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0x20]
+
+    e_bclr r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0x20]
+
+    e_bclr r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0x20]
+
+    e_bclr r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0x20]
+
+    e_bclr r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0x20]
+
+    e_bclr r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0x20]
+
+    e_bclr r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0x20]
+
+    e_bclr r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0x20]
+
+    e_bclr r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0x20]
+
+    e_bclr r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0x20]
+
+    e_bclr r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0x20]
+
+    e_bclr r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0x20]
+
+    e_bclr r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0x20]
+
+    e_bclr r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0x20]
+
+    e_bclr r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0x20]
+
+    e_bclr r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0x20]
+
+    e_bset r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xc0]
+
+    e_bset r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xc0]
+
+    e_bset r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xc0]
+
+    e_bset r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xc0]
+
+    e_bset r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xc0]
+
+    e_bset r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xc0]
+
+    e_bset r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xc0]
+
+    e_bset r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xc0]
+
+    e_bset r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xc0]
+
+    e_bset r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xc0]
+
+    e_bset r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xc0]
+
+    e_bset r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xc0]
+
+    e_bset r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xc0]
+
+    e_bset r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xc0]
+
+    e_bset r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xc0]
+
+    e_bset r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xc0]
+
+    e_btog r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xe0]
+
+    e_btog r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xe0]
+
+    e_btog r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xe0]
+
+    e_btog r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xe0]
+
+    e_btog r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xe0]
+
+    e_btog r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xe0]
+
+    e_btog r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xe0]
+
+    e_btog r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xe0]
+
+    e_btog r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xe0]
+
+    e_btog r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xe0]
+
+    e_btog r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xe0]
+
+    e_btog r2, r2, r2
+# CHECK: encoding: [0x18,0x88,0x24,0xe0]
+
+    e_btog r5, r5, r5
+# CHECK: encoding: [0x18,0x54,0x55,0xe0]
+
+    e_btog r7, r7, r7
+# CHECK: encoding: [0x18,0xdc,0x75,0xe0]
+
+    e_btog r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xe0]
+
+    e_btog r0, r0, r0
+# CHECK: encoding: [0x18,0x00,0x04,0xe0]
+
+    e_btsts r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xa0]
+
+    e_btsts r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xa0]
+
+    e_btsts r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xa0]
+
+    e_btsts r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xa0]
+
+    e_btsts r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xa0]
+
+    e_btsts r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xa0]
+
+    e_btsts r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xa0]
+
+    e_btsts r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xa0]
+
+    e_btsts r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xa0]
+
+    e_btsts r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xa0]
+
+    e_btsts r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xa0]
+
+    e_btsts r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xa0]
+
+    e_btsts r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xa0]
+
+    e_btsts r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xa0]
+
+    e_btsts r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xa0]
+
+    e_btsts r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xa0]
+
+    e_bclrs r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0x20]
+
+    e_bclrs r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0x20]
+
+    e_bclrs r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0x20]
+
+    e_bclrs r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0x20]
+
+    e_bclrs r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0x20]
+
+    e_bclrs r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0x20]
+
+    e_bclrs r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0x20]
+
+    e_bclrs r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0x20]
+
+    e_bclrs r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0x20]
+
+    e_bclrs r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0x20]
+
+    e_bclrs r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0x20]
+
+    e_bclrs r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0x20]
+
+    e_bclrs r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0x20]
+
+    e_bclrs r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0x20]
+
+    e_bclrs r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0x20]
+
+    e_bclrs r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0x20]
+
+    e_bsets r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xc0]
+
+    e_bsets r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xc0]
+
+    e_bsets r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xc0]
+
+    e_bsets r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xc0]
+
+    e_bsets r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xc0]
+
+    e_bsets r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xc0]
+
+    e_bsets r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xc0]
+
+    e_bsets r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xc0]
+
+    e_bsets r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xc0]
+
+    e_bsets r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xc0]
+
+    e_bsets r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xc0]
+
+    e_bsets r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xc0]
+
+    e_bsets r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xc0]
+
+    e_bsets r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xc0]
+
+    e_bsets r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xc0]
+
+    e_bsets r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xc0]
+
+    e_btogs r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xe0]
+
+    e_btogs r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xe0]
+
+    e_btogs r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xe0]
+
+    e_btogs r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xe0]
+
+    e_btogs r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xe0]
+
+    e_btogs r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xe0]
+
+    e_btogs r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xe0]
+
+    e_btogs r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xe0]
+
+    e_btogs r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xe0]
+
+    e_btogs r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xe0]
+
+    e_btogs r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xe0]
+
+    e_btogs r2, r2, r2
+# CHECK: encoding: [0x18,0x8a,0x24,0xe0]
+
+    e_btogs r5, r5, r5
+# CHECK: encoding: [0x18,0x56,0x55,0xe0]
+
+    e_btogs r7, r7, r7
+# CHECK: encoding: [0x18,0xde,0x75,0xe0]
+
+    e_btogs r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xe0]
+
+    e_btogs r0, r0, r0
+# CHECK: encoding: [0x18,0x02,0x04,0xe0]
+
+    e_btst_ze r0, r0, r0
+# CHECK: encoding: [0x38,0x00,0x04,0xa0]
+
+    e_btst_nz r2, r2, r2
+# CHECK: encoding: [0x58,0x88,0x24,0xa0]
+
+    e_btst_po r5, r5, r5
+# CHECK: encoding: [0x78,0x54,0x55,0xa0]
+
+    e_btst_ne r7, r7, r7
+# CHECK: encoding: [0x98,0xdc,0x75,0xa0]
+
+    e_btst r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xa0]
+
+    e_btst_az r0, r0, r0
+# CHECK: encoding: [0xb8,0x00,0x04,0xa0]
+
+    e_btst_zb r2, r2, r2
+# CHECK: encoding: [0xd8,0x88,0x24,0xa0]
+
+    e_btst_ca r5, r5, r5
+# CHECK: encoding: [0xf8,0x54,0x55,0xa0]
+
+    e_btst_nc r7, r7, r7
+# CHECK: encoding: [0x18,0xdd,0x75,0xa0]
+
+    e_btst_cz r1, r1, r1
+# CHECK: encoding: [0x38,0x45,0x14,0xa0]
+
+    e_btst_spo r0, r0, r0
+# CHECK: encoding: [0x58,0x01,0x04,0xa0]
+
+    e_btst_sne r2, r2, r2
+# CHECK: encoding: [0x78,0x89,0x24,0xa0]
+
+    e_btst_nbs r5, r5, r5
+# CHECK: encoding: [0x98,0x55,0x55,0xa0]
+
+    e_btst_nex r7, r7, r7
+# CHECK: encoding: [0xb8,0xdd,0x75,0xa0]
+
+    e_btst_bs r1, r1, r1
+# CHECK: encoding: [0xd8,0x45,0x14,0xa0]
+
+    e_btst_ex r0, r0, r0
+# CHECK: encoding: [0xf8,0x01,0x04,0xa0]
+
+    e_bclr_ze r0, r0, r0
+# CHECK: encoding: [0x38,0x00,0x04,0x20]
+
+    e_bclr_nz r2, r2, r2
+# CHECK: encoding: [0x58,0x88,0x24,0x20]
+
+    e_bclr_po r5, r5, r5
+# CHECK: encoding: [0x78,0x54,0x55,0x20]
+
+    e_bclr_ne r7, r7, r7
+# CHECK: encoding: [0x98,0xdc,0x75,0x20]
+
+    e_bclr r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0x20]
+
+    e_bclr_az r0, r0, r0
+# CHECK: encoding: [0xb8,0x00,0x04,0x20]
+
+    e_bclr_zb r2, r2, r2
+# CHECK: encoding: [0xd8,0x88,0x24,0x20]
+
+    e_bclr_ca r5, r5, r5
+# CHECK: encoding: [0xf8,0x54,0x55,0x20]
+
+    e_bclr_nc r7, r7, r7
+# CHECK: encoding: [0x18,0xdd,0x75,0x20]
+
+    e_bclr_cz r1, r1, r1
+# CHECK: encoding: [0x38,0x45,0x14,0x20]
+
+    e_bclr_spo r0, r0, r0
+# CHECK: encoding: [0x58,0x01,0x04,0x20]
+
+    e_bclr_sne r2, r2, r2
+# CHECK: encoding: [0x78,0x89,0x24,0x20]
+
+    e_bclr_nbs r5, r5, r5
+# CHECK: encoding: [0x98,0x55,0x55,0x20]
+
+    e_bclr_nex r7, r7, r7
+# CHECK: encoding: [0xb8,0xdd,0x75,0x20]
+
+    e_bclr_bs r1, r1, r1
+# CHECK: encoding: [0xd8,0x45,0x14,0x20]
+
+    e_bclr_ex r0, r0, r0
+# CHECK: encoding: [0xf8,0x01,0x04,0x20]
+
+    e_bset_ze r0, r0, r0
+# CHECK: encoding: [0x38,0x00,0x04,0xc0]
+
+    e_bset_nz r2, r2, r2
+# CHECK: encoding: [0x58,0x88,0x24,0xc0]
+
+    e_bset_po r5, r5, r5
+# CHECK: encoding: [0x78,0x54,0x55,0xc0]
+
+    e_bset_ne r7, r7, r7
+# CHECK: encoding: [0x98,0xdc,0x75,0xc0]
+
+    e_bset r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xc0]
+
+    e_bset_az r0, r0, r0
+# CHECK: encoding: [0xb8,0x00,0x04,0xc0]
+
+    e_bset_zb r2, r2, r2
+# CHECK: encoding: [0xd8,0x88,0x24,0xc0]
+
+    e_bset_ca r5, r5, r5
+# CHECK: encoding: [0xf8,0x54,0x55,0xc0]
+
+    e_bset_nc r7, r7, r7
+# CHECK: encoding: [0x18,0xdd,0x75,0xc0]
+
+    e_bset_cz r1, r1, r1
+# CHECK: encoding: [0x38,0x45,0x14,0xc0]
+
+    e_bset_spo r0, r0, r0
+# CHECK: encoding: [0x58,0x01,0x04,0xc0]
+
+    e_bset_sne r2, r2, r2
+# CHECK: encoding: [0x78,0x89,0x24,0xc0]
+
+    e_bset_nbs r5, r5, r5
+# CHECK: encoding: [0x98,0x55,0x55,0xc0]
+
+    e_bset_nex r7, r7, r7
+# CHECK: encoding: [0xb8,0xdd,0x75,0xc0]
+
+    e_bset_bs r1, r1, r1
+# CHECK: encoding: [0xd8,0x45,0x14,0xc0]
+
+    e_bset_ex r0, r0, r0
+# CHECK: encoding: [0xf8,0x01,0x04,0xc0]
+
+    e_btog_ze r0, r0, r0
+# CHECK: encoding: [0x38,0x00,0x04,0xe0]
+
+    e_btog_nz r2, r2, r2
+# CHECK: encoding: [0x58,0x88,0x24,0xe0]
+
+    e_btog_po r5, r5, r5
+# CHECK: encoding: [0x78,0x54,0x55,0xe0]
+
+    e_btog_ne r7, r7, r7
+# CHECK: encoding: [0x98,0xdc,0x75,0xe0]
+
+    e_btog r1, r1, r1
+# CHECK: encoding: [0x18,0x44,0x14,0xe0]
+
+    e_btog_az r0, r0, r0
+# CHECK: encoding: [0xb8,0x00,0x04,0xe0]
+
+    e_btog_zb r2, r2, r2
+# CHECK: encoding: [0xd8,0x88,0x24,0xe0]
+
+    e_btog_ca r5, r5, r5
+# CHECK: encoding: [0xf8,0x54,0x55,0xe0]
+
+    e_btog_nc r7, r7, r7
+# CHECK: encoding: [0x18,0xdd,0x75,0xe0]
+
+    e_btog_cz r1, r1, r1
+# CHECK: encoding: [0x38,0x45,0x14,0xe0]
+
+    e_btog_spo r0, r0, r0
+# CHECK: encoding: [0x58,0x01,0x04,0xe0]
+
+    e_btog_sne r2, r2, r2
+# CHECK: encoding: [0x78,0x89,0x24,0xe0]
+
+    e_btog_nbs r5, r5, r5
+# CHECK: encoding: [0x98,0x55,0x55,0xe0]
+
+    e_btog_nex r7, r7, r7
+# CHECK: encoding: [0xb8,0xdd,0x75,0xe0]
+
+    e_btog_bs r1, r1, r1
+# CHECK: encoding: [0xd8,0x45,0x14,0xe0]
+
+    e_btog_ex r0, r0, r0
+# CHECK: encoding: [0xf8,0x01,0x04,0xe0]
+
+    e_btsts_ze r0, r0, r0
+# CHECK: encoding: [0x38,0x02,0x04,0xa0]
+
+    e_btsts_nz r2, r2, r2
+# CHECK: encoding: [0x58,0x8a,0x24,0xa0]
+
+    e_btsts_po r5, r5, r5
+# CHECK: encoding: [0x78,0x56,0x55,0xa0]
+
+    e_btsts_ne r7, r7, r7
+# CHECK: encoding: [0x98,0xde,0x75,0xa0]
+
+    e_btsts r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xa0]
+
+    e_btsts_az r0, r0, r0
+# CHECK: encoding: [0xb8,0x02,0x04,0xa0]
+
+    e_btsts_zb r2, r2, r2
+# CHECK: encoding: [0xd8,0x8a,0x24,0xa0]
+
+    e_btsts_ca r5, r5, r5
+# CHECK: encoding: [0xf8,0x56,0x55,0xa0]
+
+    e_btsts_nc r7, r7, r7
+# CHECK: encoding: [0x18,0xdf,0x75,0xa0]
+
+    e_btsts_cz r1, r1, r1
+# CHECK: encoding: [0x38,0x47,0x14,0xa0]
+
+    e_btsts_spo r0, r0, r0
+# CHECK: encoding: [0x58,0x03,0x04,0xa0]
+
+    e_btsts_sne r2, r2, r2
+# CHECK: encoding: [0x78,0x8b,0x24,0xa0]
+
+    e_btsts_nbs r5, r5, r5
+# CHECK: encoding: [0x98,0x57,0x55,0xa0]
+
+    e_btsts_nex r7, r7, r7
+# CHECK: encoding: [0xb8,0xdf,0x75,0xa0]
+
+    e_btsts_bs r1, r1, r1
+# CHECK: encoding: [0xd8,0x47,0x14,0xa0]
+
+    e_btsts_ex r0, r0, r0
+# CHECK: encoding: [0xf8,0x03,0x04,0xa0]
+
+    e_bclrs_ze r0, r0, r0
+# CHECK: encoding: [0x38,0x02,0x04,0x20]
+
+    e_bclrs_nz r2, r2, r2
+# CHECK: encoding: [0x58,0x8a,0x24,0x20]
+
+    e_bclrs_po r5, r5, r5
+# CHECK: encoding: [0x78,0x56,0x55,0x20]
+
+    e_bclrs_ne r7, r7, r7
+# CHECK: encoding: [0x98,0xde,0x75,0x20]
+
+    e_bclrs r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0x20]
+
+    e_bclrs_az r0, r0, r0
+# CHECK: encoding: [0xb8,0x02,0x04,0x20]
+
+    e_bclrs_zb r2, r2, r2
+# CHECK: encoding: [0xd8,0x8a,0x24,0x20]
+
+    e_bclrs_ca r5, r5, r5
+# CHECK: encoding: [0xf8,0x56,0x55,0x20]
+
+    e_bclrs_nc r7, r7, r7
+# CHECK: encoding: [0x18,0xdf,0x75,0x20]
+
+    e_bclrs_cz r1, r1, r1
+# CHECK: encoding: [0x38,0x47,0x14,0x20]
+
+    e_bclrs_spo r0, r0, r0
+# CHECK: encoding: [0x58,0x03,0x04,0x20]
+
+    e_bclrs_sne r2, r2, r2
+# CHECK: encoding: [0x78,0x8b,0x24,0x20]
+
+    e_bclrs_nbs r5, r5, r5
+# CHECK: encoding: [0x98,0x57,0x55,0x20]
+
+    e_bclrs_nex r7, r7, r7
+# CHECK: encoding: [0xb8,0xdf,0x75,0x20]
+
+    e_bclrs_bs r1, r1, r1
+# CHECK: encoding: [0xd8,0x47,0x14,0x20]
+
+    e_bclrs_ex r0, r0, r0
+# CHECK: encoding: [0xf8,0x03,0x04,0x20]
+
+    e_bsets_ze r0, r0, r0
+# CHECK: encoding: [0x38,0x02,0x04,0xc0]
+
+    e_bsets_nz r2, r2, r2
+# CHECK: encoding: [0x58,0x8a,0x24,0xc0]
+
+    e_bsets_po r5, r5, r5
+# CHECK: encoding: [0x78,0x56,0x55,0xc0]
+
+    e_bsets_ne r7, r7, r7
+# CHECK: encoding: [0x98,0xde,0x75,0xc0]
+
+    e_bsets r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xc0]
+
+    e_bsets_az r0, r0, r0
+# CHECK: encoding: [0xb8,0x02,0x04,0xc0]
+
+    e_bsets_zb r2, r2, r2
+# CHECK: encoding: [0xd8,0x8a,0x24,0xc0]
+
+    e_bsets_ca r5, r5, r5
+# CHECK: encoding: [0xf8,0x56,0x55,0xc0]
+
+    e_bsets_nc r7, r7, r7
+# CHECK: encoding: [0x18,0xdf,0x75,0xc0]
+
+    e_bsets_cz r1, r1, r1
+# CHECK: encoding: [0x38,0x47,0x14,0xc0]
+
+    e_bsets_spo r0, r0, r0
+# CHECK: encoding: [0x58,0x03,0x04,0xc0]
+
+    e_bsets_sne r2, r2, r2
+# CHECK: encoding: [0x78,0x8b,0x24,0xc0]
+
+    e_bsets_nbs r5, r5, r5
+# CHECK: encoding: [0x98,0x57,0x55,0xc0]
+
+    e_bsets_nex r7, r7, r7
+# CHECK: encoding: [0xb8,0xdf,0x75,0xc0]
+
+    e_bsets_bs r1, r1, r1
+# CHECK: encoding: [0xd8,0x47,0x14,0xc0]
+
+    e_bsets_ex r0, r0, r0
+# CHECK: encoding: [0xf8,0x03,0x04,0xc0]
+
+    e_btogs_ze r0, r0, r0
+# CHECK: encoding: [0x38,0x02,0x04,0xe0]
+
+    e_btogs_nz r2, r2, r2
+# CHECK: encoding: [0x58,0x8a,0x24,0xe0]
+
+    e_btogs_po r5, r5, r5
+# CHECK: encoding: [0x78,0x56,0x55,0xe0]
+
+    e_btogs_ne r7, r7, r7
+# CHECK: encoding: [0x98,0xde,0x75,0xe0]
+
+    e_btogs r1, r1, r1
+# CHECK: encoding: [0x18,0x46,0x14,0xe0]
+
+    e_btogs_az r0, r0, r0
+# CHECK: encoding: [0xb8,0x02,0x04,0xe0]
+
+    e_btogs_zb r2, r2, r2
+# CHECK: encoding: [0xd8,0x8a,0x24,0xe0]
+
+    e_btogs_ca r5, r5, r5
+# CHECK: encoding: [0xf8,0x56,0x55,0xe0]
+
+    e_btogs_nc r7, r7, r7
+# CHECK: encoding: [0x18,0xdf,0x75,0xe0]
+
+    e_btogs_cz r1, r1, r1
+# CHECK: encoding: [0x38,0x47,0x14,0xe0]
+
+    e_btogs_spo r0, r0, r0
+# CHECK: encoding: [0x58,0x03,0x04,0xe0]
+
+    e_btogs_sne r2, r2, r2
+# CHECK: encoding: [0x78,0x8b,0x24,0xe0]
+
+    e_btogs_nbs r5, r5, r5
+# CHECK: encoding: [0x98,0x57,0x55,0xe0]
+
+    e_btogs_nex r7, r7, r7
+# CHECK: encoding: [0xb8,0xdf,0x75,0xe0]
+
+    e_btogs_bs r1, r1, r1
+# CHECK: encoding: [0xd8,0x47,0x14,0xe0]
+
+    e_btogs_ex r0, r0, r0
+# CHECK: encoding: [0xf8,0x03,0x04,0xe0]
+
+    e_btst_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xa0]
+
+    e_btst_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xa5]
+
+    e_btst_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xaf]
+
+    e_btst_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xbf]
+
+    e_btst_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xaa]
+
+    e_btst_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xa0]
+
+    e_btst_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xa5]
+
+    e_btst_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xaf]
+
+    e_btst_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xbf]
+
+    e_btst_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xaa]
+
+    e_btst_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xa0]
+
+    e_btst_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xa5]
+
+    e_btst_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xaf]
+
+    e_btst_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xbf]
+
+    e_btst_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xaa]
+
+    e_btst_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xa0]
+
+    e_bclr_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0x20]
+
+    e_bclr_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0x25]
+
+    e_bclr_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0x2f]
+
+    e_bclr_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0x3f]
+
+    e_bclr_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0x2a]
+
+    e_bclr_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0x20]
+
+    e_bclr_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0x25]
+
+    e_bclr_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0x2f]
+
+    e_bclr_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0x3f]
+
+    e_bclr_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0x2a]
+
+    e_bclr_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0x20]
+
+    e_bclr_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0x25]
+
+    e_bclr_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0x2f]
+
+    e_bclr_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0x3f]
+
+    e_bclr_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0x2a]
+
+    e_bclr_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0x20]
+
+    e_bset_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xc0]
+
+    e_bset_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xc5]
+
+    e_bset_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xcf]
+
+    e_bset_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xdf]
+
+    e_bset_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xca]
+
+    e_bset_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xc0]
+
+    e_bset_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xc5]
+
+    e_bset_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xcf]
+
+    e_bset_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xdf]
+
+    e_bset_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xca]
+
+    e_bset_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xc0]
+
+    e_bset_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xc5]
+
+    e_bset_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xcf]
+
+    e_bset_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xdf]
+
+    e_bset_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xca]
+
+    e_bset_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xc0]
+
+    e_btog_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xe0]
+
+    e_btog_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xe5]
+
+    e_btog_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xef]
+
+    e_btog_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xff]
+
+    e_btog_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xea]
+
+    e_btog_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xe0]
+
+    e_btog_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xe5]
+
+    e_btog_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xef]
+
+    e_btog_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xff]
+
+    e_btog_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xea]
+
+    e_btog_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xe0]
+
+    e_btog_imm r2, r2, 0x5
+# CHECK: encoding: [0x18,0x88,0x00,0xe5]
+
+    e_btog_imm r5, r5, 0xf
+# CHECK: encoding: [0x18,0x54,0x01,0xef]
+
+    e_btog_imm r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdc,0x01,0xff]
+
+    e_btog_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xea]
+
+    e_btog_imm r0, r0, 0x0
+# CHECK: encoding: [0x18,0x00,0x00,0xe0]
+
+    e_btst_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xa0]
+
+    e_btst_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xa5]
+
+    e_btst_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xaf]
+
+    e_btst_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xbf]
+
+    e_btst_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xaa]
+
+    e_btst_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xa0]
+
+    e_btst_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xa5]
+
+    e_btst_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xaf]
+
+    e_btst_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xbf]
+
+    e_btst_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xaa]
+
+    e_btst_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xa0]
+
+    e_btst_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xa5]
+
+    e_btst_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xaf]
+
+    e_btst_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xbf]
+
+    e_btst_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xaa]
+
+    e_btst_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xa0]
+
+    e_bclr_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0x20]
+
+    e_bclr_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0x25]
+
+    e_bclr_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0x2f]
+
+    e_bclr_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0x3f]
+
+    e_bclr_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0x2a]
+
+    e_bclr_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0x20]
+
+    e_bclr_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0x25]
+
+    e_bclr_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0x2f]
+
+    e_bclr_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0x3f]
+
+    e_bclr_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0x2a]
+
+    e_bclr_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0x20]
+
+    e_bclr_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0x25]
+
+    e_bclr_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0x2f]
+
+    e_bclr_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0x3f]
+
+    e_bclr_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0x2a]
+
+    e_bclr_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0x20]
+
+    e_bset_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xc0]
+
+    e_bset_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xc5]
+
+    e_bset_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xcf]
+
+    e_bset_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xdf]
+
+    e_bset_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xca]
+
+    e_bset_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xc0]
+
+    e_bset_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xc5]
+
+    e_bset_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xcf]
+
+    e_bset_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xdf]
+
+    e_bset_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xca]
+
+    e_bset_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xc0]
+
+    e_bset_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xc5]
+
+    e_bset_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xcf]
+
+    e_bset_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xdf]
+
+    e_bset_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xca]
+
+    e_bset_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xc0]
+
+    e_btog_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xe0]
+
+    e_btog_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xe5]
+
+    e_btog_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xef]
+
+    e_btog_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xff]
+
+    e_btog_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xea]
+
+    e_btog_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xe0]
+
+    e_btog_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xe5]
+
+    e_btog_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xef]
+
+    e_btog_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xff]
+
+    e_btog_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xea]
+
+    e_btog_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xe0]
+
+    e_btog_imms r2, r2, 0x5
+# CHECK: encoding: [0x18,0x8a,0x00,0xe5]
+
+    e_btog_imms r5, r5, 0xf
+# CHECK: encoding: [0x18,0x56,0x01,0xef]
+
+    e_btog_imms r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xde,0x01,0xff]
+
+    e_btog_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xea]
+
+    e_btog_imms r0, r0, 0x0
+# CHECK: encoding: [0x18,0x02,0x00,0xe0]
+
+    e_btst_imm_ze r0, r0, 0x0
+# CHECK: encoding: [0x38,0x00,0x00,0xa0]
+
+    e_btst_imm_nz r2, r2, 0x5
+# CHECK: encoding: [0x58,0x88,0x00,0xa5]
+
+    e_btst_imm_po r5, r5, 0xf
+# CHECK: encoding: [0x78,0x54,0x01,0xaf]
+
+    e_btst_imm_ne r7, r7, 0x1f
+# CHECK: encoding: [0x98,0xdc,0x01,0xbf]
+
+    e_btst_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xaa]
+
+    e_btst_imm_az r0, r0, 0x0
+# CHECK: encoding: [0xb8,0x00,0x00,0xa0]
+
+    e_btst_imm_zb r2, r2, 0x5
+# CHECK: encoding: [0xd8,0x88,0x00,0xa5]
+
+    e_btst_imm_ca r5, r5, 0xf
+# CHECK: encoding: [0xf8,0x54,0x01,0xaf]
+
+    e_btst_imm_nc r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdd,0x01,0xbf]
+
+    e_btst_imm_cz r1, r1, 0xa
+# CHECK: encoding: [0x38,0x45,0x00,0xaa]
+
+    e_btst_imm_spo r0, r0, 0x0
+# CHECK: encoding: [0x58,0x01,0x00,0xa0]
+
+    e_btst_imm_sne r2, r2, 0x5
+# CHECK: encoding: [0x78,0x89,0x00,0xa5]
+
+    e_btst_imm_nbs r5, r5, 0xf
+# CHECK: encoding: [0x98,0x55,0x01,0xaf]
+
+    e_btst_imm_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb8,0xdd,0x01,0xbf]
+
+    e_btst_imm_bs r1, r1, 0xa
+# CHECK: encoding: [0xd8,0x45,0x00,0xaa]
+
+    e_btst_imm_ex r0, r0, 0x0
+# CHECK: encoding: [0xf8,0x01,0x00,0xa0]
+
+    e_bclr_imm_ze r0, r0, 0x0
+# CHECK: encoding: [0x38,0x00,0x00,0x20]
+
+    e_bclr_imm_nz r2, r2, 0x5
+# CHECK: encoding: [0x58,0x88,0x00,0x25]
+
+    e_bclr_imm_po r5, r5, 0xf
+# CHECK: encoding: [0x78,0x54,0x01,0x2f]
+
+    e_bclr_imm_ne r7, r7, 0x1f
+# CHECK: encoding: [0x98,0xdc,0x01,0x3f]
+
+    e_bclr_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0x2a]
+
+    e_bclr_imm_az r0, r0, 0x0
+# CHECK: encoding: [0xb8,0x00,0x00,0x20]
+
+    e_bclr_imm_zb r2, r2, 0x5
+# CHECK: encoding: [0xd8,0x88,0x00,0x25]
+
+    e_bclr_imm_ca r5, r5, 0xf
+# CHECK: encoding: [0xf8,0x54,0x01,0x2f]
+
+    e_bclr_imm_nc r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdd,0x01,0x3f]
+
+    e_bclr_imm_cz r1, r1, 0xa
+# CHECK: encoding: [0x38,0x45,0x00,0x2a]
+
+    e_bclr_imm_spo r0, r0, 0x0
+# CHECK: encoding: [0x58,0x01,0x00,0x20]
+
+    e_bclr_imm_sne r2, r2, 0x5
+# CHECK: encoding: [0x78,0x89,0x00,0x25]
+
+    e_bclr_imm_nbs r5, r5, 0xf
+# CHECK: encoding: [0x98,0x55,0x01,0x2f]
+
+    e_bclr_imm_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb8,0xdd,0x01,0x3f]
+
+    e_bclr_imm_bs r1, r1, 0xa
+# CHECK: encoding: [0xd8,0x45,0x00,0x2a]
+
+    e_bclr_imm_ex r0, r0, 0x0
+# CHECK: encoding: [0xf8,0x01,0x00,0x20]
+
+    e_bset_imm_ze r0, r0, 0x0
+# CHECK: encoding: [0x38,0x00,0x00,0xc0]
+
+    e_bset_imm_nz r2, r2, 0x5
+# CHECK: encoding: [0x58,0x88,0x00,0xc5]
+
+    e_bset_imm_po r5, r5, 0xf
+# CHECK: encoding: [0x78,0x54,0x01,0xcf]
+
+    e_bset_imm_ne r7, r7, 0x1f
+# CHECK: encoding: [0x98,0xdc,0x01,0xdf]
+
+    e_bset_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xca]
+
+    e_bset_imm_az r0, r0, 0x0
+# CHECK: encoding: [0xb8,0x00,0x00,0xc0]
+
+    e_bset_imm_zb r2, r2, 0x5
+# CHECK: encoding: [0xd8,0x88,0x00,0xc5]
+
+    e_bset_imm_ca r5, r5, 0xf
+# CHECK: encoding: [0xf8,0x54,0x01,0xcf]
+
+    e_bset_imm_nc r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdd,0x01,0xdf]
+
+    e_bset_imm_cz r1, r1, 0xa
+# CHECK: encoding: [0x38,0x45,0x00,0xca]
+
+    e_bset_imm_spo r0, r0, 0x0
+# CHECK: encoding: [0x58,0x01,0x00,0xc0]
+
+    e_bset_imm_sne r2, r2, 0x5
+# CHECK: encoding: [0x78,0x89,0x00,0xc5]
+
+    e_bset_imm_nbs r5, r5, 0xf
+# CHECK: encoding: [0x98,0x55,0x01,0xcf]
+
+    e_bset_imm_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb8,0xdd,0x01,0xdf]
+
+    e_bset_imm_bs r1, r1, 0xa
+# CHECK: encoding: [0xd8,0x45,0x00,0xca]
+
+    e_bset_imm_ex r0, r0, 0x0
+# CHECK: encoding: [0xf8,0x01,0x00,0xc0]
+
+    e_btog_imm_ze r0, r0, 0x0
+# CHECK: encoding: [0x38,0x00,0x00,0xe0]
+
+    e_btog_imm_nz r2, r2, 0x5
+# CHECK: encoding: [0x58,0x88,0x00,0xe5]
+
+    e_btog_imm_po r5, r5, 0xf
+# CHECK: encoding: [0x78,0x54,0x01,0xef]
+
+    e_btog_imm_ne r7, r7, 0x1f
+# CHECK: encoding: [0x98,0xdc,0x01,0xff]
+
+    e_btog_imm r1, r1, 0xa
+# CHECK: encoding: [0x18,0x44,0x00,0xea]
+
+    e_btog_imm_az r0, r0, 0x0
+# CHECK: encoding: [0xb8,0x00,0x00,0xe0]
+
+    e_btog_imm_zb r2, r2, 0x5
+# CHECK: encoding: [0xd8,0x88,0x00,0xe5]
+
+    e_btog_imm_ca r5, r5, 0xf
+# CHECK: encoding: [0xf8,0x54,0x01,0xef]
+
+    e_btog_imm_nc r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdd,0x01,0xff]
+
+    e_btog_imm_cz r1, r1, 0xa
+# CHECK: encoding: [0x38,0x45,0x00,0xea]
+
+    e_btog_imm_spo r0, r0, 0x0
+# CHECK: encoding: [0x58,0x01,0x00,0xe0]
+
+    e_btog_imm_sne r2, r2, 0x5
+# CHECK: encoding: [0x78,0x89,0x00,0xe5]
+
+    e_btog_imm_nbs r5, r5, 0xf
+# CHECK: encoding: [0x98,0x55,0x01,0xef]
+
+    e_btog_imm_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb8,0xdd,0x01,0xff]
+
+    e_btog_imm_bs r1, r1, 0xa
+# CHECK: encoding: [0xd8,0x45,0x00,0xea]
+
+    e_btog_imm_ex r0, r0, 0x0
+# CHECK: encoding: [0xf8,0x01,0x00,0xe0]
+
+    e_btst_imms_ze r0, r0, 0x0
+# CHECK: encoding: [0x38,0x02,0x00,0xa0]
+
+    e_btst_imms_nz r2, r2, 0x5
+# CHECK: encoding: [0x58,0x8a,0x00,0xa5]
+
+    e_btst_imms_po r5, r5, 0xf
+# CHECK: encoding: [0x78,0x56,0x01,0xaf]
+
+    e_btst_imms_ne r7, r7, 0x1f
+# CHECK: encoding: [0x98,0xde,0x01,0xbf]
+
+    e_btst_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xaa]
+
+    e_btst_imms_az r0, r0, 0x0
+# CHECK: encoding: [0xb8,0x02,0x00,0xa0]
+
+    e_btst_imms_zb r2, r2, 0x5
+# CHECK: encoding: [0xd8,0x8a,0x00,0xa5]
+
+    e_btst_imms_ca r5, r5, 0xf
+# CHECK: encoding: [0xf8,0x56,0x01,0xaf]
+
+    e_btst_imms_nc r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdf,0x01,0xbf]
+
+    e_btst_imms_cz r1, r1, 0xa
+# CHECK: encoding: [0x38,0x47,0x00,0xaa]
+
+    e_btst_imms_spo r0, r0, 0x0
+# CHECK: encoding: [0x58,0x03,0x00,0xa0]
+
+    e_btst_imms_sne r2, r2, 0x5
+# CHECK: encoding: [0x78,0x8b,0x00,0xa5]
+
+    e_btst_imms_nbs r5, r5, 0xf
+# CHECK: encoding: [0x98,0x57,0x01,0xaf]
+
+    e_btst_imms_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb8,0xdf,0x01,0xbf]
+
+    e_btst_imms_bs r1, r1, 0xa
+# CHECK: encoding: [0xd8,0x47,0x00,0xaa]
+
+    e_btst_imms_ex r0, r0, 0x0
+# CHECK: encoding: [0xf8,0x03,0x00,0xa0]
+
+    e_bclr_imms_ze r0, r0, 0x0
+# CHECK: encoding: [0x38,0x02,0x00,0x20]
+
+    e_bclr_imms_nz r2, r2, 0x5
+# CHECK: encoding: [0x58,0x8a,0x00,0x25]
+
+    e_bclr_imms_po r5, r5, 0xf
+# CHECK: encoding: [0x78,0x56,0x01,0x2f]
+
+    e_bclr_imms_ne r7, r7, 0x1f
+# CHECK: encoding: [0x98,0xde,0x01,0x3f]
+
+    e_bclr_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0x2a]
+
+    e_bclr_imms_az r0, r0, 0x0
+# CHECK: encoding: [0xb8,0x02,0x00,0x20]
+
+    e_bclr_imms_zb r2, r2, 0x5
+# CHECK: encoding: [0xd8,0x8a,0x00,0x25]
+
+    e_bclr_imms_ca r5, r5, 0xf
+# CHECK: encoding: [0xf8,0x56,0x01,0x2f]
+
+    e_bclr_imms_nc r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdf,0x01,0x3f]
+
+    e_bclr_imms_cz r1, r1, 0xa
+# CHECK: encoding: [0x38,0x47,0x00,0x2a]
+
+    e_bclr_imms_spo r0, r0, 0x0
+# CHECK: encoding: [0x58,0x03,0x00,0x20]
+
+    e_bclr_imms_sne r2, r2, 0x5
+# CHECK: encoding: [0x78,0x8b,0x00,0x25]
+
+    e_bclr_imms_nbs r5, r5, 0xf
+# CHECK: encoding: [0x98,0x57,0x01,0x2f]
+
+    e_bclr_imms_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb8,0xdf,0x01,0x3f]
+
+    e_bclr_imms_bs r1, r1, 0xa
+# CHECK: encoding: [0xd8,0x47,0x00,0x2a]
+
+    e_bclr_imms_ex r0, r0, 0x0
+# CHECK: encoding: [0xf8,0x03,0x00,0x20]
+
+    e_bset_imms_ze r0, r0, 0x0
+# CHECK: encoding: [0x38,0x02,0x00,0xc0]
+
+    e_bset_imms_nz r2, r2, 0x5
+# CHECK: encoding: [0x58,0x8a,0x00,0xc5]
+
+    e_bset_imms_po r5, r5, 0xf
+# CHECK: encoding: [0x78,0x56,0x01,0xcf]
+
+    e_bset_imms_ne r7, r7, 0x1f
+# CHECK: encoding: [0x98,0xde,0x01,0xdf]
+
+    e_bset_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xca]
+
+    e_bset_imms_az r0, r0, 0x0
+# CHECK: encoding: [0xb8,0x02,0x00,0xc0]
+
+    e_bset_imms_zb r2, r2, 0x5
+# CHECK: encoding: [0xd8,0x8a,0x00,0xc5]
+
+    e_bset_imms_ca r5, r5, 0xf
+# CHECK: encoding: [0xf8,0x56,0x01,0xcf]
+
+    e_bset_imms_nc r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdf,0x01,0xdf]
+
+    e_bset_imms_cz r1, r1, 0xa
+# CHECK: encoding: [0x38,0x47,0x00,0xca]
+
+    e_bset_imms_spo r0, r0, 0x0
+# CHECK: encoding: [0x58,0x03,0x00,0xc0]
+
+    e_bset_imms_sne r2, r2, 0x5
+# CHECK: encoding: [0x78,0x8b,0x00,0xc5]
+
+    e_bset_imms_nbs r5, r5, 0xf
+# CHECK: encoding: [0x98,0x57,0x01,0xcf]
+
+    e_bset_imms_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb8,0xdf,0x01,0xdf]
+
+    e_bset_imms_bs r1, r1, 0xa
+# CHECK: encoding: [0xd8,0x47,0x00,0xca]
+
+    e_bset_imms_ex r0, r0, 0x0
+# CHECK: encoding: [0xf8,0x03,0x00,0xc0]
+
+    e_btog_imms_ze r0, r0, 0x0
+# CHECK: encoding: [0x38,0x02,0x00,0xe0]
+
+    e_btog_imms_nz r2, r2, 0x5
+# CHECK: encoding: [0x58,0x8a,0x00,0xe5]
+
+    e_btog_imms_po r5, r5, 0xf
+# CHECK: encoding: [0x78,0x56,0x01,0xef]
+
+    e_btog_imms_ne r7, r7, 0x1f
+# CHECK: encoding: [0x98,0xde,0x01,0xff]
+
+    e_btog_imms r1, r1, 0xa
+# CHECK: encoding: [0x18,0x46,0x00,0xea]
+
+    e_btog_imms_az r0, r0, 0x0
+# CHECK: encoding: [0xb8,0x02,0x00,0xe0]
+
+    e_btog_imms_zb r2, r2, 0x5
+# CHECK: encoding: [0xd8,0x8a,0x00,0xe5]
+
+    e_btog_imms_ca r5, r5, 0xf
+# CHECK: encoding: [0xf8,0x56,0x01,0xef]
+
+    e_btog_imms_nc r7, r7, 0x1f
+# CHECK: encoding: [0x18,0xdf,0x01,0xff]
+
+    e_btog_imms_cz r1, r1, 0xa
+# CHECK: encoding: [0x38,0x47,0x00,0xea]
+
+    e_btog_imms_spo r0, r0, 0x0
+# CHECK: encoding: [0x58,0x03,0x00,0xe0]
+
+    e_btog_imms_sne r2, r2, 0x5
+# CHECK: encoding: [0x78,0x8b,0x00,0xe5]
+
+    e_btog_imms_nbs r5, r5, 0xf
+# CHECK: encoding: [0x98,0x57,0x01,0xef]
+
+    e_btog_imms_nex r7, r7, 0x1f
+# CHECK: encoding: [0xb8,0xdf,0x01,0xff]
+
+    e_btog_imms_bs r1, r1, 0xa
+# CHECK: encoding: [0xd8,0x47,0x00,0xea]
+
+    e_btog_imms_ex r0, r0, 0x0
+# CHECK: encoding: [0xf8,0x03,0x00,0xe0]
+
+    e_tight_loop r0, r0
+# CHECK: encoding: [0x1a,0x00,0x00,0x00]
+
+    e_tight_loop r2, r2
+# CHECK: encoding: [0x1a,0x80,0x20,0x00]
+
+    e_tight_loop r5, r5
+# CHECK: encoding: [0x1a,0x40,0x51,0x00]
+
+    e_tight_loop r7, r7
+# CHECK: encoding: [0x1a,0xc0,0x71,0x00]
+
+    e_tight_loop r1, r1
+# CHECK: encoding: [0x1a,0x40,0x10,0x00]
+
+    e_tight_loop r0, r0
+# CHECK: encoding: [0x1a,0x00,0x00,0x00]
+
+    e_tight_loop r2, r2
+# CHECK: encoding: [0x1a,0x80,0x20,0x00]
+
+    e_tight_loop r5, r5
+# CHECK: encoding: [0x1a,0x40,0x51,0x00]
+
+    e_tight_loop r7, r7
+# CHECK: encoding: [0x1a,0xc0,0x71,0x00]
+
+    e_tight_loop r1, r1
+# CHECK: encoding: [0x1a,0x40,0x10,0x00]
+
+    e_tight_loop r0, r0
+# CHECK: encoding: [0x1a,0x00,0x00,0x00]
+
+    e_tight_loop r2, r2
+# CHECK: encoding: [0x1a,0x80,0x20,0x00]
+
+    e_tight_loop r5, r5
+# CHECK: encoding: [0x1a,0x40,0x51,0x00]
+
+    e_tight_loop r7, r7
+# CHECK: encoding: [0x1a,0xc0,0x71,0x00]
+
+    e_tight_loop r1, r1
+# CHECK: encoding: [0x1a,0x40,0x10,0x00]
+
+    e_tight_loop r0, r0
+# CHECK: encoding: [0x1a,0x00,0x00,0x00]
+
+    e_tight_loop_ze r0, r0
+# CHECK: encoding: [0x3a,0x00,0x00,0x00]
+
+    e_tight_loop_nz r2, r2
+# CHECK: encoding: [0x5a,0x80,0x20,0x00]
+
+    e_tight_loop_po r5, r5
+# CHECK: encoding: [0x7a,0x40,0x51,0x00]
+
+    e_tight_loop_ne r7, r7
+# CHECK: encoding: [0x9a,0xc0,0x71,0x00]
+
+    e_tight_loop r1, r1
+# CHECK: encoding: [0x1a,0x40,0x10,0x00]
+
+    e_tight_loop_az r0, r0
+# CHECK: encoding: [0xba,0x00,0x00,0x00]
+
+    e_tight_loop_zb r2, r2
+# CHECK: encoding: [0xda,0x80,0x20,0x00]
+
+    e_tight_loop_ca r5, r5
+# CHECK: encoding: [0xfa,0x40,0x51,0x00]
+
+    e_tight_loop_nc r7, r7
+# CHECK: encoding: [0x1a,0xc1,0x71,0x00]
+
+    e_tight_loop_cz r1, r1
+# CHECK: encoding: [0x3a,0x41,0x10,0x00]
+
+    e_tight_loop_spo r0, r0
+# CHECK: encoding: [0x5a,0x01,0x00,0x00]
+
+    e_tight_loop_sne r2, r2
+# CHECK: encoding: [0x7a,0x81,0x20,0x00]
+
+    e_tight_loop_nbs r5, r5
+# CHECK: encoding: [0x9a,0x41,0x51,0x00]
+
+    e_tight_loop_nex r7, r7
+# CHECK: encoding: [0xba,0xc1,0x71,0x00]
+
+    e_tight_loop_bs r1, r1
+# CHECK: encoding: [0xda,0x41,0x10,0x00]
+
+    e_tight_loop_ex r0, r0
+# CHECK: encoding: [0xfa,0x01,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold_ze
+# CHECK: encoding: [0x3c,0xb4,0x00,0x00]
+
+    e_hold_nz
+# CHECK: encoding: [0x5c,0xb4,0x00,0x00]
+
+    e_hold_po
+# CHECK: encoding: [0x7c,0xb4,0x00,0x00]
+
+    e_hold_ne
+# CHECK: encoding: [0x9c,0xb4,0x00,0x00]
+
+    e_hold
+# CHECK: encoding: [0x1c,0xb4,0x00,0x00]
+
+    e_hold_az
+# CHECK: encoding: [0xbc,0xb4,0x00,0x00]
+
+    e_hold_zb
+# CHECK: encoding: [0xdc,0xb4,0x00,0x00]
+
+    e_hold_ca
+# CHECK: encoding: [0xfc,0xb4,0x00,0x00]
+
+    e_hold_nc
+# CHECK: encoding: [0x1c,0xb5,0x00,0x00]
+
+    e_hold_cz
+# CHECK: encoding: [0x3c,0xb5,0x00,0x00]
+
+    e_hold_spo
+# CHECK: encoding: [0x5c,0xb5,0x00,0x00]
+
+    e_hold_sne
+# CHECK: encoding: [0x7c,0xb5,0x00,0x00]
+
+    e_hold_nbs
+# CHECK: encoding: [0x9c,0xb5,0x00,0x00]
+
+    e_hold_nex
+# CHECK: encoding: [0xbc,0xb5,0x00,0x00]
+
+    e_hold_bs
+# CHECK: encoding: [0xdc,0xb5,0x00,0x00]
+
+    e_hold_ex
+# CHECK: encoding: [0xfc,0xb5,0x00,0x00]
+
+    e_vectored_hold r0
+# CHECK: encoding: [0x1c,0x00,0x00,0x00]
+
+    e_vectored_hold r2
+# CHECK: encoding: [0x1c,0x08,0x20,0x00]
+
+    e_vectored_hold r5
+# CHECK: encoding: [0x1c,0x14,0x50,0x00]
+
+    e_vectored_hold r7
+# CHECK: encoding: [0x1c,0x1c,0x70,0x00]
+
+    e_vectored_hold r1
+# CHECK: encoding: [0x1c,0x04,0x10,0x00]
+
+    e_vectored_hold r0
+# CHECK: encoding: [0x1c,0x00,0x00,0x00]
+
+    e_vectored_hold r2
+# CHECK: encoding: [0x1c,0x08,0x20,0x00]
+
+    e_vectored_hold r5
+# CHECK: encoding: [0x1c,0x14,0x50,0x00]
+
+    e_vectored_hold r7
+# CHECK: encoding: [0x1c,0x1c,0x70,0x00]
+
+    e_vectored_hold r1
+# CHECK: encoding: [0x1c,0x04,0x10,0x00]
+
+    e_vectored_hold r0
+# CHECK: encoding: [0x1c,0x00,0x00,0x00]
+
+    e_vectored_hold r2
+# CHECK: encoding: [0x1c,0x08,0x20,0x00]
+
+    e_vectored_hold r5
+# CHECK: encoding: [0x1c,0x14,0x50,0x00]
+
+    e_vectored_hold r7
+# CHECK: encoding: [0x1c,0x1c,0x70,0x00]
+
+    e_vectored_hold r1
+# CHECK: encoding: [0x1c,0x04,0x10,0x00]
+
+    e_vectored_hold r0
+# CHECK: encoding: [0x1c,0x00,0x00,0x00]
+
+    e_vectored_hold_ze r0
+# CHECK: encoding: [0x3c,0x00,0x00,0x00]
+
+    e_vectored_hold_nz r2
+# CHECK: encoding: [0x5c,0x08,0x20,0x00]
+
+    e_vectored_hold_po r5
+# CHECK: encoding: [0x7c,0x14,0x50,0x00]
+
+    e_vectored_hold_ne r7
+# CHECK: encoding: [0x9c,0x1c,0x70,0x00]
+
+    e_vectored_hold r1
+# CHECK: encoding: [0x1c,0x04,0x10,0x00]
+
+    e_vectored_hold_az r0
+# CHECK: encoding: [0xbc,0x00,0x00,0x00]
+
+    e_vectored_hold_zb r2
+# CHECK: encoding: [0xdc,0x08,0x20,0x00]
+
+    e_vectored_hold_ca r5
+# CHECK: encoding: [0xfc,0x14,0x50,0x00]
+
+    e_vectored_hold_nc r7
+# CHECK: encoding: [0x1c,0x1d,0x70,0x00]
+
+    e_vectored_hold_cz r1
+# CHECK: encoding: [0x3c,0x05,0x10,0x00]
+
+    e_vectored_hold_spo r0
+# CHECK: encoding: [0x5c,0x01,0x00,0x00]
+
+    e_vectored_hold_sne r2
+# CHECK: encoding: [0x7c,0x09,0x20,0x00]
+
+    e_vectored_hold_nbs r5
+# CHECK: encoding: [0x9c,0x15,0x50,0x00]
+
+    e_vectored_hold_nex r7
+# CHECK: encoding: [0xbc,0x1d,0x70,0x00]
+
+    e_vectored_hold_bs r1
+# CHECK: encoding: [0xdc,0x05,0x10,0x00]
+
+    e_vectored_hold_ex r0
+# CHECK: encoding: [0xfc,0x01,0x00,0x00]
+
+    e_vectored_hold_nra r0
+# CHECK: encoding: [0x1c,0x00,0x04,0x00]
+
+    e_vectored_hold_nra r2
+# CHECK: encoding: [0x1c,0x08,0x24,0x00]
+
+    e_vectored_hold_nra r5
+# CHECK: encoding: [0x1c,0x14,0x54,0x00]
+
+    e_vectored_hold_nra r7
+# CHECK: encoding: [0x1c,0x1c,0x74,0x00]
+
+    e_vectored_hold_nra r1
+# CHECK: encoding: [0x1c,0x04,0x14,0x00]
+
+    e_vectored_hold_nra r0
+# CHECK: encoding: [0x1c,0x00,0x04,0x00]
+
+    e_vectored_hold_nra r2
+# CHECK: encoding: [0x1c,0x08,0x24,0x00]
+
+    e_vectored_hold_nra r5
+# CHECK: encoding: [0x1c,0x14,0x54,0x00]
+
+    e_vectored_hold_nra r7
+# CHECK: encoding: [0x1c,0x1c,0x74,0x00]
+
+    e_vectored_hold_nra r1
+# CHECK: encoding: [0x1c,0x04,0x14,0x00]
+
+    e_vectored_hold_nra r0
+# CHECK: encoding: [0x1c,0x00,0x04,0x00]
+
+    e_vectored_hold_nra r2
+# CHECK: encoding: [0x1c,0x08,0x24,0x00]
+
+    e_vectored_hold_nra r5
+# CHECK: encoding: [0x1c,0x14,0x54,0x00]
+
+    e_vectored_hold_nra r7
+# CHECK: encoding: [0x1c,0x1c,0x74,0x00]
+
+    e_vectored_hold_nra r1
+# CHECK: encoding: [0x1c,0x04,0x14,0x00]
+
+    e_vectored_hold_nra r0
+# CHECK: encoding: [0x1c,0x00,0x04,0x00]
+
+    e_vectored_hold_lv r0
+# CHECK: encoding: [0x1c,0x00,0x08,0x00]
+
+    e_vectored_hold_lv r2
+# CHECK: encoding: [0x1c,0x08,0x28,0x00]
+
+    e_vectored_hold_lv r5
+# CHECK: encoding: [0x1c,0x14,0x58,0x00]
+
+    e_vectored_hold_lv r7
+# CHECK: encoding: [0x1c,0x1c,0x78,0x00]
+
+    e_vectored_hold_lv r1
+# CHECK: encoding: [0x1c,0x04,0x18,0x00]
+
+    e_vectored_hold_lv r0
+# CHECK: encoding: [0x1c,0x00,0x08,0x00]
+
+    e_vectored_hold_lv r2
+# CHECK: encoding: [0x1c,0x08,0x28,0x00]
+
+    e_vectored_hold_lv r5
+# CHECK: encoding: [0x1c,0x14,0x58,0x00]
+
+    e_vectored_hold_lv r7
+# CHECK: encoding: [0x1c,0x1c,0x78,0x00]
+
+    e_vectored_hold_lv r1
+# CHECK: encoding: [0x1c,0x04,0x18,0x00]
+
+    e_vectored_hold_lv r0
+# CHECK: encoding: [0x1c,0x00,0x08,0x00]
+
+    e_vectored_hold_lv r2
+# CHECK: encoding: [0x1c,0x08,0x28,0x00]
+
+    e_vectored_hold_lv r5
+# CHECK: encoding: [0x1c,0x14,0x58,0x00]
+
+    e_vectored_hold_lv r7
+# CHECK: encoding: [0x1c,0x1c,0x78,0x00]
+
+    e_vectored_hold_lv r1
+# CHECK: encoding: [0x1c,0x04,0x18,0x00]
+
+    e_vectored_hold_lv r0
+# CHECK: encoding: [0x1c,0x00,0x08,0x00]
+
+    e_vectored_hold_lv_ze r0
+# CHECK: encoding: [0x3c,0x00,0x08,0x00]
+
+    e_vectored_hold_lv_nz r2
+# CHECK: encoding: [0x5c,0x08,0x28,0x00]
+
+    e_vectored_hold_lv_po r5
+# CHECK: encoding: [0x7c,0x14,0x58,0x00]
+
+    e_vectored_hold_lv_ne r7
+# CHECK: encoding: [0x9c,0x1c,0x78,0x00]
+
+    e_vectored_hold_lv r1
+# CHECK: encoding: [0x1c,0x04,0x18,0x00]
+
+    e_vectored_hold_lv_az r0
+# CHECK: encoding: [0xbc,0x00,0x08,0x00]
+
+    e_vectored_hold_lv_zb r2
+# CHECK: encoding: [0xdc,0x08,0x28,0x00]
+
+    e_vectored_hold_lv_ca r5
+# CHECK: encoding: [0xfc,0x14,0x58,0x00]
+
+    e_vectored_hold_lv_nc r7
+# CHECK: encoding: [0x1c,0x1d,0x78,0x00]
+
+    e_vectored_hold_lv_cz r1
+# CHECK: encoding: [0x3c,0x05,0x18,0x00]
+
+    e_vectored_hold_lv_spo r0
+# CHECK: encoding: [0x5c,0x01,0x08,0x00]
+
+    e_vectored_hold_lv_sne r2
+# CHECK: encoding: [0x7c,0x09,0x28,0x00]
+
+    e_vectored_hold_lv_nbs r5
+# CHECK: encoding: [0x9c,0x15,0x58,0x00]
+
+    e_vectored_hold_lv_nex r7
+# CHECK: encoding: [0xbc,0x1d,0x78,0x00]
+
+    e_vectored_hold_lv_bs r1
+# CHECK: encoding: [0xdc,0x05,0x18,0x00]
+
+    e_vectored_hold_lv_ex r0
+# CHECK: encoding: [0xfc,0x01,0x08,0x00]
+
+    e_vectored_hold_lv_nra r0
+# CHECK: encoding: [0x1c,0x00,0x0c,0x00]
+
+    e_vectored_hold_lv_nra r2
+# CHECK: encoding: [0x1c,0x08,0x2c,0x00]
+
+    e_vectored_hold_lv_nra r5
+# CHECK: encoding: [0x1c,0x14,0x5c,0x00]
+
+    e_vectored_hold_lv_nra r7
+# CHECK: encoding: [0x1c,0x1c,0x7c,0x00]
+
+    e_vectored_hold_lv_nra r1
+# CHECK: encoding: [0x1c,0x04,0x1c,0x00]
+
+    e_vectored_hold_lv_nra r0
+# CHECK: encoding: [0x1c,0x00,0x0c,0x00]
+
+    e_vectored_hold_lv_nra r2
+# CHECK: encoding: [0x1c,0x08,0x2c,0x00]
+
+    e_vectored_hold_lv_nra r5
+# CHECK: encoding: [0x1c,0x14,0x5c,0x00]
+
+    e_vectored_hold_lv_nra r7
+# CHECK: encoding: [0x1c,0x1c,0x7c,0x00]
+
+    e_vectored_hold_lv_nra r1
+# CHECK: encoding: [0x1c,0x04,0x1c,0x00]
+
+    e_vectored_hold_lv_nra r0
+# CHECK: encoding: [0x1c,0x00,0x0c,0x00]
+
+    e_vectored_hold_lv_nra r2
+# CHECK: encoding: [0x1c,0x08,0x2c,0x00]
+
+    e_vectored_hold_lv_nra r5
+# CHECK: encoding: [0x1c,0x14,0x5c,0x00]
+
+    e_vectored_hold_lv_nra r7
+# CHECK: encoding: [0x1c,0x1c,0x7c,0x00]
+
+    e_vectored_hold_lv_nra r1
+# CHECK: encoding: [0x1c,0x04,0x1c,0x00]
+
+    e_vectored_hold_lv_nra r0
+# CHECK: encoding: [0x1c,0x00,0x0c,0x00]
+
+    e_acc_vectored_hold r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x00,0x00]
+
+    e_acc_vectored_hold r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x20,0x7f]
+
+    e_acc_vectored_hold r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x50,0xff]
+
+    e_acc_vectored_hold r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x70,0x40]
+
+    e_acc_vectored_hold r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x10,0x0a]
+
+    e_acc_vectored_hold r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x00,0x00]
+
+    e_acc_vectored_hold r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x20,0x7f]
+
+    e_acc_vectored_hold r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x50,0xff]
+
+    e_acc_vectored_hold r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x70,0x40]
+
+    e_acc_vectored_hold r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x10,0x0a]
+
+    e_acc_vectored_hold r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x00,0x00]
+
+    e_acc_vectored_hold r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x20,0x7f]
+
+    e_acc_vectored_hold r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x50,0xff]
+
+    e_acc_vectored_hold r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x70,0x40]
+
+    e_acc_vectored_hold r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x10,0x0a]
+
+    e_acc_vectored_hold r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x00,0x00]
+
+    e_acc_vectored_hold_ze r0, 0x0
+# CHECK: encoding: [0x3c,0x02,0x00,0x00]
+
+    e_acc_vectored_hold_nz r2, 0x7f
+# CHECK: encoding: [0x5c,0x0a,0x20,0x7f]
+
+    e_acc_vectored_hold_po r5, 0xff
+# CHECK: encoding: [0x7c,0x16,0x50,0xff]
+
+    e_acc_vectored_hold_ne r7, 0x40
+# CHECK: encoding: [0x9c,0x1e,0x70,0x40]
+
+    e_acc_vectored_hold r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x10,0x0a]
+
+    e_acc_vectored_hold_az r0, 0x0
+# CHECK: encoding: [0xbc,0x02,0x00,0x00]
+
+    e_acc_vectored_hold_zb r2, 0x7f
+# CHECK: encoding: [0xdc,0x0a,0x20,0x7f]
+
+    e_acc_vectored_hold_ca r5, 0xff
+# CHECK: encoding: [0xfc,0x16,0x50,0xff]
+
+    e_acc_vectored_hold_nc r7, 0x40
+# CHECK: encoding: [0x1c,0x1f,0x70,0x40]
+
+    e_acc_vectored_hold_cz r1, 0xa
+# CHECK: encoding: [0x3c,0x07,0x10,0x0a]
+
+    e_acc_vectored_hold_spo r0, 0x0
+# CHECK: encoding: [0x5c,0x03,0x00,0x00]
+
+    e_acc_vectored_hold_sne r2, 0x7f
+# CHECK: encoding: [0x7c,0x0b,0x20,0x7f]
+
+    e_acc_vectored_hold_nbs r5, 0xff
+# CHECK: encoding: [0x9c,0x17,0x50,0xff]
+
+    e_acc_vectored_hold_nex r7, 0x40
+# CHECK: encoding: [0xbc,0x1f,0x70,0x40]
+
+    e_acc_vectored_hold_bs r1, 0xa
+# CHECK: encoding: [0xdc,0x07,0x10,0x0a]
+
+    e_acc_vectored_hold_ex r0, 0x0
+# CHECK: encoding: [0xfc,0x03,0x00,0x00]
+
+    e_acc_vectored_hold_nra r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x04,0x00]
+
+    e_acc_vectored_hold_nra r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x24,0x7f]
+
+    e_acc_vectored_hold_nra r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x54,0xff]
+
+    e_acc_vectored_hold_nra r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x74,0x40]
+
+    e_acc_vectored_hold_nra r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x14,0x0a]
+
+    e_acc_vectored_hold_nra r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x04,0x00]
+
+    e_acc_vectored_hold_nra r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x24,0x7f]
+
+    e_acc_vectored_hold_nra r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x54,0xff]
+
+    e_acc_vectored_hold_nra r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x74,0x40]
+
+    e_acc_vectored_hold_nra r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x14,0x0a]
+
+    e_acc_vectored_hold_nra r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x04,0x00]
+
+    e_acc_vectored_hold_nra r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x24,0x7f]
+
+    e_acc_vectored_hold_nra r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x54,0xff]
+
+    e_acc_vectored_hold_nra r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x74,0x40]
+
+    e_acc_vectored_hold_nra r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x14,0x0a]
+
+    e_acc_vectored_hold_nra r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x04,0x00]
+
+    e_acc_vectored_hold_lv r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x08,0x00]
+
+    e_acc_vectored_hold_lv r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x28,0x7f]
+
+    e_acc_vectored_hold_lv r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x58,0xff]
+
+    e_acc_vectored_hold_lv r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x78,0x40]
+
+    e_acc_vectored_hold_lv r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x18,0x0a]
+
+    e_acc_vectored_hold_lv r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x08,0x00]
+
+    e_acc_vectored_hold_lv r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x28,0x7f]
+
+    e_acc_vectored_hold_lv r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x58,0xff]
+
+    e_acc_vectored_hold_lv r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x78,0x40]
+
+    e_acc_vectored_hold_lv r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x18,0x0a]
+
+    e_acc_vectored_hold_lv r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x08,0x00]
+
+    e_acc_vectored_hold_lv r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x28,0x7f]
+
+    e_acc_vectored_hold_lv r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x58,0xff]
+
+    e_acc_vectored_hold_lv r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x78,0x40]
+
+    e_acc_vectored_hold_lv r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x18,0x0a]
+
+    e_acc_vectored_hold_lv r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x08,0x00]
+
+    e_acc_vectored_hold_lv_ze r0, 0x0
+# CHECK: encoding: [0x3c,0x02,0x08,0x00]
+
+    e_acc_vectored_hold_lv_nz r2, 0x7f
+# CHECK: encoding: [0x5c,0x0a,0x28,0x7f]
+
+    e_acc_vectored_hold_lv_po r5, 0xff
+# CHECK: encoding: [0x7c,0x16,0x58,0xff]
+
+    e_acc_vectored_hold_lv_ne r7, 0x40
+# CHECK: encoding: [0x9c,0x1e,0x78,0x40]
+
+    e_acc_vectored_hold_lv r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x18,0x0a]
+
+    e_acc_vectored_hold_lv_az r0, 0x0
+# CHECK: encoding: [0xbc,0x02,0x08,0x00]
+
+    e_acc_vectored_hold_lv_zb r2, 0x7f
+# CHECK: encoding: [0xdc,0x0a,0x28,0x7f]
+
+    e_acc_vectored_hold_lv_ca r5, 0xff
+# CHECK: encoding: [0xfc,0x16,0x58,0xff]
+
+    e_acc_vectored_hold_lv_nc r7, 0x40
+# CHECK: encoding: [0x1c,0x1f,0x78,0x40]
+
+    e_acc_vectored_hold_lv_cz r1, 0xa
+# CHECK: encoding: [0x3c,0x07,0x18,0x0a]
+
+    e_acc_vectored_hold_lv_spo r0, 0x0
+# CHECK: encoding: [0x5c,0x03,0x08,0x00]
+
+    e_acc_vectored_hold_lv_sne r2, 0x7f
+# CHECK: encoding: [0x7c,0x0b,0x28,0x7f]
+
+    e_acc_vectored_hold_lv_nbs r5, 0xff
+# CHECK: encoding: [0x9c,0x17,0x58,0xff]
+
+    e_acc_vectored_hold_lv_nex r7, 0x40
+# CHECK: encoding: [0xbc,0x1f,0x78,0x40]
+
+    e_acc_vectored_hold_lv_bs r1, 0xa
+# CHECK: encoding: [0xdc,0x07,0x18,0x0a]
+
+    e_acc_vectored_hold_lv_ex r0, 0x0
+# CHECK: encoding: [0xfc,0x03,0x08,0x00]
+
+    e_acc_vectored_hold_lv_nra r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x0c,0x00]
+
+    e_acc_vectored_hold_lv_nra r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x2c,0x7f]
+
+    e_acc_vectored_hold_lv_nra r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x5c,0xff]
+
+    e_acc_vectored_hold_lv_nra r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x7c,0x40]
+
+    e_acc_vectored_hold_lv_nra r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x1c,0x0a]
+
+    e_acc_vectored_hold_lv_nra r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x0c,0x00]
+
+    e_acc_vectored_hold_lv_nra r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x2c,0x7f]
+
+    e_acc_vectored_hold_lv_nra r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x5c,0xff]
+
+    e_acc_vectored_hold_lv_nra r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x7c,0x40]
+
+    e_acc_vectored_hold_lv_nra r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x1c,0x0a]
+
+    e_acc_vectored_hold_lv_nra r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x0c,0x00]
+
+    e_acc_vectored_hold_lv_nra r2, 0x7f
+# CHECK: encoding: [0x1c,0x0a,0x2c,0x7f]
+
+    e_acc_vectored_hold_lv_nra r5, 0xff
+# CHECK: encoding: [0x1c,0x16,0x5c,0xff]
+
+    e_acc_vectored_hold_lv_nra r7, 0x40
+# CHECK: encoding: [0x1c,0x1e,0x7c,0x40]
+
+    e_acc_vectored_hold_lv_nra r1, 0xa
+# CHECK: encoding: [0x1c,0x06,0x1c,0x0a]
+
+    e_acc_vectored_hold_lv_nra r0, 0x0
+# CHECK: encoding: [0x1c,0x02,0x0c,0x00]
+
+    e_ldr_reg r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x04,0x00]
+
+    e_ldr_reg r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x04,0x02]
+
+    e_ldr_reg r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x05,0x05]
+
+    e_ldr_reg r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x05,0x07]
+
+    e_ldr_reg r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x04,0x01]
+
+    e_ldr_reg r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x04,0x00]
+
+    e_ldr_reg r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x04,0x02]
+
+    e_ldr_reg r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x05,0x05]
+
+    e_ldr_reg r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x05,0x07]
+
+    e_ldr_reg r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x04,0x01]
+
+    e_ldr_reg r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x04,0x00]
+
+    e_ldr_reg r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x04,0x02]
+
+    e_ldr_reg r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x05,0x05]
+
+    e_ldr_reg r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x05,0x07]
+
+    e_ldr_reg r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x04,0x01]
+
+    e_ldr_reg r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x04,0x00]
+
+    e_ldr_regb r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x00,0x00]
+
+    e_ldr_regb r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x00,0x02]
+
+    e_ldr_regb r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x01,0x05]
+
+    e_ldr_regb r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x01,0x07]
+
+    e_ldr_regb r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x00,0x01]
+
+    e_ldr_regb r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x00,0x00]
+
+    e_ldr_regb r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x00,0x02]
+
+    e_ldr_regb r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x01,0x05]
+
+    e_ldr_regb r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x01,0x07]
+
+    e_ldr_regb r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x00,0x01]
+
+    e_ldr_regb r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x00,0x00]
+
+    e_ldr_regb r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x00,0x02]
+
+    e_ldr_regb r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x01,0x05]
+
+    e_ldr_regb r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x01,0x07]
+
+    e_ldr_regb r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x00,0x01]
+
+    e_ldr_regb r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x00,0x00]
+
+    e_ldr_regbs r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x20,0x00]
+
+    e_ldr_regbs r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x20,0x02]
+
+    e_ldr_regbs r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x21,0x05]
+
+    e_ldr_regbs r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x21,0x07]
+
+    e_ldr_regbs r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x20,0x01]
+
+    e_ldr_regbs r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x20,0x00]
+
+    e_ldr_regbs r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x20,0x02]
+
+    e_ldr_regbs r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x21,0x05]
+
+    e_ldr_regbs r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x21,0x07]
+
+    e_ldr_regbs r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x20,0x01]
+
+    e_ldr_regbs r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x20,0x00]
+
+    e_ldr_regbs r2, r2, r2
+# CHECK: encoding: [0x1d,0x88,0x20,0x02]
+
+    e_ldr_regbs r5, r5, r5
+# CHECK: encoding: [0x1d,0x54,0x21,0x05]
+
+    e_ldr_regbs r7, r7, r7
+# CHECK: encoding: [0x1d,0xdc,0x21,0x07]
+
+    e_ldr_regbs r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x20,0x01]
+
+    e_ldr_regbs r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x20,0x00]
+
+    e_ldr_reg_ze r0, r0, r0
+# CHECK: encoding: [0x3d,0x00,0x04,0x00]
+
+    e_ldr_reg_nz r2, r2, r2
+# CHECK: encoding: [0x5d,0x88,0x04,0x02]
+
+    e_ldr_reg_po r5, r5, r5
+# CHECK: encoding: [0x7d,0x54,0x05,0x05]
+
+    e_ldr_reg_ne r7, r7, r7
+# CHECK: encoding: [0x9d,0xdc,0x05,0x07]
+
+    e_ldr_reg r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x04,0x01]
+
+    e_ldr_reg_az r0, r0, r0
+# CHECK: encoding: [0xbd,0x00,0x04,0x00]
+
+    e_ldr_reg_zb r2, r2, r2
+# CHECK: encoding: [0xdd,0x88,0x04,0x02]
+
+    e_ldr_reg_ca r5, r5, r5
+# CHECK: encoding: [0xfd,0x54,0x05,0x05]
+
+    e_ldr_reg_nc r7, r7, r7
+# CHECK: encoding: [0x1d,0xdd,0x05,0x07]
+
+    e_ldr_reg_cz r1, r1, r1
+# CHECK: encoding: [0x3d,0x45,0x04,0x01]
+
+    e_ldr_reg_spo r0, r0, r0
+# CHECK: encoding: [0x5d,0x01,0x04,0x00]
+
+    e_ldr_reg_sne r2, r2, r2
+# CHECK: encoding: [0x7d,0x89,0x04,0x02]
+
+    e_ldr_reg_nbs r5, r5, r5
+# CHECK: encoding: [0x9d,0x55,0x05,0x05]
+
+    e_ldr_reg_nex r7, r7, r7
+# CHECK: encoding: [0xbd,0xdd,0x05,0x07]
+
+    e_ldr_reg_bs r1, r1, r1
+# CHECK: encoding: [0xdd,0x45,0x04,0x01]
+
+    e_ldr_reg_ex r0, r0, r0
+# CHECK: encoding: [0xfd,0x01,0x04,0x00]
+
+    e_ldr_regb_ze r0, r0, r0
+# CHECK: encoding: [0x3d,0x00,0x00,0x00]
+
+    e_ldr_regb_nz r2, r2, r2
+# CHECK: encoding: [0x5d,0x88,0x00,0x02]
+
+    e_ldr_regb_po r5, r5, r5
+# CHECK: encoding: [0x7d,0x54,0x01,0x05]
+
+    e_ldr_regb_ne r7, r7, r7
+# CHECK: encoding: [0x9d,0xdc,0x01,0x07]
+
+    e_ldr_regb r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x00,0x01]
+
+    e_ldr_regb_az r0, r0, r0
+# CHECK: encoding: [0xbd,0x00,0x00,0x00]
+
+    e_ldr_regb_zb r2, r2, r2
+# CHECK: encoding: [0xdd,0x88,0x00,0x02]
+
+    e_ldr_regb_ca r5, r5, r5
+# CHECK: encoding: [0xfd,0x54,0x01,0x05]
+
+    e_ldr_regb_nc r7, r7, r7
+# CHECK: encoding: [0x1d,0xdd,0x01,0x07]
+
+    e_ldr_regb_cz r1, r1, r1
+# CHECK: encoding: [0x3d,0x45,0x00,0x01]
+
+    e_ldr_regb_spo r0, r0, r0
+# CHECK: encoding: [0x5d,0x01,0x00,0x00]
+
+    e_ldr_regb_sne r2, r2, r2
+# CHECK: encoding: [0x7d,0x89,0x00,0x02]
+
+    e_ldr_regb_nbs r5, r5, r5
+# CHECK: encoding: [0x9d,0x55,0x01,0x05]
+
+    e_ldr_regb_nex r7, r7, r7
+# CHECK: encoding: [0xbd,0xdd,0x01,0x07]
+
+    e_ldr_regb_bs r1, r1, r1
+# CHECK: encoding: [0xdd,0x45,0x00,0x01]
+
+    e_ldr_regb_ex r0, r0, r0
+# CHECK: encoding: [0xfd,0x01,0x00,0x00]
+
+    e_ldr_regbs_ze r0, r0, r0
+# CHECK: encoding: [0x3d,0x00,0x20,0x00]
+
+    e_ldr_regbs_nz r2, r2, r2
+# CHECK: encoding: [0x5d,0x88,0x20,0x02]
+
+    e_ldr_regbs_po r5, r5, r5
+# CHECK: encoding: [0x7d,0x54,0x21,0x05]
+
+    e_ldr_regbs_ne r7, r7, r7
+# CHECK: encoding: [0x9d,0xdc,0x21,0x07]
+
+    e_ldr_regbs r1, r1, r1
+# CHECK: encoding: [0x1d,0x44,0x20,0x01]
+
+    e_ldr_regbs_az r0, r0, r0
+# CHECK: encoding: [0xbd,0x00,0x20,0x00]
+
+    e_ldr_regbs_zb r2, r2, r2
+# CHECK: encoding: [0xdd,0x88,0x20,0x02]
+
+    e_ldr_regbs_ca r5, r5, r5
+# CHECK: encoding: [0xfd,0x54,0x21,0x05]
+
+    e_ldr_regbs_nc r7, r7, r7
+# CHECK: encoding: [0x1d,0xdd,0x21,0x07]
+
+    e_ldr_regbs_cz r1, r1, r1
+# CHECK: encoding: [0x3d,0x45,0x20,0x01]
+
+    e_ldr_regbs_spo r0, r0, r0
+# CHECK: encoding: [0x5d,0x01,0x20,0x00]
+
+    e_ldr_regbs_sne r2, r2, r2
+# CHECK: encoding: [0x7d,0x89,0x20,0x02]
+
+    e_ldr_regbs_nbs r5, r5, r5
+# CHECK: encoding: [0x9d,0x55,0x21,0x05]
+
+    e_ldr_regbs_nex r7, r7, r7
+# CHECK: encoding: [0xbd,0xdd,0x21,0x07]
+
+    e_ldr_regbs_bs r1, r1, r1
+# CHECK: encoding: [0xdd,0x45,0x20,0x01]
+
+    e_ldr_regbs_ex r0, r0, r0
+# CHECK: encoding: [0xfd,0x01,0x20,0x00]
+
+    e_str_reg r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x04,0x40]
+
+    e_str_reg r2, r2, r2
+# CHECK: encoding: [0x1d,0x80,0x24,0x42]
+
+    e_str_reg r5, r5, r5
+# CHECK: encoding: [0x1d,0x40,0x55,0x45]
+
+    e_str_reg r7, r7, r7
+# CHECK: encoding: [0x1d,0xc0,0x75,0x47]
+
+    e_str_reg r1, r1, r1
+# CHECK: encoding: [0x1d,0x40,0x14,0x41]
+
+    e_str_reg r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x04,0x40]
+
+    e_str_reg r2, r2, r2
+# CHECK: encoding: [0x1d,0x80,0x24,0x42]
+
+    e_str_reg r5, r5, r5
+# CHECK: encoding: [0x1d,0x40,0x55,0x45]
+
+    e_str_reg r7, r7, r7
+# CHECK: encoding: [0x1d,0xc0,0x75,0x47]
+
+    e_str_reg r1, r1, r1
+# CHECK: encoding: [0x1d,0x40,0x14,0x41]
+
+    e_str_reg r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x04,0x40]
+
+    e_str_reg r2, r2, r2
+# CHECK: encoding: [0x1d,0x80,0x24,0x42]
+
+    e_str_reg r5, r5, r5
+# CHECK: encoding: [0x1d,0x40,0x55,0x45]
+
+    e_str_reg r7, r7, r7
+# CHECK: encoding: [0x1d,0xc0,0x75,0x47]
+
+    e_str_reg r1, r1, r1
+# CHECK: encoding: [0x1d,0x40,0x14,0x41]
+
+    e_str_reg r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x04,0x40]
+
+    e_str_regb r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x00,0x40]
+
+    e_str_regb r2, r2, r2
+# CHECK: encoding: [0x1d,0x80,0x20,0x42]
+
+    e_str_regb r5, r5, r5
+# CHECK: encoding: [0x1d,0x40,0x51,0x45]
+
+    e_str_regb r7, r7, r7
+# CHECK: encoding: [0x1d,0xc0,0x71,0x47]
+
+    e_str_regb r1, r1, r1
+# CHECK: encoding: [0x1d,0x40,0x10,0x41]
+
+    e_str_regb r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x00,0x40]
+
+    e_str_regb r2, r2, r2
+# CHECK: encoding: [0x1d,0x80,0x20,0x42]
+
+    e_str_regb r5, r5, r5
+# CHECK: encoding: [0x1d,0x40,0x51,0x45]
+
+    e_str_regb r7, r7, r7
+# CHECK: encoding: [0x1d,0xc0,0x71,0x47]
+
+    e_str_regb r1, r1, r1
+# CHECK: encoding: [0x1d,0x40,0x10,0x41]
+
+    e_str_regb r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x00,0x40]
+
+    e_str_regb r2, r2, r2
+# CHECK: encoding: [0x1d,0x80,0x20,0x42]
+
+    e_str_regb r5, r5, r5
+# CHECK: encoding: [0x1d,0x40,0x51,0x45]
+
+    e_str_regb r7, r7, r7
+# CHECK: encoding: [0x1d,0xc0,0x71,0x47]
+
+    e_str_regb r1, r1, r1
+# CHECK: encoding: [0x1d,0x40,0x10,0x41]
+
+    e_str_regb r0, r0, r0
+# CHECK: encoding: [0x1d,0x00,0x00,0x40]
+
+    e_str_reg_ze r0, r0, r0
+# CHECK: encoding: [0x3d,0x00,0x04,0x40]
+
+    e_str_reg_nz r2, r2, r2
+# CHECK: encoding: [0x5d,0x80,0x24,0x42]
+
+    e_str_reg_po r5, r5, r5
+# CHECK: encoding: [0x7d,0x40,0x55,0x45]
+
+    e_str_reg_ne r7, r7, r7
+# CHECK: encoding: [0x9d,0xc0,0x75,0x47]
+
+    e_str_reg r1, r1, r1
+# CHECK: encoding: [0x1d,0x40,0x14,0x41]
+
+    e_str_reg_az r0, r0, r0
+# CHECK: encoding: [0xbd,0x00,0x04,0x40]
+
+    e_str_reg_zb r2, r2, r2
+# CHECK: encoding: [0xdd,0x80,0x24,0x42]
+
+    e_str_reg_ca r5, r5, r5
+# CHECK: encoding: [0xfd,0x40,0x55,0x45]
+
+    e_str_reg_nc r7, r7, r7
+# CHECK: encoding: [0x1d,0xc1,0x75,0x47]
+
+    e_str_reg_cz r1, r1, r1
+# CHECK: encoding: [0x3d,0x41,0x14,0x41]
+
+    e_str_reg_spo r0, r0, r0
+# CHECK: encoding: [0x5d,0x01,0x04,0x40]
+
+    e_str_reg_sne r2, r2, r2
+# CHECK: encoding: [0x7d,0x81,0x24,0x42]
+
+    e_str_reg_nbs r5, r5, r5
+# CHECK: encoding: [0x9d,0x41,0x55,0x45]
+
+    e_str_reg_nex r7, r7, r7
+# CHECK: encoding: [0xbd,0xc1,0x75,0x47]
+
+    e_str_reg_bs r1, r1, r1
+# CHECK: encoding: [0xdd,0x41,0x14,0x41]
+
+    e_str_reg_ex r0, r0, r0
+# CHECK: encoding: [0xfd,0x01,0x04,0x40]
+
+    e_str_regb_ze r0, r0, r0
+# CHECK: encoding: [0x3d,0x00,0x00,0x40]
+
+    e_str_regb_nz r2, r2, r2
+# CHECK: encoding: [0x5d,0x80,0x20,0x42]
+
+    e_str_regb_po r5, r5, r5
+# CHECK: encoding: [0x7d,0x40,0x51,0x45]
+
+    e_str_regb_ne r7, r7, r7
+# CHECK: encoding: [0x9d,0xc0,0x71,0x47]
+
+    e_str_regb r1, r1, r1
+# CHECK: encoding: [0x1d,0x40,0x10,0x41]
+
+    e_str_regb_az r0, r0, r0
+# CHECK: encoding: [0xbd,0x00,0x00,0x40]
+
+    e_str_regb_zb r2, r2, r2
+# CHECK: encoding: [0xdd,0x80,0x20,0x42]
+
+    e_str_regb_ca r5, r5, r5
+# CHECK: encoding: [0xfd,0x40,0x51,0x45]
+
+    e_str_regb_nc r7, r7, r7
+# CHECK: encoding: [0x1d,0xc1,0x71,0x47]
+
+    e_str_regb_cz r1, r1, r1
+# CHECK: encoding: [0x3d,0x41,0x10,0x41]
+
+    e_str_regb_spo r0, r0, r0
+# CHECK: encoding: [0x5d,0x01,0x00,0x40]
+
+    e_str_regb_sne r2, r2, r2
+# CHECK: encoding: [0x7d,0x81,0x20,0x42]
+
+    e_str_regb_nbs r5, r5, r5
+# CHECK: encoding: [0x9d,0x41,0x51,0x45]
+
+    e_str_regb_nex r7, r7, r7
+# CHECK: encoding: [0xbd,0xc1,0x71,0x47]
+
+    e_str_regb_bs r1, r1, r1
+# CHECK: encoding: [0xdd,0x41,0x10,0x41]
+
+    e_str_regb_ex r0, r0, r0
+# CHECK: encoding: [0xfd,0x01,0x00,0x40]
+
+    e_modify_gpo_byte 0x0, 0x0, 0x0
+# CHECK: encoding: [0x1e,0x00,0x00,0x00]
+
+    e_modify_gpo_byte 0x7f, 0x7f, 0x7f
+# CHECK: encoding: [0x1e,0x7f,0x7f,0x7f]
+
+    e_modify_gpo_byte 0xff, 0xff, 0xff
+# CHECK: encoding: [0x1e,0xff,0xff,0xff]
+
+    e_modify_gpo_byte 0x40, 0x40, 0x40
+# CHECK: encoding: [0x1e,0x40,0x40,0x40]
+
+    e_modify_gpo_byte 0xa, 0xa, 0xa
+# CHECK: encoding: [0x1e,0x0a,0x0a,0x0a]
+
+    e_modify_gpo_byte 0x0, 0x0, 0x0
+# CHECK: encoding: [0x1e,0x00,0x00,0x00]
+
+    e_modify_gpo_byte 0x7f, 0x7f, 0x7f
+# CHECK: encoding: [0x1e,0x7f,0x7f,0x7f]
+
+    e_modify_gpo_byte 0xff, 0xff, 0xff
+# CHECK: encoding: [0x1e,0xff,0xff,0xff]
+
+    e_modify_gpo_byte 0x40, 0x40, 0x40
+# CHECK: encoding: [0x1e,0x40,0x40,0x40]
+
+    e_modify_gpo_byte 0xa, 0xa, 0xa
+# CHECK: encoding: [0x1e,0x0a,0x0a,0x0a]
+
+    e_modify_gpo_byte 0x0, 0x0, 0x0
+# CHECK: encoding: [0x1e,0x00,0x00,0x00]
+
+    e_modify_gpo_byte 0x7f, 0x7f, 0x7f
+# CHECK: encoding: [0x1e,0x7f,0x7f,0x7f]
+
+    e_modify_gpo_byte 0xff, 0xff, 0xff
+# CHECK: encoding: [0x1e,0xff,0xff,0xff]
+
+    e_modify_gpo_byte 0x40, 0x40, 0x40
+# CHECK: encoding: [0x1e,0x40,0x40,0x40]
+
+    e_modify_gpo_byte 0xa, 0xa, 0xa
+# CHECK: encoding: [0x1e,0x0a,0x0a,0x0a]
+
+    e_modify_gpo_byte 0x0, 0x0, 0x0
+# CHECK: encoding: [0x1e,0x00,0x00,0x00]
+
+    e_heart_rythm_imm 0x0
+# CHECK: encoding: [0x32,0x00,0x00,0x00]
+
+    e_heart_rythm_imm 0x1
+# CHECK: encoding: [0x32,0x00,0x01,0x00]
+
+    e_heart_rythm_imm 0x3
+# CHECK: encoding: [0x32,0x00,0x03,0x00]
+
+    e_heart_rythm_imm 0x7
+# CHECK: encoding: [0x32,0x00,0x07,0x00]
+
+    e_heart_rythm_imm 0xf
+# CHECK: encoding: [0x32,0x00,0x0f,0x00]
+
+    e_heart_rythm_imm 0x0
+# CHECK: encoding: [0x32,0x00,0x00,0x00]
+
+    e_heart_rythm_imm 0x1
+# CHECK: encoding: [0x32,0x00,0x01,0x00]
+
+    e_heart_rythm_imm 0x3
+# CHECK: encoding: [0x32,0x00,0x03,0x00]
+
+    e_heart_rythm_imm 0x7
+# CHECK: encoding: [0x32,0x00,0x07,0x00]
+
+    e_heart_rythm_imm 0xf
+# CHECK: encoding: [0x32,0x00,0x0f,0x00]
+
+    e_heart_rythm_imm 0x0
+# CHECK: encoding: [0x32,0x00,0x00,0x00]
+
+    e_heart_rythm_imm 0x1
+# CHECK: encoding: [0x32,0x00,0x01,0x00]
+
+    e_heart_rythm_imm 0x3
+# CHECK: encoding: [0x32,0x00,0x03,0x00]
+
+    e_heart_rythm_imm 0x7
+# CHECK: encoding: [0x32,0x00,0x07,0x00]
+
+    e_heart_rythm_imm 0xf
+# CHECK: encoding: [0x32,0x00,0x0f,0x00]
+
+    e_heart_rythm_imm 0x0
+# CHECK: encoding: [0x32,0x00,0x00,0x00]
+
+    e_heart_rythm r0
+# CHECK: encoding: [0x32,0x02,0x00,0x00]
+
+    e_heart_rythm r1
+# CHECK: encoding: [0x32,0x42,0x00,0x00]
+
+    e_heart_rythm r3
+# CHECK: encoding: [0x32,0xc2,0x00,0x00]
+
+    e_heart_rythm r7
+# CHECK: encoding: [0x32,0xc2,0x01,0x00]
+
+    e_heart_rythm ra
+# CHECK: encoding: [0x32,0xc2,0x03,0x00]
+
+    e_heart_rythm r0
+# CHECK: encoding: [0x32,0x02,0x00,0x00]
+
+    e_heart_rythm r1
+# CHECK: encoding: [0x32,0x42,0x00,0x00]
+
+    e_heart_rythm r3
+# CHECK: encoding: [0x32,0xc2,0x00,0x00]
+
+    e_heart_rythm r7
+# CHECK: encoding: [0x32,0xc2,0x01,0x00]
+
+    e_heart_rythm ra
+# CHECK: encoding: [0x32,0xc2,0x03,0x00]
+
+    e_heart_rythm r0
+# CHECK: encoding: [0x32,0x02,0x00,0x00]
+
+    e_heart_rythm r1
+# CHECK: encoding: [0x32,0x42,0x00,0x00]
+
+    e_heart_rythm r3
+# CHECK: encoding: [0x32,0xc2,0x00,0x00]
+
+    e_heart_rythm r7
+# CHECK: encoding: [0x32,0xc2,0x01,0x00]
+
+    e_heart_rythm ra
+# CHECK: encoding: [0x32,0xc2,0x03,0x00]
+
+    e_heart_rythm r0
+# CHECK: encoding: [0x32,0x02,0x00,0x00]
+
+    e_synch_all_to_beat 0x0
+# CHECK: encoding: [0x52,0x00,0x00,0x00]
+
+    e_synch_all_to_beat 0x1
+# CHECK: encoding: [0x52,0x00,0x00,0x80]
+
+    e_synch_all_to_beat 0x0
+# CHECK: encoding: [0x52,0x00,0x00,0x00]
+
+    e_synch_all_to_beat 0x1
+# CHECK: encoding: [0x52,0x00,0x00,0x80]
+
+    e_synch_all_to_beat 0x0
+# CHECK: encoding: [0x52,0x00,0x00,0x00]
+
+    e_synch_all_to_beat 0x1
+# CHECK: encoding: [0x52,0x00,0x00,0x80]
+
+    e_synch_all_to_beat 0x0
+# CHECK: encoding: [0x52,0x00,0x00,0x00]
+
+    e_synch_all_to_beat 0x1
+# CHECK: encoding: [0x52,0x00,0x00,0x80]
+
+    e_synch_all_to_beat 0x0
+# CHECK: encoding: [0x52,0x00,0x00,0x00]
+
+    e_synch_all_to_beat 0x1
+# CHECK: encoding: [0x52,0x00,0x00,0x80]
+
+    e_synch_all_to_beat 0x0
+# CHECK: encoding: [0x52,0x00,0x00,0x00]
+
+    e_synch_all_to_beat 0x1
+# CHECK: encoding: [0x52,0x00,0x00,0x80]
+
+    e_synch_all_to_beat 0x0
+# CHECK: encoding: [0x52,0x00,0x00,0x00]
+
+    e_synch_all_to_beat 0x1
+# CHECK: encoding: [0x52,0x00,0x00,0x80]
+
+    e_synch_all_to_beat 0x0
+# CHECK: encoding: [0x52,0x00,0x00,0x00]
+
+    e_synch_all_to_beat 0x1
+# CHECK: encoding: [0x52,0x00,0x00,0x80]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]
+
+    e_wait_for_beat
+# CHECK: encoding: [0x72,0x00,0x00,0x00]

>From 6779385eef1ea852f32c2fa0797fd5ca72f923cb Mon Sep 17 00:00:00 2001
From: Richard Pasek <rpasek at google.com>
Date: Mon, 1 Jun 2026 20:25:22 -0400
Subject: [PATCH 2/7] [clang] Add EZH target support

This commit adds support for the NXP EZH (SmartDMA) target to Clang,
including target info, driver toolchain definitions, and compiler
options.

Information sources:
* SmartDMA Cookbook (AN14650.pdf)
* fsl_smartdma_prv.h
---
 clang/cmake/caches/EZHBaremetal.cmake      | 38 +++++++++
 clang/include/clang/Options/Options.td     |  4 +
 clang/lib/Basic/CMakeLists.txt             |  1 +
 clang/lib/Basic/Targets.cpp                |  4 +
 clang/lib/Basic/Targets/EZH.cpp            | 39 +++++++++
 clang/lib/Basic/Targets/EZH.h              | 92 ++++++++++++++++++++++
 clang/lib/CodeGen/CodeGenModule.cpp        |  3 +
 clang/lib/Driver/Driver.cpp                |  4 +
 clang/lib/Driver/ToolChains/CommonArgs.cpp |  4 +
 clang/lib/Driver/ToolChains/EZH.h          | 42 ++++++++++
 10 files changed, 231 insertions(+)
 create mode 100644 clang/cmake/caches/EZHBaremetal.cmake
 create mode 100644 clang/lib/Basic/Targets/EZH.cpp
 create mode 100644 clang/lib/Basic/Targets/EZH.h
 create mode 100644 clang/lib/Driver/ToolChains/EZH.h

diff --git a/clang/cmake/caches/EZHBaremetal.cmake b/clang/cmake/caches/EZHBaremetal.cmake
new file mode 100644
index 0000000000000..030029cadbfae
--- /dev/null
+++ b/clang/cmake/caches/EZHBaremetal.cmake
@@ -0,0 +1,38 @@
+set(LLVM_TARGETS_TO_BUILD X86;EZH CACHE STRING "")
+
+set(LLVM_ENABLE_PROJECTS "clang;lld" CACHE STRING "")
+set(LLVM_ENABLE_RUNTIMES "compiler-rt;libc" CACHE STRING "")
+
+set(LLVM_BUILTIN_TARGETS "ezh-none-elf" CACHE STRING "")
+set(LLVM_RUNTIME_TARGETS "ezh-none-elf" CACHE STRING "")
+
+set(BUILTINS_ezh-none-elf_CMAKE_SYSTEM_NAME Generic CACHE STRING "")
+set(BUILTINS_ezh-none-elf_COMPILER_RT_BAREMETAL_BUILD ON CACHE BOOL "")
+set(BUILTINS_ezh-none-elf_COMPILER_RT_OS_DIR "baremetal" CACHE STRING "")
+
+set(RUNTIMES_ezh-none-elf_LLVM_LIBC_FULL_BUILD ON CACHE BOOL "")
+set(RUNTIMES_ezh-none-elf_LIBC_TARGET_OS "baremetal" CACHE STRING "")
+set(RUNTIMES_ezh-none-elf_LIBC_TARGET_ARCHITECTURE "ezh" CACHE STRING "")
+set(RUNTIMES_ezh-none-elf_BUILD_SHARED_LIBS OFF CACHE BOOL "")
+set(RUNTIMES_ezh-none-elf_CMAKE_C_FLAGS "-Wno-everything -nostdlib" CACHE STRING "")
+
+set(LLVM_INSTALL_TOOLCHAIN_ONLY ON CACHE BOOL "")
+set(LLVM_TOOLCHAIN_TOOLS
+  llc
+  llvm-ar
+  llvm-nm
+  llvm-objdump
+  llvm-ranlib
+  llvm-readobj
+  llvm-size
+  opt
+  CACHE STRING "")
+
+set(LLVM_DISTRIBUTION_COMPONENTS
+  clang
+  lld
+  clang-resource-headers
+  builtins-ezh-none-elf
+  runtimes
+  ${LLVM_TOOLCHAIN_TOOLS}
+  CACHE STRING "")
diff --git a/clang/include/clang/Options/Options.td b/clang/include/clang/Options/Options.td
index 8451a3698ef17..a05186c1110da 100644
--- a/clang/include/clang/Options/Options.td
+++ b/clang/include/clang/Options/Options.td
@@ -5351,6 +5351,10 @@ def mlong_double_128 : Flag<["-"], "mlong-double-128">, Group<LongDouble_Group>,
 let Flags = [TargetSpecific] in {
 def mno_long_calls : Flag<["-"], "mno-long-calls">, Group<m_Group>,
   HelpText<"Restore the default behaviour of not generating long calls">;
+def mezh_bitslice_interrupts : Flag<["-"], "mezh-bitslice-interrupts">, Group<m_Group>,
+  HelpText<"Enable EZH bitslice interrupt workaround (injection of e_gotol_bs before branches/calls)">;
+def mno_ezh_bitslice_interrupts : Flag<["-"], "mno-ezh-bitslice-interrupts">, Group<m_Group>,
+  HelpText<"Disable EZH bitslice interrupt workaround (injection of e_gotol_bs before branches/calls)">;
 } // let Flags = [TargetSpecific]
 def mexecute_only : Flag<["-"], "mexecute-only">, Group<m_arm_Features_Group>,
   HelpText<"Disallow generation of data access to code sections (AArch64/ARM only)">;
diff --git a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt
index 350c77696bcc4..5d7a174588068 100644
--- a/clang/lib/Basic/CMakeLists.txt
+++ b/clang/lib/Basic/CMakeLists.txt
@@ -103,6 +103,7 @@ add_clang_library(clangBasic
   Targets/CSKY.cpp
   Targets/DirectX.cpp
   Targets/Hexagon.cpp
+  Targets/EZH.cpp
   Targets/Lanai.cpp
   Targets/LoongArch.cpp
   Targets/M68k.cpp
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index ed88ae7173bad..0e180f728ccbc 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -21,6 +21,7 @@
 #include "Targets/BPF.h"
 #include "Targets/CSKY.h"
 #include "Targets/DirectX.h"
+#include "Targets/EZH.h"
 #include "Targets/Hexagon.h"
 #include "Targets/Lanai.h"
 #include "Targets/LoongArch.h"
@@ -132,6 +133,9 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
       return std::make_unique<H2TargetInfo<HexagonTargetInfo>>(Triple, Opts);
     return std::make_unique<HexagonTargetInfo>(Triple, Opts);
 
+  case llvm::Triple::ezh:
+    return std::make_unique<EZHTargetInfo>(Triple, Opts);
+
   case llvm::Triple::lanai:
     return std::make_unique<LanaiTargetInfo>(Triple, Opts);
 
diff --git a/clang/lib/Basic/Targets/EZH.cpp b/clang/lib/Basic/Targets/EZH.cpp
new file mode 100644
index 0000000000000..924b978e82c42
--- /dev/null
+++ b/clang/lib/Basic/Targets/EZH.cpp
@@ -0,0 +1,39 @@
+//===--- EZH.cpp - Implement EZH target feature support -------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements EZH TargetInfo objects.
+//
+//===----------------------------------------------------------------------===//
+
+#include "EZH.h"
+#include "clang/Basic/MacroBuilder.h"
+
+using namespace clang;
+using namespace clang::targets;
+
+const char *const EZHTargetInfo::GCCRegNames[] = {
+    "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
+    "gpo", "gpd", "cfs", "cfm", "sp", "pc", "gpi", "ra"
+};
+
+ArrayRef<const char *> EZHTargetInfo::getGCCRegNames() const {
+  return llvm::ArrayRef(GCCRegNames);
+}
+
+ArrayRef<TargetInfo::GCCRegAlias> EZHTargetInfo::getGCCRegAliases() const {
+  return {};
+}
+
+void EZHTargetInfo::getTargetDefines(const LangOptions &Opts,
+                                       MacroBuilder &Builder) const {
+  Builder.defineMacro("__ezh__");
+  Builder.defineMacro("__SOFTFP__");
+  if (HasBitsliceInterrupts) {
+    Builder.defineMacro("__EZH_BITSLICE_INTERRUPTS__");
+  }
+}
diff --git a/clang/lib/Basic/Targets/EZH.h b/clang/lib/Basic/Targets/EZH.h
new file mode 100644
index 0000000000000..7c1d4d1b74718
--- /dev/null
+++ b/clang/lib/Basic/Targets/EZH.h
@@ -0,0 +1,92 @@
+//===--- EZH.h - Declare EZH target feature support -------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file declares EZH TargetInfo objects.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_LIB_BASIC_TARGETS_EZH_H
+#define LLVM_CLANG_LIB_BASIC_TARGETS_EZH_H
+
+#include "clang/Basic/TargetInfo.h"
+#include "clang/Basic/TargetOptions.h"
+#include "llvm/Support/Compiler.h"
+#include "llvm/TargetParser/Triple.h"
+
+namespace clang {
+namespace targets {
+
+class LLVM_LIBRARY_VISIBILITY EZHTargetInfo : public TargetInfo {
+  static const char *const GCCRegNames[];
+  bool HasBitsliceInterrupts = true;
+
+public:
+  EZHTargetInfo(const llvm::Triple &Triple, const TargetOptions &)
+      : TargetInfo(Triple) {
+    resetDataLayout("e-m:e-p:32:32-i64:32-f64:32-n32-S32");
+    RegParmMax = 4;
+    MinGlobalAlign = 32;
+    LongLongAlign = 32;
+    DoubleAlign = 32;
+    LongDoubleAlign = 32;
+    SuitableAlign = 128;
+  }
+
+
+  void getTargetDefines(const LangOptions &Opts,
+                        MacroBuilder &Builder) const override;
+
+  bool isValidCPUName(StringRef Name) const override { return true; }
+
+  void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override {}
+
+  bool setCPU(const std::string &Name) override { return true; }
+
+  bool handleTargetFeatures(std::vector<std::string> &Features,
+                            DiagnosticsEngine &Diags) override {
+    for (const auto &Feature : Features) {
+      if (Feature == "+bitslice-interrupts")
+        HasBitsliceInterrupts = true;
+      else if (Feature == "-bitslice-interrupts")
+        HasBitsliceInterrupts = false;
+    }
+    return true;
+  }
+
+  bool hasFeature(StringRef Feature) const override {
+    return Feature == "ezh" || (Feature == "bitslice-interrupts" && HasBitsliceInterrupts);
+  }
+
+  ArrayRef<const char *> getGCCRegNames() const override;
+
+  ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override;
+
+  BuiltinVaListKind getBuiltinVaListKind() const override {
+    return TargetInfo::VoidPtrBuiltinVaList;
+  }
+
+  llvm::SmallVector<Builtin::InfosShard> getTargetBuiltins() const override {
+    return {};
+  }
+
+  bool validateAsmConstraint(const char *&Name,
+                             TargetInfo::ConstraintInfo &info) const override {
+    return false;
+  }
+
+  std::string_view getClobbers() const override { return ""; }
+
+  bool hasSjLjLowering() const override { return true; }
+  bool hasBitIntType() const override { return true; }
+  bool allowsLargerPreferedTypeAlignment() const override { return false; }
+};
+
+} // namespace targets
+} // namespace clang
+
+#endif // LLVM_CLANG_LIB_BASIC_TARGETS_EZH_H
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 50089f4a5016a..58a2ea761d9ee 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -165,6 +165,9 @@ createTargetCodeGenInfo(CodeGenModule &CGM) {
     return createWebAssemblyTargetCodeGenInfo(CGM, Kind);
   }
 
+  case llvm::Triple::ezh:
+    return createARMTargetCodeGenInfo(CGM, ARMABIKind::AAPCS);
+
   case llvm::Triple::arm:
   case llvm::Triple::armeb:
   case llvm::Triple::thumb:
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index d1170400f58c2..28cd00f406aa8 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -20,6 +20,7 @@
 #include "ToolChains/Cygwin.h"
 #include "ToolChains/Darwin.h"
 #include "ToolChains/DragonFly.h"
+#include "ToolChains/EZH.h"
 #include "ToolChains/FreeBSD.h"
 #include "ToolChains/Fuchsia.h"
 #include "ToolChains/Gnu.h"
@@ -7212,6 +7213,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
         TC = std::make_unique<toolchains::HexagonToolChain>(*this, Target,
                                                              Args);
         break;
+      case llvm::Triple::ezh:
+        TC = std::make_unique<toolchains::EZHToolChain>(*this, Target, Args);
+        break;
       case llvm::Triple::lanai:
         TC = std::make_unique<toolchains::LanaiToolChain>(*this, Target, Args);
         break;
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 47953bc3a23b5..77a22ca1da293 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -919,6 +919,10 @@ void tools::getTargetFeatures(const Driver &D, const llvm::Triple &Triple,
   case llvm::Triple::csky:
     csky::getCSKYTargetFeatures(D, Triple, Args, CmdArgs, Features);
     break;
+  case llvm::Triple::ezh:
+    AddTargetFeature(Args, Features, options::OPT_mezh_bitslice_interrupts,
+                     options::OPT_mno_ezh_bitslice_interrupts, "bitslice-interrupts");
+    break;
   case llvm::Triple::loongarch32:
   case llvm::Triple::loongarch64:
     loongarch::getLoongArchTargetFeatures(D, Triple, Args, Features);
diff --git a/clang/lib/Driver/ToolChains/EZH.h b/clang/lib/Driver/ToolChains/EZH.h
new file mode 100644
index 0000000000000..14b1747a2a66b
--- /dev/null
+++ b/clang/lib/Driver/ToolChains/EZH.h
@@ -0,0 +1,42 @@
+//===--- EZH.h - EZH ToolChain Implementations ------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_EZH_H
+#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_EZH_H
+
+#include "Gnu.h"
+#include "clang/Driver/ToolChain.h"
+
+namespace clang {
+namespace driver {
+namespace toolchains {
+
+class LLVM_LIBRARY_VISIBILITY EZHToolChain : public Generic_ELF {
+public:
+  EZHToolChain(const Driver &D, const llvm::Triple &Triple,
+                 const llvm::opt::ArgList &Args)
+      : Generic_ELF(D, Triple, Args) {}
+
+  void addLibCxxIncludePaths(
+      const llvm::opt::ArgList &DriverArgs,
+      llvm::opt::ArgStringList &CC1Args) const override {}
+  void addLibStdCxxIncludePaths(
+      const llvm::opt::ArgList &DriverArgs,
+      llvm::opt::ArgStringList &CC1Args) const override {}
+
+  llvm::ExceptionHandling
+  GetExceptionModel(const llvm::opt::ArgList &Args) const override {
+    return llvm::ExceptionHandling::SjLj;
+  }
+};
+
+} // end namespace toolchains
+} // end namespace driver
+} // end namespace clang
+
+#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_EZH_H

>From aa2aa8ceb1aa9567026cc0c5f8541c32ed0ef9d5 Mon Sep 17 00:00:00 2001
From: Richard Pasek <rpasek at google.com>
Date: Mon, 1 Jun 2026 20:25:36 -0400
Subject: [PATCH 3/7] [compiler-rt] Add EZH builtins support

This commit adds compiler-rt builtins support for the NXP EZH target,
including software multiplication, division, and modulo assembly
implementations.

Information sources:
* SmartDMA Cookbook (AN14650.pdf)
* fsl_smartdma_prv.h
---
 .../cmake/Modules/CompilerRTUtils.cmake       |  3 +
 compiler-rt/cmake/builtin-config-ix.cmake     |  3 +-
 compiler-rt/lib/builtins/CMakeLists.txt       |  7 +++
 compiler-rt/lib/builtins/ezh/int_div_impl.inc | 63 +++++++++++++++++++
 compiler-rt/lib/builtins/ezh/mulsi3.S         | 57 +++++++++++++++++
 compiler-rt/lib/builtins/ezh/udivsi3.S        | 10 +++
 compiler-rt/lib/builtins/ezh/umodsi3.S        | 10 +++
 7 files changed, 152 insertions(+), 1 deletion(-)
 create mode 100644 compiler-rt/lib/builtins/ezh/int_div_impl.inc
 create mode 100644 compiler-rt/lib/builtins/ezh/mulsi3.S
 create mode 100644 compiler-rt/lib/builtins/ezh/udivsi3.S
 create mode 100644 compiler-rt/lib/builtins/ezh/umodsi3.S

diff --git a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake
index f4e5560f88412..f9b2b51e55394 100644
--- a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake
+++ b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake
@@ -169,6 +169,7 @@ macro(detect_target_arch)
   check_symbol_exists(__wasm32__ "" __WEBASSEMBLY32)
   check_symbol_exists(__wasm64__ "" __WEBASSEMBLY64)
   check_symbol_exists(__ve__ "" __VE)
+  check_symbol_exists(__ezh__ "" __EZH)
   if(__AMDGPU)
     add_default_target_arch(amdgcn)
   elseif(__ARM)
@@ -231,6 +232,8 @@ macro(detect_target_arch)
     add_default_target_arch(wasm64)
   elseif(__VE)
     add_default_target_arch(ve)
+  elseif(__EZH)
+    add_default_target_arch(ezh)
   endif()
 endmacro()
 
diff --git a/compiler-rt/cmake/builtin-config-ix.cmake b/compiler-rt/cmake/builtin-config-ix.cmake
index 07955f3340d0a..0ab6892c94297 100644
--- a/compiler-rt/cmake/builtin-config-ix.cmake
+++ b/compiler-rt/cmake/builtin-config-ix.cmake
@@ -100,6 +100,7 @@ set(WASM32 wasm32)
 set(WASM64 wasm64)
 set(VE ve)
 set(M68K m68k)
+set(EZH ezh)
 
 if(APPLE)
   set(ARM64 arm64 arm64e)
@@ -111,7 +112,7 @@ set(ALL_BUILTIN_SUPPORTED_ARCH
   ${X86} ${X86_64} ${AMDGPU} ${ARM32} ${ARM64} ${AVR}
   ${HEXAGON} ${MIPS32} ${MIPS64} ${NVPTX} ${PPC32} ${PPC64}
   ${RISCV32} ${RISCV64} ${S390X} ${SPARC} ${SPARCV9} ${SPIRV64}
-  ${WASM32} ${WASM64} ${VE} ${LOONGARCH64} ${M68K})
+  ${WASM32} ${WASM64} ${VE} ${LOONGARCH64} ${M68K} ${EZH})
 
 include(CompilerRTUtils)
 include(CompilerRTDarwinUtils)
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index 1646b7077d7d1..dc8b9f09b0ab5 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -960,6 +960,13 @@ set(ve_SOURCES
 
 set(m68k_SOURCES ${GENERIC_SOURCES})
 
+set(ezh_SOURCES
+  ezh/mulsi3.S
+  ezh/udivsi3.S
+  ezh/umodsi3.S
+  ${GENERIC_SOURCES})
+
+
 add_custom_target(builtins)
 set_target_properties(builtins PROPERTIES FOLDER "Compiler-RT/Metatargets")
 
diff --git a/compiler-rt/lib/builtins/ezh/int_div_impl.inc b/compiler-rt/lib/builtins/ezh/int_div_impl.inc
new file mode 100644
index 0000000000000..300f963b3bb8d
--- /dev/null
+++ b/compiler-rt/lib/builtins/ezh/int_div_impl.inc
@@ -0,0 +1,63 @@
+//===-- int_div_impl.inc - EZH Integer division/modulo helper --------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#if defined(INT_DIV)
+#define FUNCTION_NAME __udivsi3
+#define RETURN_QUOTIENT
+#elif defined(INT_MOD)
+#define FUNCTION_NAME __umodsi3
+#define RETURN_REMAINDER
+#else
+#error "Either INT_DIV or INT_MOD must be defined before including this file"
+#endif
+
+.text
+.p2align 2
+
+.globl FUNCTION_NAME
+.type FUNCTION_NAME, @function
+.hidden FUNCTION_NAME
+
+FUNCTION_NAME:
+    ; 1. Save callee-saved registers to stack
+    e_pushd r4
+    e_pushd r5
+    
+    ; 2. Setup loop parameters
+    e_load_imm r5, 31             ; Loop count register = 31 (repetition count, runs 32 times total)
+    e_load_imm r2, 0              ; R2 = Remainder (initialized to 0)
+    
+    ; 3. Setup hardware zero-overhead tight loop safely
+    e_ldr r4, pc, 1f              ; SAFE: Load Rend absolute address from constant island (bypasses broken PC GPR read!)
+    e_tight_loop r4, r5           ; Enable tight loop supervisor (executes R5+1 times)
+    e_nop                         ; Hardware Quirk: The instruction immediately following e_tight_loop
+                                  ; only executes ONCE at initial entry. This NOP absorbs that cycle.
+    
+    ; --- Loop Body (32 iterations, exactly 6 cycles, no branching overhead) ---
+    e_lsls r0, r0, 1              ; 1. Shift dividend R0 left by 1, the MSB shifts out into Carry flag
+    e_lsl r2, r2, 1               ; 2. Shift remainder R2 left by 1 (making room for shifted-out bit)
+    e_bset_imm_ca r2, r2, 0       ; 3. Shift Carry (the old MSB of R0) into the LSB of remainder R2
+    e_subs r3, r2, r1             ; 4. Compare: R3 = R2 - R1, updates Carry flag with unsigned borrow out of MSB
+                                  ;    (No Borrow -> R2 >= R1 -> Carry is 0 -> NC flag is set to 1)
+    e_mov_nc r2, r3               ; 5. Conditional Restore: R2 = R3 if R2 >= R1 (NC flag is 1)
+    e_bset_imm_nc r0, r0, 0       ; 6. Set Quotient Bit: R0[0] = 1 if R2 >= R1 (NC flag is 1)
+    ; --- Loop Ends Here ---
+    
+loop_end_label:
+#if defined(RETURN_REMAINDER)
+    e_mov r0, r2                  ; Modulo: Return remainder in R0
+#endif
+    ; 4. Restore registers and return
+    e_popd r5
+    e_popd r4
+    e_mov pc, ra
+
+.p2align 2
+1:  .long loop_end_label
+
+.size FUNCTION_NAME, . - FUNCTION_NAME
diff --git a/compiler-rt/lib/builtins/ezh/mulsi3.S b/compiler-rt/lib/builtins/ezh/mulsi3.S
new file mode 100644
index 0000000000000..b69f8ca9f1d11
--- /dev/null
+++ b/compiler-rt/lib/builtins/ezh/mulsi3.S
@@ -0,0 +1,57 @@
+//===------- mulsi3 - Implement __mulsi3 for EZH ----------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+.text
+.p2align 2
+
+.globl __mulsi3
+.type __mulsi3, @function
+.hidden __mulsi3
+
+; ==============================================================================
+; SIGNED/UNSIGNED 32-BIT INTEGER MULTIPLICATION: R0 (a) * R1 (b) -> R0
+;
+; --- CORE OPTIMIZATION STRATEGY ---
+;
+; 1. LSB-FIRST SHIFT-AND-ADD ALGORITHM:
+;    We perform multiplication by iterating from the LSB of the multiplier b.
+;    This LSB-first design allows early termination (as soon as R1 becomes 0,
+;    the loop exits). This makes it 2x faster on average than a fixed 32-bit loop,
+;    and up to 10x faster for small multipliers (e.g., multiplying by 5).
+;
+; 2. CARRY FLAG (CA) TRICK (NO INTERNAL BRANCH):
+;    We logically shift the multiplier R1 right by 1 ("e_lsrs r1, r1, 1"). In EZH,
+;    this shifts the LSB of R1 directly into the Carry Flag (CA). We then perform
+;    a conditional addition ("e_add_ca r0, r0, r2") which executes only if Carry
+;    is set. This completely eliminates the need for an internal conditional
+;    branch inside the loop.
+;
+; 3. SCHEDULED BRANCH & 2-INSTRUCTION DELAY SLOTS:
+;    We use the conditional scheduled branch "e_goto_sne" (scheduled branch when 
+;    Not Zero) to loop back. In EZH, a scheduled branch has a 2-instruction delay
+;    slot. We place the remaining loop body ("e_add_ca" and "e_lsl") immediately
+;    after the branch. These two instructions are executed *while* the branch is
+;    being evaluated, completely eliminating all pipeline branch penalty (zero
+;    flushes!) inside the loop.
+;
+; 4. ZERO-OVERHEAD NAKED FUNCTION:
+;    The function is naked (leaf function), requiring no stack frame allocation, and
+;    operates entirely within caller-saved temporary registers (R0, R1, R2).
+; ==============================================================================
+
+__mulsi3:
+    e_mov r2, r0                  ; R2 = multiplicand 'a'
+    e_load_imm r0, 0              ; R0 = accumulator (initialized to 0)
+1:
+    e_lsrs r1, r1, 1              ; 1. Shift multiplier R1 right, LSB -> Carry, sets NZ/ZE flags
+    e_goto_sne 1b                 ; 2. Scheduled branch to 1b (if multiplier != 0)
+    e_add_ca r0, r0, r2           ; 3. [Delay Slot 1] R0 += R2 (if Carry was 1)
+    e_lsl r2, r2, 1               ; 4. [Delay Slot 2] Shift multiplicand R2 left by 1
+    e_mov pc, ra                 ; Return (result is in R0)
+
+.size __mulsi3, . - __mulsi3
diff --git a/compiler-rt/lib/builtins/ezh/udivsi3.S b/compiler-rt/lib/builtins/ezh/udivsi3.S
new file mode 100644
index 0000000000000..25c0834ab0001
--- /dev/null
+++ b/compiler-rt/lib/builtins/ezh/udivsi3.S
@@ -0,0 +1,10 @@
+//===--- udivsi3.S - Unsigned 32-bit division builtin ---------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#define INT_DIV
+#include "int_div_impl.inc"
diff --git a/compiler-rt/lib/builtins/ezh/umodsi3.S b/compiler-rt/lib/builtins/ezh/umodsi3.S
new file mode 100644
index 0000000000000..c350fcda51f2e
--- /dev/null
+++ b/compiler-rt/lib/builtins/ezh/umodsi3.S
@@ -0,0 +1,10 @@
+//===--- umodsi3.S - Unsigned 32-bit modulo builtin -----------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#define INT_MOD
+#include "int_div_impl.inc"

>From b0f836a5c5e4bb244eaa98f11b9013c43fd0d3bd Mon Sep 17 00:00:00 2001
From: Richard Pasek <rpasek at google.com>
Date: Mon, 1 Jun 2026 20:25:42 -0400
Subject: [PATCH 4/7] [libc] Add EZH baremetal support

This commit adds EZH architecture support to LLVM's libc, including
baremetal entrypoints, headers, and target-specific setjmp/longjmp C++
implementations.

Information sources:
* SmartDMA Cookbook (AN14650.pdf)
* fsl_smartdma_prv.h
---
 .../cmake/modules/LLVMLibCArchitectures.cmake |    4 +
 libc/config/baremetal/ezh/entrypoints.txt     | 1013 +++++++++++++++++
 libc/config/baremetal/ezh/headers.txt         |   24 +
 libc/include/llvm-libc-types/__jmp_buf.h      |    3 +
 libc/include/llvm-libc-types/fenv_t.h         |    2 +-
 .../macros/properties/architectures.h         |    4 +
 libc/src/setjmp/ezh/CMakeLists.txt            |   19 +
 libc/src/setjmp/ezh/longjmp.cpp               |   38 +
 libc/src/setjmp/ezh/setjmp.cpp                |   31 +
 9 files changed, 1137 insertions(+), 1 deletion(-)
 create mode 100644 libc/config/baremetal/ezh/entrypoints.txt
 create mode 100644 libc/config/baremetal/ezh/headers.txt
 create mode 100644 libc/src/setjmp/ezh/CMakeLists.txt
 create mode 100644 libc/src/setjmp/ezh/longjmp.cpp
 create mode 100644 libc/src/setjmp/ezh/setjmp.cpp

diff --git a/libc/cmake/modules/LLVMLibCArchitectures.cmake b/libc/cmake/modules/LLVMLibCArchitectures.cmake
index 4c2e63868e83d..bff2efcc72c6c 100644
--- a/libc/cmake/modules/LLVMLibCArchitectures.cmake
+++ b/libc/cmake/modules/LLVMLibCArchitectures.cmake
@@ -47,6 +47,8 @@ function(get_arch_and_system_from_triple triple arch_var sys_var)
     set(target_arch "riscv32")
   elseif(target_arch MATCHES "^riscv64")
     set(target_arch "riscv64")
+  elseif(target_arch MATCHES "^ezh")
+    set(target_arch "ezh")
   elseif(target_arch MATCHES "^amdgcn")
     set(target_arch "amdgpu")
   elseif(target_arch MATCHES "^nvptx64")
@@ -184,6 +186,8 @@ elseif(LIBC_TARGET_ARCHITECTURE STREQUAL "riscv32")
   set(LIBC_TARGET_ARCHITECTURE "riscv")
 elseif(LIBC_TARGET_ARCHITECTURE STREQUAL "amdgpu")
   set(LIBC_TARGET_ARCHITECTURE_IS_AMDGPU TRUE)
+elseif(LIBC_TARGET_ARCHITECTURE STREQUAL "ezh")
+  set(LIBC_TARGET_ARCHITECTURE_IS_EZH TRUE)
 elseif(LIBC_TARGET_ARCHITECTURE STREQUAL "nvptx")
   set(LIBC_TARGET_ARCHITECTURE_IS_NVPTX TRUE)
 elseif(LIBC_TARGET_ARCHITECTURE STREQUAL "spirv")
diff --git a/libc/config/baremetal/ezh/entrypoints.txt b/libc/config/baremetal/ezh/entrypoints.txt
new file mode 100644
index 0000000000000..6eb9fc429e955
--- /dev/null
+++ b/libc/config/baremetal/ezh/entrypoints.txt
@@ -0,0 +1,1013 @@
+set(TARGET_LIBC_ENTRYPOINTS
+    # assert.h entrypoints
+    libc.src.assert.__assert_fail
+
+    # compiler entrypoints (no corresponding header)
+    libc.src.compiler.__stack_chk_fail
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum
+    libc.src.ctype.isalpha
+    libc.src.ctype.isascii
+    libc.src.ctype.isblank
+    libc.src.ctype.iscntrl
+    libc.src.ctype.isdigit
+    libc.src.ctype.isgraph
+    libc.src.ctype.islower
+    libc.src.ctype.isprint
+    libc.src.ctype.ispunct
+    libc.src.ctype.isspace
+    libc.src.ctype.isupper
+    libc.src.ctype.isxdigit
+    libc.src.ctype.toascii
+    libc.src.ctype.tolower
+    libc.src.ctype.toupper
+
+    # ctype.h entrypoints
+    libc.src.ctype.isalnum_l
+    libc.src.ctype.isalpha_l
+    libc.src.ctype.isblank_l
+    libc.src.ctype.iscntrl_l
+    libc.src.ctype.isdigit_l
+    libc.src.ctype.isgraph_l
+    libc.src.ctype.islower_l
+    libc.src.ctype.isprint_l
+    libc.src.ctype.ispunct_l
+    libc.src.ctype.isspace_l
+    libc.src.ctype.isupper_l
+    libc.src.ctype.isxdigit_l
+    libc.src.ctype.tolower_l
+    libc.src.ctype.toupper_l
+
+    # errno.h entrypoints
+    libc.src.errno.errno
+
+    # setjmp.h entrypoints
+    libc.src.setjmp.longjmp
+    libc.src.setjmp.setjmp
+
+    # locale.h entrypoints
+    libc.src.locale.localeconv
+    libc.src.locale.duplocale
+    libc.src.locale.freelocale
+    libc.src.locale.localeconv
+    libc.src.locale.newlocale
+    libc.src.locale.setlocale
+    libc.src.locale.uselocale
+
+    # string.h entrypoints
+    libc.src.string.memccpy
+    libc.src.string.memchr
+    libc.src.string.memcmp
+    libc.src.string.memcpy
+    libc.src.string.memmem
+    libc.src.string.memmove
+    libc.src.string.mempcpy
+    libc.src.string.memrchr
+    libc.src.string.memset
+    libc.src.string.memset_explicit
+    libc.src.string.stpcpy
+    libc.src.string.stpncpy
+    libc.src.string.strcasestr
+    libc.src.string.strcat
+    libc.src.string.strchr
+    libc.src.string.strchrnul
+    libc.src.string.strcmp
+    libc.src.string.strcoll
+    libc.src.string.strcpy
+    libc.src.string.strcspn
+    libc.src.string.strdup
+    libc.src.string.strerror
+    libc.src.string.strerror_r
+    libc.src.string.strlcat
+    libc.src.string.strlcpy
+    libc.src.string.strlen
+    libc.src.string.strncat
+    libc.src.string.strncmp
+    libc.src.string.strncpy
+    libc.src.string.strndup
+    libc.src.string.strnlen
+    libc.src.string.strnlen_s
+    libc.src.string.strpbrk
+    libc.src.string.strrchr
+    libc.src.string.strsep
+    libc.src.string.strspn
+    libc.src.string.strstr
+    libc.src.string.strtok
+    libc.src.string.strtok_r
+    libc.src.string.strxfrm
+
+    # string.h entrypoints
+    libc.src.string.strcoll_l
+    libc.src.string.strxfrm_l
+
+    # strings.h entrypoints
+    libc.src.strings.bcmp
+    libc.src.strings.bcopy
+    libc.src.strings.bzero
+    libc.src.strings.ffs
+    libc.src.strings.ffsl
+    libc.src.strings.ffsll
+    libc.src.strings.index
+    libc.src.strings.rindex
+    libc.src.strings.strcasecmp
+    libc.src.strings.strncasecmp
+
+    # strings.h entrypoints
+    libc.src.strings.strcasecmp_l
+    libc.src.strings.strncasecmp_l
+
+    # inttypes.h entrypoints
+    libc.src.inttypes.imaxabs
+    libc.src.inttypes.imaxdiv
+    libc.src.inttypes.strtoimax
+    libc.src.inttypes.strtoumax
+
+    # stdio.h entrypoints
+    libc.src.stdio.asprintf
+    libc.src.stdio.feof
+    libc.src.stdio.ferror
+    libc.src.stdio.fflush
+    libc.src.stdio.fgetc
+    libc.src.stdio.fgets
+    libc.src.stdio.fprintf
+    libc.src.stdio.fputc
+    libc.src.stdio.fputs
+    libc.src.stdio.fread
+    libc.src.stdio.fscanf
+    libc.src.stdio.fwrite
+    libc.src.stdio.getc
+    libc.src.stdio.getchar
+    libc.src.stdio.printf
+    libc.src.stdio.putc
+    libc.src.stdio.putchar
+    libc.src.stdio.puts
+    libc.src.stdio.remove
+    libc.src.stdio.scanf
+    libc.src.stdio.snprintf
+    libc.src.stdio.sprintf
+    libc.src.stdio.sscanf
+    libc.src.stdio.stderr
+    libc.src.stdio.stdin
+    libc.src.stdio.stdout
+    libc.src.stdio.vasprintf
+    libc.src.stdio.vfprintf
+    libc.src.stdio.vfscanf
+    libc.src.stdio.vprintf
+    libc.src.stdio.vscanf
+    libc.src.stdio.vsnprintf
+    libc.src.stdio.vsprintf
+    libc.src.stdio.vsscanf
+    libc.src.stdio.ungetc
+
+    # stdbit.h entrypoints
+    libc.src.stdbit.stdc_bit_ceil_uc
+    libc.src.stdbit.stdc_bit_ceil_ui
+    libc.src.stdbit.stdc_bit_ceil_ul
+    libc.src.stdbit.stdc_bit_ceil_ull
+    libc.src.stdbit.stdc_bit_ceil_us
+    libc.src.stdbit.stdc_bit_floor_uc
+    libc.src.stdbit.stdc_bit_floor_ui
+    libc.src.stdbit.stdc_bit_floor_ul
+    libc.src.stdbit.stdc_bit_floor_ull
+    libc.src.stdbit.stdc_bit_floor_us
+    libc.src.stdbit.stdc_bit_width_uc
+    libc.src.stdbit.stdc_bit_width_ui
+    libc.src.stdbit.stdc_bit_width_ul
+    libc.src.stdbit.stdc_bit_width_ull
+    libc.src.stdbit.stdc_bit_width_us
+    libc.src.stdbit.stdc_count_ones_uc
+    libc.src.stdbit.stdc_count_ones_ui
+    libc.src.stdbit.stdc_count_ones_ul
+    libc.src.stdbit.stdc_count_ones_ull
+    libc.src.stdbit.stdc_count_ones_us
+    libc.src.stdbit.stdc_count_zeros_uc
+    libc.src.stdbit.stdc_count_zeros_ui
+    libc.src.stdbit.stdc_count_zeros_ul
+    libc.src.stdbit.stdc_count_zeros_ull
+    libc.src.stdbit.stdc_count_zeros_us
+    libc.src.stdbit.stdc_first_leading_one_uc
+    libc.src.stdbit.stdc_first_leading_one_ui
+    libc.src.stdbit.stdc_first_leading_one_ul
+    libc.src.stdbit.stdc_first_leading_one_ull
+    libc.src.stdbit.stdc_first_leading_one_us
+    libc.src.stdbit.stdc_first_leading_zero_uc
+    libc.src.stdbit.stdc_first_leading_zero_ui
+    libc.src.stdbit.stdc_first_leading_zero_ul
+    libc.src.stdbit.stdc_first_leading_zero_ull
+    libc.src.stdbit.stdc_first_leading_zero_us
+    libc.src.stdbit.stdc_first_trailing_one_uc
+    libc.src.stdbit.stdc_first_trailing_one_ui
+    libc.src.stdbit.stdc_first_trailing_one_ul
+    libc.src.stdbit.stdc_first_trailing_one_ull
+    libc.src.stdbit.stdc_first_trailing_one_us
+    libc.src.stdbit.stdc_first_trailing_zero_uc
+    libc.src.stdbit.stdc_first_trailing_zero_ui
+    libc.src.stdbit.stdc_first_trailing_zero_ul
+    libc.src.stdbit.stdc_first_trailing_zero_ull
+    libc.src.stdbit.stdc_first_trailing_zero_us
+    libc.src.stdbit.stdc_has_single_bit_uc
+    libc.src.stdbit.stdc_has_single_bit_ui
+    libc.src.stdbit.stdc_has_single_bit_ul
+    libc.src.stdbit.stdc_has_single_bit_ull
+    libc.src.stdbit.stdc_has_single_bit_us
+    libc.src.stdbit.stdc_leading_ones_uc
+    libc.src.stdbit.stdc_leading_ones_ui
+    libc.src.stdbit.stdc_leading_ones_ul
+    libc.src.stdbit.stdc_leading_ones_ull
+    libc.src.stdbit.stdc_leading_ones_us
+    libc.src.stdbit.stdc_leading_zeros_uc
+    libc.src.stdbit.stdc_leading_zeros_ui
+    libc.src.stdbit.stdc_leading_zeros_ul
+    libc.src.stdbit.stdc_leading_zeros_ull
+    libc.src.stdbit.stdc_leading_zeros_us
+    libc.src.stdbit.stdc_trailing_ones_uc
+    libc.src.stdbit.stdc_trailing_ones_ui
+    libc.src.stdbit.stdc_trailing_ones_ul
+    libc.src.stdbit.stdc_trailing_ones_ull
+    libc.src.stdbit.stdc_trailing_ones_us
+    libc.src.stdbit.stdc_trailing_zeros_uc
+    libc.src.stdbit.stdc_trailing_zeros_ui
+    libc.src.stdbit.stdc_trailing_zeros_ul
+    libc.src.stdbit.stdc_trailing_zeros_ull
+    libc.src.stdbit.stdc_trailing_zeros_us
+
+    # stdlib.h entrypoints
+    libc.src.stdlib._Exit
+    libc.src.stdlib.a64l
+    libc.src.stdlib.abort
+    libc.src.stdlib.abs
+    libc.src.stdlib.aligned_alloc
+    libc.src.stdlib.atexit
+    libc.src.stdlib.atof
+    libc.src.stdlib.atoi
+    libc.src.stdlib.atol
+    libc.src.stdlib.atoll
+    libc.src.stdlib.bsearch
+    libc.src.stdlib.calloc
+    libc.src.stdlib.div
+    libc.src.stdlib.exit
+    libc.src.stdlib.free
+    libc.src.stdlib.l64a
+    libc.src.stdlib.labs
+    libc.src.stdlib.ldiv
+    libc.src.stdlib.llabs
+    libc.src.stdlib.lldiv
+    libc.src.stdlib.malloc
+    libc.src.stdlib.mblen
+    libc.src.stdlib.memalignment
+    libc.src.stdlib.qsort
+    libc.src.stdlib.qsort_r
+    libc.src.stdlib.rand
+    libc.src.stdlib.realloc
+    libc.src.stdlib.srand
+    libc.src.stdlib.mbtowc
+    libc.src.stdlib.wctomb
+    # libc.src.stdlib.strfromd
+    # libc.src.stdlib.strfromf
+    # libc.src.stdlib.strfroml
+    libc.src.stdlib.strtod
+    libc.src.stdlib.strtof
+    libc.src.stdlib.strtol
+    libc.src.stdlib.strtold
+    libc.src.stdlib.strtoll
+    libc.src.stdlib.strtoul
+    libc.src.stdlib.strtoull
+
+    # stdlib.h entrypoints
+    libc.src.stdlib.strtod_l
+    libc.src.stdlib.strtof_l
+    libc.src.stdlib.strtol_l
+    libc.src.stdlib.strtold_l
+    libc.src.stdlib.strtoll_l
+    libc.src.stdlib.strtoul_l
+    libc.src.stdlib.strtoull_l
+
+    # time.h entrypoints
+    libc.src.time.asctime
+    libc.src.time.asctime_r
+    libc.src.time.clock
+    libc.src.time.ctime
+    libc.src.time.ctime_r
+    libc.src.time.difftime
+    libc.src.time.gmtime
+    libc.src.time.gmtime_r
+    libc.src.time.localtime
+    libc.src.time.localtime_r
+    libc.src.time.mktime
+    libc.src.time.strftime
+    libc.src.time.strftime_l
+    libc.src.time.timespec_get
+
+    # wchar.h entrypoints
+    libc.src.wchar.btowc
+    libc.src.wchar.wcslen
+    libc.src.wchar.wctob
+    libc.src.wchar.wcsstr
+    libc.src.wchar.wcschr
+    libc.src.wchar.wmemchr
+    libc.src.wchar.wmemset
+    libc.src.wchar.wmemcpy
+    libc.src.wchar.wmemmove
+    libc.src.wchar.wmemcmp
+    libc.src.wchar.wcscmp
+    libc.src.wchar.wcscpy
+    libc.src.wchar.wcsncpy
+    libc.src.wchar.wcsnlen
+    libc.src.wchar.wcsrchr
+    libc.src.wchar.wcspbrk
+    libc.src.wchar.wcsspn
+    libc.src.wchar.wcscspn
+    libc.src.wchar.wcscat
+    libc.src.wchar.wcsncat
+    libc.src.wchar.wcsncmp
+    libc.src.wchar.wcsdup
+    libc.src.wchar.wcslcpy
+    libc.src.wchar.wcslcat
+    libc.src.wchar.wcstok
+    libc.src.wchar.wcpcpy
+    libc.src.wchar.wcpncpy
+    libc.src.wchar.wmempcpy
+    libc.src.wchar.mbsinit
+    libc.src.wchar.mbrtowc
+    libc.src.wchar.wcrtomb
+    libc.src.wchar.mbsrtowcs
+    libc.src.wchar.wcsrtombs
+    libc.src.wchar.mbrlen
+    libc.src.wchar.mbsnrtowcs
+    libc.src.wchar.wcsnrtombs
+    libc.src.wchar.wcstod
+    libc.src.wchar.wcstof
+    libc.src.wchar.wcstold
+    libc.src.wchar.wcstol
+    libc.src.wchar.wcstoll
+    libc.src.wchar.wcstoul
+    libc.src.wchar.wcstoull
+
+    # wctype.h entrypoints
+    libc.src.wctype.iswalpha
+    libc.src.wctype.iswgraph
+    libc.src.wctype.iswcntrl
+    libc.src.wctype.iswdigit
+    libc.src.wctype.iswupper
+    libc.src.wctype.iswalnum
+    libc.src.wctype.iswlower
+    libc.src.wctype.iswspace
+    libc.src.wctype.iswblank
+    libc.src.wctype.iswxdigit
+    libc.src.wctype.iswpunct
+    libc.src.wctype.iswprint
+    # internal entrypoints
+    libc.startup.baremetal.init
+    libc.startup.baremetal.fini
+)
+
+set(TARGET_LIBM_ENTRYPOINTS
+    # complex.h entrypoints
+    libc.src.complex.creal
+    libc.src.complex.crealf
+    libc.src.complex.creall
+    libc.src.complex.cimag
+    libc.src.complex.cimagf
+    libc.src.complex.cimagl
+    libc.src.complex.conj
+    libc.src.complex.conjf
+    libc.src.complex.conjl
+    libc.src.complex.cproj
+    libc.src.complex.cprojf
+    libc.src.complex.cprojl
+
+    # fenv.h entrypoints
+    libc.src.fenv.feclearexcept
+    libc.src.fenv.fedisableexcept
+    libc.src.fenv.feenableexcept
+    libc.src.fenv.fegetenv
+    libc.src.fenv.fegetexcept
+    libc.src.fenv.fegetexceptflag
+    libc.src.fenv.fegetround
+    libc.src.fenv.feholdexcept
+    libc.src.fenv.feraiseexcept
+    libc.src.fenv.fesetenv
+    libc.src.fenv.fesetexcept
+    libc.src.fenv.fesetexceptflag
+    libc.src.fenv.fesetround
+    libc.src.fenv.fetestexcept
+    libc.src.fenv.fetestexceptflag
+    libc.src.fenv.feupdateenv
+
+    # math.h entrypoints
+    libc.src.math.acos
+    libc.src.math.acosf
+    libc.src.math.acoshf
+    libc.src.math.acospif
+    libc.src.math.asin
+    libc.src.math.asinf
+    libc.src.math.asinhf
+    libc.src.math.asinpi
+    libc.src.math.asinpif
+    libc.src.math.atan2
+    libc.src.math.atan2f
+    libc.src.math.atan2l
+    libc.src.math.atan
+    libc.src.math.atanf
+    libc.src.math.atanhf
+    libc.src.math.canonicalize
+    libc.src.math.canonicalizef
+    libc.src.math.canonicalizel
+    libc.src.math.cbrt
+    libc.src.math.cbrtf
+    libc.src.math.cbrtbf16
+    libc.src.math.ceil
+    libc.src.math.ceilf
+    libc.src.math.ceill
+    libc.src.math.copysign
+    libc.src.math.copysignf
+    libc.src.math.copysignl
+    libc.src.math.cos
+    libc.src.math.cosf
+    libc.src.math.coshf
+    libc.src.math.cospif
+    libc.src.math.dfmal
+    libc.src.math.dmull
+    libc.src.math.dsqrtl
+    libc.src.math.daddl
+    libc.src.math.ddivl
+    libc.src.math.dsubl
+    libc.src.math.erff
+    libc.src.math.exp
+    libc.src.math.exp10
+    libc.src.math.exp10f
+    libc.src.math.exp10m1f
+    libc.src.math.exp2
+    libc.src.math.exp2f
+    libc.src.math.exp2m1f
+    libc.src.math.expf
+    libc.src.math.expm1
+    libc.src.math.expm1f
+    libc.src.math.fabs
+    libc.src.math.fabsf
+    libc.src.math.fabsl
+    libc.src.math.fadd
+    libc.src.math.faddl
+    libc.src.math.fadd
+    libc.src.math.fdim
+    libc.src.math.fdimf
+    libc.src.math.fdiml
+    libc.src.math.fdiv
+    libc.src.math.fdivl
+    libc.src.math.ffma
+    libc.src.math.ffmal
+    libc.src.math.floor
+    libc.src.math.floorf
+    libc.src.math.floorl
+    libc.src.math.fma
+    libc.src.math.fmabf16
+    libc.src.math.fmaf
+    libc.src.math.fmax
+    libc.src.math.fmaxf
+    libc.src.math.fmaximum
+    libc.src.math.fmaximum_mag
+    libc.src.math.fmaximum_mag_num
+    libc.src.math.fmaximum_mag_numf
+    libc.src.math.fmaximum_mag_numl
+    libc.src.math.fmaximum_magf
+    libc.src.math.fmaximum_magl
+    libc.src.math.fmaximum_num
+    libc.src.math.fmaximum_numf
+    libc.src.math.fmaximum_numl
+    libc.src.math.fmaximumf
+    libc.src.math.fmaximuml
+    libc.src.math.fmaxl
+    libc.src.math.fmin
+    libc.src.math.fminf
+    libc.src.math.fminimum
+    libc.src.math.fminimum_mag
+    libc.src.math.fminimum_mag_num
+    libc.src.math.fminimum_mag_numf
+    libc.src.math.fminimum_mag_numl
+    libc.src.math.fminimum_magf
+    libc.src.math.fminimum_magl
+    libc.src.math.fminimum_num
+    libc.src.math.fminimum_numf
+    libc.src.math.fminimum_numl
+    libc.src.math.fminimumf
+    libc.src.math.fminimuml
+    libc.src.math.fminl
+    libc.src.math.fmod
+    libc.src.math.fmodf
+    libc.src.math.fmodl
+    libc.src.math.fmul
+    libc.src.math.fmull
+    libc.src.math.frexp
+    libc.src.math.frexpf
+    libc.src.math.frexpl
+    libc.src.math.fromfp
+    libc.src.math.fromfpf
+    libc.src.math.fromfpl
+    libc.src.math.fromfpx
+    libc.src.math.fromfpxf
+    libc.src.math.fromfpxl
+    libc.src.math.fsqrt
+    libc.src.math.fsqrtl
+    libc.src.math.fsub
+    libc.src.math.fsubl
+    libc.src.math.getpayload
+    libc.src.math.getpayloadf
+    libc.src.math.getpayloadl
+    libc.src.math.hypot
+    libc.src.math.hypotf
+    libc.src.math.ilogb
+    libc.src.math.ilogbf
+    libc.src.math.ilogbl
+    libc.src.math.iscanonical
+    libc.src.math.iscanonicalf
+    libc.src.math.iscanonicall
+    libc.src.math.isnan
+    libc.src.math.isnanf
+    libc.src.math.isnanl
+    libc.src.math.issignaling
+    libc.src.math.issignalingf
+    libc.src.math.issignalingl
+    libc.src.math.ldexp
+    libc.src.math.ldexpf
+    libc.src.math.ldexpl
+    libc.src.math.llogb
+    libc.src.math.llogbf
+    libc.src.math.llogbl
+    libc.src.math.llrint
+    libc.src.math.llrintf
+    libc.src.math.llrintl
+    libc.src.math.llround
+    libc.src.math.llroundf
+    libc.src.math.llroundl
+    libc.src.math.log
+    libc.src.math.log10
+    libc.src.math.log10f
+    libc.src.math.log1p
+    libc.src.math.log1pf
+    libc.src.math.log2
+    libc.src.math.log2f
+    libc.src.math.logb
+    libc.src.math.logbf
+    libc.src.math.logbl
+    libc.src.math.logf
+    libc.src.math.lrint
+    libc.src.math.lrintf
+    libc.src.math.lrintl
+    libc.src.math.lround
+    libc.src.math.lroundf
+    libc.src.math.lroundl
+    libc.src.math.modf
+    libc.src.math.modff
+    libc.src.math.modfl
+    libc.src.math.nan
+    libc.src.math.nanf
+    libc.src.math.nanl
+    libc.src.math.nearbyint
+    libc.src.math.nearbyintf
+    libc.src.math.nearbyintl
+    libc.src.math.nextafter
+    libc.src.math.nextafterf
+    libc.src.math.nextafterl
+    libc.src.math.nextdown
+    libc.src.math.nextdownf
+    libc.src.math.nextdownl
+    libc.src.math.nexttoward
+    libc.src.math.nexttowardf
+    libc.src.math.nexttowardl
+    libc.src.math.nextup
+    libc.src.math.nextupf
+    libc.src.math.nextupl
+    libc.src.math.pow
+    libc.src.math.powf
+    libc.src.math.remainder
+    libc.src.math.remainderf
+    libc.src.math.remainderl
+    libc.src.math.remquo
+    libc.src.math.remquof
+    libc.src.math.remquol
+    libc.src.math.rint
+    libc.src.math.rintf
+    libc.src.math.rintl
+    libc.src.math.round
+    libc.src.math.roundeven
+    libc.src.math.roundevenf
+    libc.src.math.roundevenl
+    libc.src.math.roundf
+    libc.src.math.roundl
+    libc.src.math.scalbln
+    libc.src.math.scalblnf
+    libc.src.math.scalblnl
+    libc.src.math.scalbn
+    libc.src.math.scalbnf
+    libc.src.math.scalbnl
+    libc.src.math.setpayload
+    libc.src.math.setpayloadf
+    libc.src.math.setpayloadl
+    libc.src.math.setpayloadsig
+    libc.src.math.setpayloadsigf
+    libc.src.math.setpayloadsigl
+    libc.src.math.sin
+    libc.src.math.sincos
+    libc.src.math.sincosf
+    libc.src.math.sinf
+    libc.src.math.sinhf
+    libc.src.math.sinpif
+    libc.src.math.sqrt
+    libc.src.math.sqrtf
+    libc.src.math.sqrtl
+    libc.src.math.tan
+    libc.src.math.tanf
+    libc.src.math.tanhf
+    libc.src.math.totalorder
+    libc.src.math.totalorderf
+    libc.src.math.totalorderl
+    libc.src.math.totalordermag
+    libc.src.math.totalordermagf
+    libc.src.math.totalordermagl
+    libc.src.math.trunc
+    libc.src.math.truncf
+    libc.src.math.truncl
+    libc.src.math.ufromfp
+    libc.src.math.ufromfpf
+    libc.src.math.ufromfpl
+    libc.src.math.ufromfpx
+    libc.src.math.ufromfpxf
+    libc.src.math.ufromfpxl
+)
+
+if(LIBC_TYPES_HAS_CFLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float16 entrypoints
+    libc.src.complex.crealf16
+    libc.src.complex.cimagf16
+    libc.src.complex.conjf16
+    libc.src.complex.cprojf16
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT16)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float16 entrypoints
+    libc.src.math.acosf16
+    libc.src.math.acoshf16
+    libc.src.math.asinf16
+    libc.src.math.asinhf16
+    libc.src.math.atan2f16
+    libc.src.math.canonicalizef16
+    libc.src.math.ceilf16
+    libc.src.math.copysignf16
+    libc.src.math.cosf16
+    libc.src.math.coshf16
+    libc.src.math.cospif16
+    libc.src.math.exp10f16
+    libc.src.math.exp10m1f16
+    libc.src.math.exp2f16
+    libc.src.math.exp2m1f16
+    libc.src.math.expf16
+    libc.src.math.expm1f16
+    libc.src.math.f16add
+    libc.src.math.f16addf
+    libc.src.math.f16addl
+    libc.src.math.f16div
+    libc.src.math.f16divf
+    libc.src.math.f16divl
+    libc.src.math.f16fma
+    libc.src.math.f16fmaf
+    libc.src.math.f16fmal
+    libc.src.math.f16mul
+    libc.src.math.f16mulf
+    libc.src.math.f16mull
+    libc.src.math.f16sqrt
+    libc.src.math.f16sqrtf
+    libc.src.math.f16sqrtl
+    libc.src.math.f16sub
+    libc.src.math.f16subf
+    libc.src.math.f16subl
+    libc.src.math.fabsf16
+    libc.src.math.fdimf16
+    libc.src.math.floorf16
+    libc.src.math.fmaf16
+    libc.src.math.fmaxf16
+    libc.src.math.fmaximum_mag_numf16
+    libc.src.math.fmaximum_magf16
+    libc.src.math.fmaximum_numf16
+    libc.src.math.fmaximumf16
+    libc.src.math.fminf16
+    libc.src.math.fminimum_mag_numf16
+    libc.src.math.fminimum_magf16
+    libc.src.math.fminimum_numf16
+    libc.src.math.fminimumf16
+    libc.src.math.fmodf16
+    libc.src.math.frexpf16
+    libc.src.math.fromfpf16
+    libc.src.math.fromfpxf16
+    libc.src.math.getpayloadf16
+    libc.src.math.hypotf16
+    libc.src.math.ilogbf16
+    libc.src.math.iscanonicalf16
+    libc.src.math.issignalingf16
+    libc.src.math.ldexpf16
+    libc.src.math.llogbf16
+    libc.src.math.llrintf16
+    libc.src.math.llroundf16
+    libc.src.math.log10f16
+    libc.src.math.log10p1f16
+    libc.src.math.log2f16
+    libc.src.math.logbf16
+    libc.src.math.logf16
+    libc.src.math.lrintf16
+    libc.src.math.lroundf16
+    libc.src.math.modff16
+    libc.src.math.nanf16
+    libc.src.math.nearbyintf16
+    libc.src.math.nextafterf16
+    libc.src.math.nextdownf16
+    libc.src.math.nexttowardf16
+    libc.src.math.nextupf16
+    libc.src.math.remainderf16
+    libc.src.math.remquof16
+    libc.src.math.rintf16
+    libc.src.math.roundevenf16
+    libc.src.math.roundf16
+    libc.src.math.scalblnf16
+    libc.src.math.scalbnf16
+    libc.src.math.setpayloadf16
+    libc.src.math.setpayloadsigf16
+    libc.src.math.sinf16
+    libc.src.math.sinhf16
+    libc.src.math.sinpif16
+    libc.src.math.sqrtf16
+    libc.src.math.tanf16
+    libc.src.math.tanhf16
+    libc.src.math.tanpif16
+    libc.src.math.totalorderf16
+    libc.src.math.totalordermagf16
+    libc.src.math.truncf16
+    libc.src.math.ufromfpf16
+    libc.src.math.ufromfpxf16
+  )
+
+  if(LIBC_TYPES_HAS_FLOAT128)
+    list(APPEND TARGET_LIBM_ENTRYPOINTS
+      # math.h C23 mixed _Float16 and _Float128 entrypoints
+      libc.src.math.f16addf128
+      libc.src.math.f16divf128
+      libc.src.math.f16fmaf128
+      libc.src.math.f16mulf128
+      libc.src.math.f16sqrtf128
+      libc.src.math.f16subf128
+    )
+  endif()
+endif()
+
+if(LIBC_TYPES_HAS_CFLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # complex.h C23 _Complex _Float128 entrypoints
+    libc.src.complex.crealf128
+    libc.src.complex.cimagf128
+    libc.src.complex.conjf128
+    libc.src.complex.cprojf128
+  )
+endif()
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C23 _Float128 entrypoints
+    libc.src.math.atan2f128
+    libc.src.math.canonicalizef128
+    libc.src.math.ceilf128
+    libc.src.math.copysignf128
+    libc.src.math.daddf128
+    libc.src.math.ddivf128
+    libc.src.math.dfmaf128
+    libc.src.math.dmulf128
+    libc.src.math.dsqrtf128
+    libc.src.math.dsubf128
+    libc.src.math.fabsf128
+    libc.src.math.faddf128
+    libc.src.math.fdimf128
+    libc.src.math.fdivf128
+    libc.src.math.ffmaf128
+    libc.src.math.floorf128
+    libc.src.math.fmaxf128
+    libc.src.math.fmaximum_mag_numf128
+    libc.src.math.fmaximum_magf128
+    libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximumf128
+    libc.src.math.fminf128
+    libc.src.math.fminimum_mag_numf128
+    libc.src.math.fminimum_magf128
+    libc.src.math.fminimum_numf128
+    libc.src.math.fminimumf128
+    libc.src.math.fmodf128
+    libc.src.math.fmulf128
+    libc.src.math.frexpf128
+    libc.src.math.fromfpf128
+    libc.src.math.fromfpxf128
+    libc.src.math.fsqrtf128
+    libc.src.math.fsubf128
+    libc.src.math.getpayloadf128
+    libc.src.math.ilogbf128
+    libc.src.math.iscanonicalf128
+    libc.src.math.issignalingf128
+    libc.src.math.ldexpf128
+    libc.src.math.llogbf128
+    libc.src.math.llrintf128
+    libc.src.math.llroundf128
+    libc.src.math.logbf128
+    libc.src.math.lrintf128
+    libc.src.math.lroundf128
+    libc.src.math.modff128
+    libc.src.math.nanf128
+    libc.src.math.nearbyintf128
+    libc.src.math.nextafterf128
+    libc.src.math.nextdownf128
+    libc.src.math.nextupf128
+    libc.src.math.remainderf128
+    libc.src.math.remquof128
+    libc.src.math.rintf128
+    libc.src.math.roundevenf128
+    libc.src.math.roundf128
+    libc.src.math.scalblnf128
+    libc.src.math.scalbnf128
+    libc.src.math.setpayloadf128
+    libc.src.math.setpayloadsigf128
+    libc.src.math.sqrtf128
+    libc.src.math.totalorderf128
+    libc.src.math.totalordermagf128
+    libc.src.math.truncf128
+    libc.src.math.ufromfpf128
+    libc.src.math.ufromfpxf128
+  )
+endif()
+
+list(APPEND TARGET_LIBM_ENTRYPOINTS
+  # bfloat16 entrypoints
+  libc.src.math.atanbf16
+  libc.src.math.asinbf16
+  libc.src.math.bf16add
+  libc.src.math.bf16addf
+  libc.src.math.bf16addl
+  libc.src.math.bf16div
+  libc.src.math.bf16divf
+  libc.src.math.bf16divl
+  libc.src.math.bf16fma
+  libc.src.math.bf16fmaf
+  libc.src.math.bf16fmal
+  libc.src.math.bf16mul
+  libc.src.math.bf16mulf
+  libc.src.math.bf16mull
+  libc.src.math.bf16sub
+  libc.src.math.bf16subf
+  libc.src.math.bf16subl
+  libc.src.math.canonicalizebf16
+  libc.src.math.ceilbf16
+  libc.src.math.copysignbf16
+  libc.src.math.fabsbf16
+  libc.src.math.fdimbf16
+  libc.src.math.floorbf16
+  libc.src.math.fmaxbf16
+  libc.src.math.fmaximumbf16
+  libc.src.math.fmaximum_magbf16
+  libc.src.math.fmaximum_mag_numbf16
+  libc.src.math.fmaximum_numbf16
+  libc.src.math.fminbf16
+  libc.src.math.fminimumbf16
+  libc.src.math.fminimum_magbf16
+  libc.src.math.fminimum_mag_numbf16
+  libc.src.math.fminimum_numbf16
+  libc.src.math.fmodbf16
+  libc.src.math.frexpbf16
+  libc.src.math.fromfpbf16
+  libc.src.math.fromfpxbf16
+  libc.src.math.getpayloadbf16
+  libc.src.math.hypotbf16
+  libc.src.math.ilogbbf16
+  libc.src.math.iscanonicalbf16
+  libc.src.math.issignalingbf16
+  libc.src.math.ldexpbf16
+  libc.src.math.llogbbf16
+  libc.src.math.llrintbf16
+  libc.src.math.llroundbf16
+  libc.src.math.log_bf16
+  libc.src.math.logbbf16
+  libc.src.math.lrintbf16
+  libc.src.math.lroundbf16
+  libc.src.math.modfbf16
+  libc.src.math.nanbf16
+  libc.src.math.nearbyintbf16
+  libc.src.math.nextafterbf16
+  libc.src.math.nextdownbf16
+  libc.src.math.nexttowardbf16
+  libc.src.math.nextupbf16
+  libc.src.math.remainderbf16
+  libc.src.math.remquobf16
+  libc.src.math.rintbf16
+  libc.src.math.roundbf16
+  libc.src.math.roundevenbf16
+  libc.src.math.scalblnbf16
+  libc.src.math.scalbnbf16
+  libc.src.math.setpayloadbf16
+  libc.src.math.setpayloadsigbf16
+  libc.src.math.sqrtbf16
+  libc.src.math.truncbf16
+  libc.src.math.totalorderbf16
+  libc.src.math.totalordermagbf16
+  libc.src.math.ufromfpbf16
+  libc.src.math.ufromfpxbf16
+)
+
+if(LIBC_TYPES_HAS_FLOAT128)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # math.h C++23 mixed bfloat16 and _Float128 entrypoints
+    libc.src.math.bf16addf128
+    libc.src.math.bf16divf128
+    libc.src.math.bf16fmaf128
+    libc.src.math.bf16mulf128
+    libc.src.math.bf16subf128
+  )
+endif()
+
+if(LIBC_COMPILER_HAS_FIXED_POINT)
+  list(APPEND TARGET_LIBM_ENTRYPOINTS
+    # stdfix.h _Fract and _Accum entrypoints
+    libc.src.stdfix.abshk
+    libc.src.stdfix.abshr
+    libc.src.stdfix.absk
+    libc.src.stdfix.abslk
+    libc.src.stdfix.abslr
+    libc.src.stdfix.absr
+    libc.src.stdfix.exphk
+    libc.src.stdfix.expk
+    libc.src.stdfix.roundhk
+    libc.src.stdfix.roundhr
+    libc.src.stdfix.roundk
+    libc.src.stdfix.roundlk
+    libc.src.stdfix.roundlr
+    libc.src.stdfix.roundr
+    libc.src.stdfix.rounduhk
+    libc.src.stdfix.rounduhr
+    libc.src.stdfix.rounduk
+    libc.src.stdfix.roundulk
+    libc.src.stdfix.roundulr
+    libc.src.stdfix.roundur
+    libc.src.stdfix.sqrtuhk
+    libc.src.stdfix.sqrtuhr
+    libc.src.stdfix.sqrtuk
+    libc.src.stdfix.sqrtur
+    # libc.src.stdfix.sqrtulk
+    libc.src.stdfix.sqrtulr
+    libc.src.stdfix.uhksqrtus
+    libc.src.stdfix.uksqrtui
+    libc.src.stdfix.hrbits
+    libc.src.stdfix.uhrbits
+    libc.src.stdfix.rbits
+    libc.src.stdfix.urbits
+    libc.src.stdfix.lrbits
+    libc.src.stdfix.ulrbits
+    libc.src.stdfix.hkbits
+    libc.src.stdfix.uhkbits
+    libc.src.stdfix.kbits
+    libc.src.stdfix.ukbits
+    libc.src.stdfix.lkbits
+    libc.src.stdfix.ulkbits
+    libc.src.stdfix.bitshr
+    libc.src.stdfix.bitsr
+    libc.src.stdfix.bitslr
+    libc.src.stdfix.bitshk
+    libc.src.stdfix.bitsk
+    libc.src.stdfix.bitslk
+    libc.src.stdfix.bitsuhr
+    libc.src.stdfix.bitsur
+    libc.src.stdfix.bitsulr
+    libc.src.stdfix.bitsuhk
+    libc.src.stdfix.bitsuk
+    libc.src.stdfix.bitsulk
+    libc.src.stdfix.countlshr
+    libc.src.stdfix.countlsr
+    libc.src.stdfix.countlslr
+    libc.src.stdfix.countlshk
+    libc.src.stdfix.countlsk
+    libc.src.stdfix.countlslk
+    libc.src.stdfix.countlsuhr
+    libc.src.stdfix.countlsur
+    libc.src.stdfix.countlsulr
+    libc.src.stdfix.countlsuhk
+    libc.src.stdfix.countlsuk
+    libc.src.stdfix.countlsulk
+    libc.src.stdfix.idivr
+    libc.src.stdfix.idivlr
+    libc.src.stdfix.idivk
+    libc.src.stdfix.idivlk
+    libc.src.stdfix.idivur
+    libc.src.stdfix.idivulr
+    libc.src.stdfix.idivuk
+    libc.src.stdfix.idivulk
+  )
+endif()
+
+set(TARGET_LLVMLIBC_ENTRYPOINTS
+  ${TARGET_LIBC_ENTRYPOINTS}
+  ${TARGET_LIBM_ENTRYPOINTS}
+)
diff --git a/libc/config/baremetal/ezh/headers.txt b/libc/config/baremetal/ezh/headers.txt
new file mode 100644
index 0000000000000..6a44ef651b09a
--- /dev/null
+++ b/libc/config/baremetal/ezh/headers.txt
@@ -0,0 +1,24 @@
+set(TARGET_PUBLIC_HEADERS
+    libc.include.assert
+    libc.include.ctype
+    libc.include.elf
+    libc.include.errno
+    libc.include.features
+    libc.include.float
+    libc.include.inttypes
+    libc.include.limits
+    libc.include.locale
+    libc.include.stdbit
+    libc.include.stdckdint
+    libc.include.stdint
+    libc.include.stdio
+    libc.include.stdlib
+    libc.include.setjmp
+    libc.include.string
+    libc.include.strings
+    libc.include.sys_queue
+    libc.include.time
+    libc.include.uchar
+    libc.include.wchar
+    libc.include.wctype
+)
diff --git a/libc/include/llvm-libc-types/__jmp_buf.h b/libc/include/llvm-libc-types/__jmp_buf.h
index a80afa2e6b815..124fea5375974 100644
--- a/libc/include/llvm-libc-types/__jmp_buf.h
+++ b/libc/include/llvm-libc-types/__jmp_buf.h
@@ -55,6 +55,9 @@ typedef struct {
 #elif defined(__arm__)
   // r4, r5, r6, r7, r8, r9, r10, r11, r12, lr
   long opaque[10];
+#elif defined(__ezh__)
+  // r4, r5, r6, r7, sp, ra
+  long opaque[6];
 #elif defined(__aarch64__)
   long opaque[14]; // x19-x29, lr, sp, optional x18
 #if __ARM_FP
diff --git a/libc/include/llvm-libc-types/fenv_t.h b/libc/include/llvm-libc-types/fenv_t.h
index 2cfeff7b8a9f8..43d2dcf0826fa 100644
--- a/libc/include/llvm-libc-types/fenv_t.h
+++ b/libc/include/llvm-libc-types/fenv_t.h
@@ -23,7 +23,7 @@ typedef struct {
 typedef struct {
   unsigned int __fpscr;
 } fenv_t;
-#elif defined(__riscv)
+#elif defined(__riscv) || defined(__ezh__)
 typedef unsigned int fenv_t;
 #elif defined(__AMDGPU__) || defined(__NVPTX__) || defined(__SPIRV__)
 typedef struct {
diff --git a/libc/src/__support/macros/properties/architectures.h b/libc/src/__support/macros/properties/architectures.h
index f73fa7a7643ab..f47b48113fcee 100644
--- a/libc/src/__support/macros/properties/architectures.h
+++ b/libc/src/__support/macros/properties/architectures.h
@@ -42,6 +42,10 @@
 #define LIBC_TARGET_ARCH_IS_X86
 #endif
 
+#if defined(__ezh__) || defined(__EZH__)
+#define LIBC_TARGET_ARCH_IS_EZH
+#endif
+
 #if (defined(__arm__) || defined(_M_ARM))
 #define LIBC_TARGET_ARCH_IS_ARM
 #endif
diff --git a/libc/src/setjmp/ezh/CMakeLists.txt b/libc/src/setjmp/ezh/CMakeLists.txt
new file mode 100644
index 0000000000000..55c80b0bede0d
--- /dev/null
+++ b/libc/src/setjmp/ezh/CMakeLists.txt
@@ -0,0 +1,19 @@
+add_entrypoint_object(
+  setjmp
+  SRCS
+    setjmp.cpp
+  HDRS
+    ../setjmp_impl.h
+  DEPENDS
+    libc.hdr.types.jmp_buf
+)
+
+add_entrypoint_object(
+  longjmp
+  SRCS
+    longjmp.cpp
+  HDRS
+    ../longjmp.h
+  DEPENDS
+    libc.hdr.types.jmp_buf
+)
diff --git a/libc/src/setjmp/ezh/longjmp.cpp b/libc/src/setjmp/ezh/longjmp.cpp
new file mode 100644
index 0000000000000..02999abc937d0
--- /dev/null
+++ b/libc/src/setjmp/ezh/longjmp.cpp
@@ -0,0 +1,38 @@
+//===-- Implementation of longjmp for EZH ---------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "src/__support/common.h"
+#include "src/__support/macros/config.h"
+#include "src/setjmp/longjmp.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+[[gnu::naked]] LLVM_LIBC_FUNCTION(void, longjmp, (jmp_buf buf, int val)) {
+  asm(R"(
+      # Restore r4, r5, r6, r7, sp, and ra from buf (r0)
+      e_ldr r4, r0, 0
+      e_ldr r5, r0, 4
+      e_ldr r6, r0, 8
+      e_ldr r7, r0, 12
+      e_ldr sp, r0, 16
+      e_ldr ra, r0, 20
+
+      # Move val (passed in r1) to return register r0
+      e_mov r0, r1
+
+      # If val is 0, longjmp must return 1 instead
+      e_sub_imms r1, r0, 0
+      e_goto_nz .Ljump_back
+      e_load_imm r0, 1
+
+  .Ljump_back:
+      e_goto ra
+  )");
+}
+
+} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/setjmp/ezh/setjmp.cpp b/libc/src/setjmp/ezh/setjmp.cpp
new file mode 100644
index 0000000000000..75cec09e524bf
--- /dev/null
+++ b/libc/src/setjmp/ezh/setjmp.cpp
@@ -0,0 +1,31 @@
+//===-- Implementation of setjmp for EZH ----------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "src/__support/common.h"
+#include "src/__support/macros/config.h"
+#include "src/setjmp/setjmp_impl.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+[[gnu::naked]] LLVM_LIBC_FUNCTION(int, setjmp, (jmp_buf buf)) {
+  asm(R"(
+      # Store r4, r5, r6, r7, sp, and ra into buf (passed in r0)
+      e_str r0, r4, 0
+      e_str r0, r5, 4
+      e_str r0, r6, 8
+      e_str r0, r7, 12
+      e_str r0, sp, 16
+      e_str r0, ra, 20
+
+      # Return 0
+      e_load_imm r0, 0
+      e_goto ra
+  )");
+}
+
+} // namespace LIBC_NAMESPACE_DECL

>From 82d83b8e959ca42165daf130e57651a2ef2a50f3 Mon Sep 17 00:00:00 2001
From: Richard Pasek <rpasek at google.com>
Date: Mon, 1 Jun 2026 20:25:48 -0400
Subject: [PATCH 5/7] [libunwind] Add EZH baremetal support

This commit adds EZH architecture configuration to libunwind for
baremetal exception handling support.
---
 libunwind/include/__libunwind_config.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libunwind/include/__libunwind_config.h b/libunwind/include/__libunwind_config.h
index a1179c73c5906..801fc75ea7687 100644
--- a/libunwind/include/__libunwind_config.h
+++ b/libunwind/include/__libunwind_config.h
@@ -187,6 +187,10 @@
 // Unused
 #define _LIBUNWIND_CONTEXT_SIZE 0
 #define _LIBUNWIND_CURSOR_SIZE 0
+#elif defined(__ezh__)
+#define _LIBUNWIND_CONTEXT_SIZE 16
+#define _LIBUNWIND_CURSOR_SIZE 24
+#define _LIBUNWIND_HIGHEST_DWARF_REGISTER 16
 # else
 #  error "Unsupported architecture."
 # endif

>From 9299e5f960a275731a51f9a0caaa1f8fc161ac9b Mon Sep 17 00:00:00 2001
From: Richard Pasek <rpasek at google.com>
Date: Mon, 1 Jun 2026 20:25:52 -0400
Subject: [PATCH 6/7] [lld] Add EZH ELF linker support

This commit adds ELF linker support for the NXP EZH (SmartDMA)
architecture to LLD, handling EZH ELF relocations, target properties,
and script parsing.

Information sources:
* SmartDMA Cookbook (AN14650.pdf)
* fsl_smartdma_prv.h
---
 lld/ELF/Arch/EZH.cpp     | 115 +++++++++++++++++++++++++++++++++++++++
 lld/ELF/CMakeLists.txt   |   1 +
 lld/ELF/Driver.cpp       |   1 +
 lld/ELF/InputFiles.cpp   |   2 +
 lld/ELF/ScriptParser.cpp |   1 +
 lld/ELF/Target.cpp       |   2 +
 lld/ELF/Target.h         |   1 +
 7 files changed, 123 insertions(+)
 create mode 100644 lld/ELF/Arch/EZH.cpp

diff --git a/lld/ELF/Arch/EZH.cpp b/lld/ELF/Arch/EZH.cpp
new file mode 100644
index 0000000000000..bd846119eb1ff
--- /dev/null
+++ b/lld/ELF/Arch/EZH.cpp
@@ -0,0 +1,115 @@
+//===- EZH.cpp ------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "InputFiles.h"
+#include "RelocScan.h"
+#include "Symbols.h"
+#include "Target.h"
+#include "lld/Common/ErrorHandler.h"
+#include "llvm/Support/Endian.h"
+
+
+using namespace llvm;
+using namespace llvm::object;
+using namespace llvm::support::endian;
+using namespace llvm::ELF;
+using namespace lld;
+using namespace lld::elf;
+
+namespace {
+
+class EZH final : public TargetInfo {
+public:
+  EZH(Ctx &ctx) : TargetInfo(ctx) {
+    needsThunks = false;
+  }
+  RelExpr getRelExpr(RelType type, const Symbol &s, const uint8_t *loc) const override;
+  void relocate(uint8_t *loc, const Relocation &rel, uint64_t val) const override;
+  template <class ELFT, class RelTy>
+  void scanSectionImpl(InputSectionBase &sec, Relocs<RelTy> rels);
+  void scanSection(InputSectionBase &sec) override {
+    elf::scanSection1<EZH, ELF32LE>(*this, sec);
+  }
+};
+
+} // namespace
+
+RelExpr EZH::getRelExpr(RelType type, const Symbol &s, const uint8_t *loc) const {
+  switch (type) {
+  case R_EZH_25:
+  case R_EZH_32:
+  case R_EZH_HI16:
+  case R_EZH_LO16:
+  case R_EZH_21:
+    return R_ABS;
+  case R_EZH_NONE:
+    return R_NONE;
+  default:
+    Err(ctx) << getErrorLoc(ctx, loc) << "unknown relocation (" << type
+             << ") against symbol " << &s;
+    return R_NONE;
+  }
+}
+
+void EZH::relocate(uint8_t *loc, const Relocation &rel, uint64_t val) const {
+  switch (rel.type) {
+  case R_EZH_NONE:
+    break;
+  case R_EZH_21: {
+    uint32_t inst = read32le(loc);
+    inst = (inst & 0x000007ff) | (((val >> 2) & 0x1fffff) << 11);
+    write32le(loc, inst);
+    break;
+  }
+  case R_EZH_25: {
+    uint32_t inst = read32le(loc);
+
+    // E_GOSUB (Opcode 0x03) embeds the absolute physical address into the instruction.
+    // The hardware masks out the lowest 2 bits (which contain the opcode) when branching.
+    inst = (inst & 0x00000003) | (val & 0xfffffffc);
+    write32le(loc, inst);
+    break;
+  }
+  case R_EZH_32:
+    write32le(loc, val);
+    break;
+  case R_EZH_HI16: {
+    uint32_t inst = read32le(loc);
+    uint32_t hi = (val >> 20) & 0x7ff;
+    inst = (inst & ~(0x7ff << 20)) | (hi << 20);
+    write32le(loc, inst);
+    break;
+  }
+  case R_EZH_LO16: {
+    uint32_t inst = read32le(loc);
+    uint32_t lo = val & 0xfff;
+    inst = (inst & ~(0xfff << 20)) | (lo << 20);
+    write32le(loc, inst);
+    break;
+  }
+  default:
+    llvm_unreachable("unknown relocation");
+  }
+}
+template <class ELFT, class RelTy>
+void EZH::scanSectionImpl(InputSectionBase &sec, Relocs<RelTy> rels) {
+  RelocScan rs(ctx, &sec);
+  sec.relocations.reserve(rels.size());
+  for (auto it = rels.begin(); it != rels.end(); ++it) {
+    RelType type = it->getType(false);
+    if (type == R_EZH_NONE)
+      continue;
+    rs.scan<ELFT, RelTy>(it, type, rs.getAddend<ELFT>(*it, type));
+  }
+}
+
+namespace lld {
+namespace elf {
+void setEZHTargetInfo(Ctx &ctx) { ctx.target.reset(new EZH(ctx)); }
+} // namespace elf
+} // namespace lld
diff --git a/lld/ELF/CMakeLists.txt b/lld/ELF/CMakeLists.txt
index e22897c2789d8..09e77e46b61fa 100644
--- a/lld/ELF/CMakeLists.txt
+++ b/lld/ELF/CMakeLists.txt
@@ -24,6 +24,7 @@ add_lld_library(lldELF
   Arch/AMDGPU.cpp
   Arch/ARM.cpp
   Arch/AVR.cpp
+  Arch/EZH.cpp
   Arch/Hexagon.cpp
   Arch/LoongArch.cpp
   Arch/Mips.cpp
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 7ec7dfcae6bca..f299d6b484f70 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -2074,6 +2074,7 @@ static void setConfigs(Ctx &ctx, opt::InputArgList &args) {
       ctx.arg.sysvHash = ctx.arg.gnuHash = true;
   }
 
+
   // Set default entry point and output file if not specified by command line or
   // linker scripts.
   ctx.arg.warnMissingEntry =
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 2f544f0fe0958..c0539f5320235 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -1754,6 +1754,8 @@ static uint16_t getBitcodeMachineKind(Ctx &ctx, StringRef path,
     return EM_ARM;
   case Triple::avr:
     return EM_AVR;
+  case Triple::ezh:
+    return EM_EZH;
   case Triple::hexagon:
     return EM_HEXAGON;
   case Triple::loongarch32:
diff --git a/lld/ELF/ScriptParser.cpp b/lld/ELF/ScriptParser.cpp
index 5383f3eed3f8b..87e36f644a882 100644
--- a/lld/ELF/ScriptParser.cpp
+++ b/lld/ELF/ScriptParser.cpp
@@ -462,6 +462,7 @@ static std::pair<ELFKind, uint16_t> parseBfdName(StringRef s) {
   return StringSwitch<std::pair<ELFKind, uint16_t>>(s)
       .Case("elf32-i386", {ELF32LEKind, EM_386})
       .Case("elf32-avr", {ELF32LEKind, EM_AVR})
+      .Case("elf32-ezh", {ELF32LEKind, EM_EZH})
       .Case("elf32-iamcu", {ELF32LEKind, EM_IAMCU})
       .Case("elf32-littlearm", {ELF32LEKind, EM_ARM})
       .Case("elf32-bigarm", {ELF32BEKind, EM_ARM})
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp
index 89e4dbeed3109..c7961a9c254ea 100644
--- a/lld/ELF/Target.cpp
+++ b/lld/ELF/Target.cpp
@@ -63,6 +63,8 @@ void elf::setTarget(Ctx &ctx) {
     return setARMTargetInfo(ctx);
   case EM_AVR:
     return setAVRTargetInfo(ctx);
+  case EM_EZH:
+    return setEZHTargetInfo(ctx);
   case EM_HEXAGON:
     return setHexagonTargetInfo(ctx);
   case EM_LOONGARCH:
diff --git a/lld/ELF/Target.h b/lld/ELF/Target.h
index c9b2af07149e0..35294890b60b1 100644
--- a/lld/ELF/Target.h
+++ b/lld/ELF/Target.h
@@ -206,6 +206,7 @@ void setAArch64TargetInfo(Ctx &);
 void setAMDGPUTargetInfo(Ctx &);
 void setARMTargetInfo(Ctx &);
 void setAVRTargetInfo(Ctx &);
+void setEZHTargetInfo(Ctx &);
 void setHexagonTargetInfo(Ctx &);
 void setLoongArchTargetInfo(Ctx &);
 void setMSP430TargetInfo(Ctx &);

>From 69ed78da8ef65301a6b22ec13dc7a498b9facfb0 Mon Sep 17 00:00:00 2001
From: Richard Pasek <rpasek at google.com>
Date: Mon, 1 Jun 2026 20:25:57 -0400
Subject: [PATCH 7/7] [lldb] Add EZH debugging support

This commit adds NXP EZH (SmartDMA) architecture support to LLDB.

Information sources:
* SmartDMA Cookbook (AN14650.pdf)
* fsl_smartdma_prv.h
---
 lldb/include/lldb/Utility/ArchSpec.h          |   1 +
 lldb/source/Plugins/ABI/CMakeLists.txt        |   2 +-
 lldb/source/Plugins/ABI/EZH/ABIEZH.cpp        | 116 +++
 lldb/source/Plugins/ABI/EZH/ABIEZH.h          |  86 ++
 lldb/source/Plugins/ABI/EZH/CMakeLists.txt    |  13 +
 lldb/source/Plugins/Process/CMakeLists.txt    |   1 +
 .../source/Plugins/Process/EZH/CMakeLists.txt |  12 +
 .../source/Plugins/Process/EZH/EZHRegisters.h |  67 ++
 .../source/Plugins/Process/EZH/ProcessEZH.cpp | 885 ++++++++++++++++++
 lldb/source/Plugins/Process/EZH/ProcessEZH.h  | 112 +++
 .../Process/EZH/RegisterContextEZH.cpp        | 408 ++++++++
 .../Plugins/Process/EZH/RegisterContextEZH.h  |  52 +
 lldb/source/Plugins/Process/EZH/ThreadEZH.cpp |  53 ++
 lldb/source/Plugins/Process/EZH/ThreadEZH.h   |  31 +
 lldb/source/Utility/ArchSpec.cpp              |   3 +
 15 files changed, 1841 insertions(+), 1 deletion(-)
 create mode 100644 lldb/source/Plugins/ABI/EZH/ABIEZH.cpp
 create mode 100644 lldb/source/Plugins/ABI/EZH/ABIEZH.h
 create mode 100644 lldb/source/Plugins/ABI/EZH/CMakeLists.txt
 create mode 100644 lldb/source/Plugins/Process/EZH/CMakeLists.txt
 create mode 100644 lldb/source/Plugins/Process/EZH/EZHRegisters.h
 create mode 100644 lldb/source/Plugins/Process/EZH/ProcessEZH.cpp
 create mode 100644 lldb/source/Plugins/Process/EZH/ProcessEZH.h
 create mode 100644 lldb/source/Plugins/Process/EZH/RegisterContextEZH.cpp
 create mode 100644 lldb/source/Plugins/Process/EZH/RegisterContextEZH.h
 create mode 100644 lldb/source/Plugins/Process/EZH/ThreadEZH.cpp
 create mode 100644 lldb/source/Plugins/Process/EZH/ThreadEZH.h

diff --git a/lldb/include/lldb/Utility/ArchSpec.h b/lldb/include/lldb/Utility/ArchSpec.h
index 160f81c2fa501..58edbb95f4783 100644
--- a/lldb/include/lldb/Utility/ArchSpec.h
+++ b/lldb/include/lldb/Utility/ArchSpec.h
@@ -239,6 +239,7 @@ class ArchSpec {
     eCore_avr,
 
     eCore_wasm32,
+    eCore_ezh,
 
     kNumCores,
 
diff --git a/lldb/source/Plugins/ABI/CMakeLists.txt b/lldb/source/Plugins/ABI/CMakeLists.txt
index 97a20364ae7d7..3afe253fd3387 100644
--- a/lldb/source/Plugins/ABI/CMakeLists.txt
+++ b/lldb/source/Plugins/ABI/CMakeLists.txt
@@ -4,7 +4,7 @@ set_property(DIRECTORY PROPERTY LLDB_TOLERATED_PLUGIN_DEPENDENCIES
   TypeSystem
 )
 
-foreach(target AArch64 ARM ARC Hexagon LoongArch Mips MSP430 PowerPC RISCV SystemZ X86)
+foreach(target AArch64 ARM ARC EZH Hexagon LoongArch Mips MSP430 PowerPC RISCV SystemZ X86)
   if (${target} IN_LIST LLVM_TARGETS_TO_BUILD)
     add_subdirectory(${target})
   endif()
diff --git a/lldb/source/Plugins/ABI/EZH/ABIEZH.cpp b/lldb/source/Plugins/ABI/EZH/ABIEZH.cpp
new file mode 100644
index 0000000000000..609fa549c7c0c
--- /dev/null
+++ b/lldb/source/Plugins/ABI/EZH/ABIEZH.cpp
@@ -0,0 +1,116 @@
+//===-- ABIEZH.cpp --------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "ABIEZH.h"
+
+#include <array>
+
+#include "lldb/Core/PluginManager.h"
+#include "lldb/Symbol/UnwindPlan.h"
+#include "lldb/Target/RegisterContext.h"
+#include "lldb/Target/Target.h"
+#include "lldb/Target/Thread.h"
+#include "lldb/Utility/ConstString.h"
+#include "lldb/Utility/RegisterValue.h"
+
+#define DEFINE_REG_NAME(reg_num)      lldb_private::ConstString(#reg_num).GetCString()
+#define DEFINE_REG_NAME_STR(reg_name) lldb_private::ConstString(reg_name).GetCString()
+
+#define DEFINE_GENERIC_REGISTER_STUB(dwarf_num, str_name, generic_num)        \
+  {                                                                           \
+    DEFINE_REG_NAME(dwarf_num), DEFINE_REG_NAME_STR(str_name),                \
+    4, 0, lldb::eEncodingUint, lldb::eFormatHex,                              \
+    { dwarf_num, dwarf_num, generic_num, dwarf_num, dwarf_num },              \
+    nullptr, nullptr, nullptr,                                                \
+  }
+
+#define DEFINE_REGISTER_STUB(dwarf_num, str_name) \
+  DEFINE_GENERIC_REGISTER_STUB(dwarf_num, str_name, LLDB_INVALID_REGNUM)
+
+using namespace lldb;
+using namespace lldb_private;
+
+LLDB_PLUGIN_DEFINE_ADV(ABIEZH, ABIEZH)
+
+namespace {
+namespace dwarf {
+enum regnums {
+  r0, r1, r2, r3, r4, r5, r6, r7,
+  gpo, gpd, cfs, cfm,
+  sp, pc, gpi, ra, flags
+};
+
+static const std::array<RegisterInfo, 17> g_register_infos = { {
+    DEFINE_GENERIC_REGISTER_STUB(r0, nullptr, LLDB_REGNUM_GENERIC_ARG1),
+    DEFINE_GENERIC_REGISTER_STUB(r1, nullptr, LLDB_REGNUM_GENERIC_ARG2),
+    DEFINE_GENERIC_REGISTER_STUB(r2, nullptr, LLDB_REGNUM_GENERIC_ARG3),
+    DEFINE_GENERIC_REGISTER_STUB(r3, nullptr, LLDB_REGNUM_GENERIC_ARG4),
+    DEFINE_REGISTER_STUB(r4, nullptr),
+    DEFINE_REGISTER_STUB(r5, nullptr),
+    DEFINE_REGISTER_STUB(r6, nullptr),
+    DEFINE_REGISTER_STUB(r7, nullptr),
+    DEFINE_REGISTER_STUB(gpo, nullptr),
+    DEFINE_REGISTER_STUB(gpd, nullptr),
+    DEFINE_REGISTER_STUB(cfs, nullptr),
+    DEFINE_REGISTER_STUB(cfm, nullptr),
+    DEFINE_GENERIC_REGISTER_STUB(sp, nullptr, LLDB_REGNUM_GENERIC_SP),
+    DEFINE_GENERIC_REGISTER_STUB(pc, nullptr, LLDB_REGNUM_GENERIC_PC),
+    DEFINE_REGISTER_STUB(gpi, nullptr),
+    DEFINE_GENERIC_REGISTER_STUB(ra, nullptr, LLDB_REGNUM_GENERIC_RA),
+    DEFINE_REGISTER_STUB(flags, nullptr)} };
+} // namespace dwarf
+} // namespace
+
+const RegisterInfo *ABIEZH::GetRegisterInfoArray(uint32_t &count) {
+  count = dwarf::g_register_infos.size();
+  return dwarf::g_register_infos.data();
+}
+
+ABISP ABIEZH::CreateInstance(ProcessSP process_sp, const ArchSpec &arch) {
+  if (arch.GetTriple().getArchName().starts_with("ezh")) {
+    return ABISP(new ABIEZH(std::move(process_sp), MakeMCRegisterInfo(arch)));
+  }
+  return ABISP();
+}
+
+UnwindPlanSP ABIEZH::CreateFunctionEntryUnwindPlan() {
+  UnwindPlan::Row row;
+  // CFA is SP value
+  row.GetCFAValue().SetIsRegisterPlusOffset(dwarf::sp, 0);
+  // PC is in RA at function entry
+  row.SetRegisterLocationToRegister(dwarf::pc, dwarf::ra, true);
+
+  auto plan_sp = std::make_shared<UnwindPlan>(eRegisterKindDWARF);
+  plan_sp->AppendRow(std::move(row));
+  plan_sp->SetSourceName("ezh at-func-entry default");
+  plan_sp->SetSourcedFromCompiler(eLazyBoolNo);
+  return plan_sp;
+}
+
+UnwindPlanSP ABIEZH::CreateDefaultUnwindPlan() {
+  UnwindPlan::Row row;
+  // CFA is SP value
+  row.GetCFAValue().SetIsRegisterPlusOffset(dwarf::sp, 0);
+  // PC is in RA by default
+  row.SetRegisterLocationToRegister(dwarf::pc, dwarf::ra, true);
+
+  auto plan_sp = std::make_shared<UnwindPlan>(eRegisterKindDWARF);
+  plan_sp->AppendRow(std::move(row));
+  plan_sp->SetSourceName("ezh default unwind plan");
+  plan_sp->SetSourcedFromCompiler(eLazyBoolNo);
+  return plan_sp;
+}
+
+void ABIEZH::Initialize() {
+  PluginManager::RegisterPlugin(GetPluginNameStatic(),
+                                "System ABI for EZH targets", CreateInstance);
+}
+
+void ABIEZH::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
+}
diff --git a/lldb/source/Plugins/ABI/EZH/ABIEZH.h b/lldb/source/Plugins/ABI/EZH/ABIEZH.h
new file mode 100644
index 0000000000000..32dd178179cd6
--- /dev/null
+++ b/lldb/source/Plugins/ABI/EZH/ABIEZH.h
@@ -0,0 +1,86 @@
+//===-- ABIEZH.h ------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_ABIEZH_h_
+#define liblldb_ABIEZH_h_
+
+#include "lldb/Target/ABI.h"
+#include "lldb/lldb-private.h"
+
+class ABIEZH : public lldb_private::RegInfoBasedABI {
+public:
+  ~ABIEZH() override = default;
+
+  size_t GetRedZoneSize() const override { return 0; }
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t functionAddress,
+                          lldb::addr_t returnAddress,
+                          llvm::ArrayRef<lldb::addr_t> args) const override {
+    return false;
+  }
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t functionAddress, lldb::addr_t returnAddress,
+                          llvm::Type &prototype,
+                          llvm::ArrayRef<ABI::CallArgument> args) const override {
+    return false;
+  }
+
+  bool GetArgumentValues(lldb_private::Thread &thread,
+                         lldb_private::ValueList &values) const override {
+    return false;
+  }
+
+  lldb_private::Status
+  SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                       lldb::ValueObjectSP &new_value) override {
+    return lldb_private::Status();
+  }
+
+  lldb::ValueObjectSP
+  GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                           lldb_private::CompilerType &type) const override {
+    return lldb::ValueObjectSP();
+  }
+
+  lldb::UnwindPlanSP CreateFunctionEntryUnwindPlan() override;
+
+  lldb::UnwindPlanSP CreateDefaultUnwindPlan() override;
+
+  bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override {
+    return false;
+  }
+
+  bool CallFrameAddressIsValid(lldb::addr_t cfa) override {
+    return (cfa & 0x3ull) == 0; // 4-byte aligned stack
+  }
+
+  bool CodeAddressIsValid(lldb::addr_t pc) override {
+    return (pc & 0x3ull) == 0; // EZH instructions are 4-byte aligned
+  }
+
+  const lldb_private::RegisterInfo *
+  GetRegisterInfoArray(uint32_t &count) override;
+
+  static void Initialize();
+
+  static void Terminate();
+
+  static lldb::ABISP CreateInstance(lldb::ProcessSP process_sp,
+                                    const lldb_private::ArchSpec &arch);
+
+  static llvm::StringRef GetPluginNameStatic() { return "ezh"; }
+
+  llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
+
+private:
+  using lldb_private::RegInfoBasedABI::RegInfoBasedABI;
+};
+
+#endif // liblldb_ABIEZH_h_
diff --git a/lldb/source/Plugins/ABI/EZH/CMakeLists.txt b/lldb/source/Plugins/ABI/EZH/CMakeLists.txt
new file mode 100644
index 0000000000000..e8f5718e96fff
--- /dev/null
+++ b/lldb/source/Plugins/ABI/EZH/CMakeLists.txt
@@ -0,0 +1,13 @@
+add_lldb_library(lldbPluginABIEZH PLUGIN
+  ABIEZH.cpp
+
+  LINK_COMPONENTS
+    Support
+    TargetParser
+  LINK_LIBS
+    lldbCore
+    lldbSymbol
+    lldbTarget
+    lldbPluginProcessUtility
+    lldbValueObject
+  )
diff --git a/lldb/source/Plugins/Process/CMakeLists.txt b/lldb/source/Plugins/Process/CMakeLists.txt
index 84cc65e45157e..253d93d3279bd 100644
--- a/lldb/source/Plugins/Process/CMakeLists.txt
+++ b/lldb/source/Plugins/Process/CMakeLists.txt
@@ -30,3 +30,4 @@ add_subdirectory(elf-core)
 add_subdirectory(mach-core)
 add_subdirectory(minidump)
 add_subdirectory(wasm)
+add_subdirectory(EZH)
diff --git a/lldb/source/Plugins/Process/EZH/CMakeLists.txt b/lldb/source/Plugins/Process/EZH/CMakeLists.txt
new file mode 100644
index 0000000000000..309200243f730
--- /dev/null
+++ b/lldb/source/Plugins/Process/EZH/CMakeLists.txt
@@ -0,0 +1,12 @@
+add_lldb_library(lldbPluginProcessEZH PLUGIN
+  ProcessEZH.cpp
+  RegisterContextEZH.cpp
+  ThreadEZH.cpp
+
+  LINK_LIBS
+    lldbCore
+    lldbTarget
+    lldbPluginProcessGDBRemote
+  LINK_COMPONENTS
+    Support
+  )
diff --git a/lldb/source/Plugins/Process/EZH/EZHRegisters.h b/lldb/source/Plugins/Process/EZH/EZHRegisters.h
new file mode 100644
index 0000000000000..8d424b28e0905
--- /dev/null
+++ b/lldb/source/Plugins/Process/EZH/EZHRegisters.h
@@ -0,0 +1,67 @@
+//===-- EZHRegisters.h ------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SYMBOL_EZHREGISTERS_H
+#define LLDB_SYMBOL_EZHREGISTERS_H
+
+// NXP SmartDMA (EZH) Peripheral Register Offsets
+#define EZHB_BOOT_OFFSET        0x20
+#define EZHB_CTRL_OFFSET        0x24
+#define EZHB_PC_OFFSET          0x28
+#define EZHB_SP_OFFSET          0x2C
+#define EZHB_BREAK_ADDR_OFFSET  0x30
+#define EZHB_BREAK_VECT_OFFSET  0x34
+#define EZHB_EMER_VECT_OFFSET   0x38
+#define EZHB_EMER_SEL_OFFSET    0x3C
+#define EZHB_ARM2EZH_OFFSET     0x40
+#define EZHB_EZH2ARM_OFFSET     0x44
+#define EZHB_PENDTRAP_OFFSET    0x48
+
+// EZH 68-byte Stack Frame Register Layout
+#define EZH_FRAME_SIZE          68
+
+#define EZH_FRAME_OFFSET_R0     (-68)
+#define EZH_FRAME_OFFSET_R1     (-64)
+#define EZH_FRAME_OFFSET_R2     (-60)
+#define EZH_FRAME_OFFSET_R3     (-56)
+#define EZH_FRAME_OFFSET_R4     (-52)
+#define EZH_FRAME_OFFSET_R5     (-48)
+#define EZH_FRAME_OFFSET_R6     (-44)
+#define EZH_FRAME_OFFSET_R7     (-40)
+#define EZH_FRAME_OFFSET_GPO    (-36)
+#define EZH_FRAME_OFFSET_GPD    (-32)
+#define EZH_FRAME_OFFSET_CFS    (-28)
+#define EZH_FRAME_OFFSET_CFM    (-24)
+#define EZH_FRAME_OFFSET_SP     (-20)
+#define EZH_FRAME_OFFSET_PC     (-16)
+#define EZH_FRAME_OFFSET_GPI    (-12)
+#define EZH_FRAME_OFFSET_RA     (-8)
+#define EZH_FRAME_OFFSET_FLAGS  (-4)
+
+// LLDB register index defines
+#define EZH_REG_IDX_R0          0
+#define EZH_REG_IDX_R1          1
+#define EZH_REG_IDX_R2          2
+#define EZH_REG_IDX_R3          3
+#define EZH_REG_IDX_R4          4
+#define EZH_REG_IDX_R5          5
+#define EZH_REG_IDX_R6          6
+#define EZH_REG_IDX_R7          7
+#define EZH_REG_IDX_GPO         8
+#define EZH_REG_IDX_GPD         9
+#define EZH_REG_IDX_CFS         10
+#define EZH_REG_IDX_CFM         11
+#define EZH_REG_IDX_SP          12
+#define EZH_REG_IDX_PC          13
+#define EZH_REG_IDX_GPI         14
+#define EZH_REG_IDX_RA          15
+#define EZH_REG_IDX_FLAGS       16
+
+#define EZH_NUM_REGS            17
+
+#endif // LLDB_SYMBOL_EZHREGISTERS_H
diff --git a/lldb/source/Plugins/Process/EZH/ProcessEZH.cpp b/lldb/source/Plugins/Process/EZH/ProcessEZH.cpp
new file mode 100644
index 0000000000000..50886c9dca755
--- /dev/null
+++ b/lldb/source/Plugins/Process/EZH/ProcessEZH.cpp
@@ -0,0 +1,885 @@
+//===-- ProcessEZH.cpp ----------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "ProcessEZH.h"
+#include "EZHRegisters.h"
+#include "ThreadEZH.h"
+#include "lldb/Core/Module.h"
+#include "lldb/Utility/State.h"
+
+#include <thread>
+#include <chrono>
+
+#include "lldb/Symbol/Symbol.h"
+#include "lldb/Symbol/Symtab.h"
+#include "lldb/Symbol/SymbolContext.h"
+#include "lldb/Symbol/Function.h"
+#include "lldb/Symbol/Variable.h"
+#include "lldb/Symbol/VariableList.h"
+
+#include "lldb/Breakpoint/Breakpoint.h"
+#include "lldb/Breakpoint/BreakpointList.h"
+#include "lldb/Breakpoint/BreakpointSite.h"
+
+#include "lldb/Core/PluginManager.h"
+#include "lldb/Core/Debugger.h"
+#include "lldb/Core/UserSettingsController.h"
+#include "lldb/Interpreter/OptionValueProperties.h"
+#include "lldb/Interpreter/OptionValueUInt64.h"
+#include "lldb/Target/Target.h"
+#include "lldb/Target/StopInfo.h"
+#include "lldb/Core/Value.h"
+#include "lldb/Utility/Status.h"
+#include "lldb/Utility/RegisterValue.h"
+
+namespace {
+class ProcessEZHProperties : public lldb_private::Properties {
+public:
+  ProcessEZHProperties() : lldb_private::Properties() {
+    m_collection_sp = std::make_shared<lldb_private::OptionValueProperties>("ezh-remote");
+    m_collection_sp->Initialize(lldb_private::PropertyCollectionDefinition{llvm::ArrayRef<lldb_private::PropertyDefinition>(g_properties), "plugin.process.ezh-remote"});
+  }
+  static llvm::StringRef GetSettingName() { return "ezh-remote"; }
+
+  lldb::addr_t GetBaseAddress() const {
+    const uint32_t idx = 0;
+    lldb_private::OptionValueUInt64 *value = m_collection_sp->GetPropertyAtIndexAsOptionValueUInt64(idx);
+    if (value)
+      return value->GetCurrentValue();
+    return 0x40027000;
+  }
+
+private:
+  static const lldb_private::PropertyDefinition g_properties[1];
+};
+
+const lldb_private::PropertyDefinition ProcessEZHProperties::g_properties[1] = {
+    {"base-address",
+     lldb_private::OptionValue::eTypeUInt64,
+     true,
+     0x40027000,
+     nullptr,
+     {},
+     "The physical base address of the EZH hardware."}};
+
+static ProcessEZHProperties &GetGlobalEZHProperties() {
+  static ProcessEZHProperties g_settings;
+  return g_settings;
+}
+} // namespace
+
+using namespace lldb;
+using namespace lldb_private;
+using namespace lldb_private::process_gdb_remote;
+
+LLDB_PLUGIN_DEFINE_ADV(ProcessEZH, ProcessEZH)
+
+ProcessEZH::ProcessEZH(TargetSP target_sp, ListenerSP listener_sp)
+    : ProcessGDBRemote(target_sp, listener_sp) {
+  for (int i = 0; i < 16; ++i) {
+    m_debug_sw_bp_addrs[i] = LLDB_INVALID_ADDRESS;
+    m_active_sw_breakpoints[i] = LLDB_INVALID_ADDRESS;
+  }
+  m_polling_thread = std::thread(&ProcessEZH::PollingThread, this);
+}
+
+ProcessEZH::~ProcessEZH() {
+  m_destroy_polling_thread = true;
+  m_polling_cv.notify_all();
+  if (m_polling_thread.joinable()) {
+    m_polling_thread.join();
+  }
+}
+
+lldb::addr_t ProcessEZH::GetBaseAddress() const {
+  return GetGlobalEZHProperties().GetBaseAddress();
+}
+
+Status ProcessEZH::DoConnectRemote(llvm::StringRef remote_url) {
+  Status error = ProcessGDBRemote::DoConnectRemote(remote_url);
+  if (error.Success()) {
+    if (m_async_thread.IsJoinable()) {
+      m_async_broadcaster.BroadcastEvent(eBroadcastBitAsyncThreadShouldExit);
+      m_async_thread.Join(nullptr);
+      m_async_thread.Reset();
+    }
+
+    // Force state to stopped so LLDB command interpreter gets control instantly!
+    SetPrivateState(eStateStopped);
+  }
+  return error;
+}
+
+void ProcessEZH::WillPublicStop() {
+  // Do absolutely nothing! Bypass base class GDB remote thread queries to eliminate OpenOCD deprecation warnings.
+}
+
+void ProcessEZH::DidAttach(lldb_private::ArchSpec &process_arch) {
+  // Do absolutely nothing! Bypass base class DidLaunchOrAttach to prevent sending qProcessInfo, qSymbol, or structured data queries!
+}
+
+
+
+llvm::Error ProcessEZH::UpdateBreakpointSites(
+    const BreakpointSiteToActionMap &site_to_action) {
+  return lldb_private::Process::UpdateBreakpointSites(site_to_action);
+}
+
+Status ProcessEZH::EnableBreakpointSite(BreakpointSite *bp_site) {
+  if (!GetTarget().GetExecutableModule())
+    return Status::FromErrorString(
+        "Cannot enable breakpoints on EZH co-processor without an active ELF symbols file loaded.");
+
+  if (!bp_site)
+    return Status::FromErrorString("Invalid breakpoint site.");
+
+  addr_t addr = bp_site->GetLoadAddress();
+
+  if (IsBreakpointSiteEnabled(*bp_site))
+    return Status();
+
+  // Find if already enabled.
+  int slot = -1;
+  for (int i = 0; i < 16; ++i)
+    if (m_active_sw_breakpoints[i] == addr) {
+      slot = i;
+      break;
+    }
+
+  // If not already enabled, find an empty slot.
+  if (slot == -1)
+    for (int i = 0; i < 16; ++i)
+      if (m_active_sw_breakpoints[i] == LLDB_INVALID_ADDRESS) {
+        slot = i;
+        break;
+      }
+
+  if (slot == -1)
+    return Status::FromErrorString("EZH co-processor only supports up to 16 active software breakpoints concurrently.");
+
+  // 1. Resolve slot-specific debug_software_breakpoint_N address.
+  lldb::addr_t debug_sw_bp_addr = GetDebugSoftwareBreakpointAddr(slot);
+  if (debug_sw_bp_addr == LLDB_INVALID_ADDRESS)
+    return Status::FromErrorStringWithFormat("Failed to resolve 'debug_software_breakpoint_%d' exception vector for software breakpoint. Please make sure crt0 object symbols are linked.", slot);
+
+  // 2. Read original 4-byte instruction at addr from target RAM.
+  uint8_t original_bytes[4];
+  Status error;
+  size_t bytes_read = DoReadMemoryDirect(addr, original_bytes, 4, error);
+  if (bytes_read != 4 || error.Fail())
+    return Status::FromErrorStringWithFormat("Failed to read target instruction for software breakpoint backup: %s", error.AsCString());
+
+  // 3. Backup the original instruction bytes in bp_site (so LLDB can restore it on hit/disable).
+  memcpy(bp_site->GetSavedOpcodeBytes(), original_bytes, 4);
+  bp_site->SetType(BreakpointSite::eSoftware);
+
+  // 4. Construct software breakpoint instruction: e_goto &debug_software_breakpoint_K.
+  // Target Address is word-addressable in 21-bit: (TargetAddr >> 2) & 0x1FFFFF
+  uint32_t target_word = (static_cast<uint32_t>(debug_sw_bp_addr) >> 2) & 0x1FFFFF;
+  uint32_t sw_bp_op = (target_word << 11) | 0x215;
+
+  // 5. Write software breakpoint instruction word directly to target memory (RAM patching).
+  size_t bytes_written = DoWriteMemory(addr, &sw_bp_op, 4, error);
+  if (bytes_written != 4 || error.Fail())
+    return Status::FromErrorStringWithFormat("Failed to write software breakpoint trap opcode to target RAM: %s", error.AsCString());
+
+  m_active_sw_breakpoints[slot] = addr;
+  SetBreakpointSiteEnabled(*bp_site, true);
+  return Status();
+}
+
+Status ProcessEZH::DisableBreakpointSite(BreakpointSite *bp_site) {
+  if (!bp_site)
+    return Status::FromErrorString("Invalid breakpoint site.");
+
+  addr_t addr = bp_site->GetLoadAddress();
+
+  if (!IsBreakpointSiteEnabled(*bp_site))
+    return Status();
+
+  // 1. Retrieve saved original instruction bytes from bp_site backup.
+  const uint8_t *original_bytes = bp_site->GetSavedOpcodeBytes();
+  if (!original_bytes)
+    return Status::FromErrorString("No backup bytes available to restore original instruction.");
+
+  // 2. Overwrite software breakpoint instruction in RAM with original bytes (RAM restore).
+  Status error;
+  size_t bytes_written = DoWriteMemory(addr, original_bytes, 4, error);
+  if (bytes_written != 4 || error.Fail())
+    return Status::FromErrorStringWithFormat("Failed to restore target instruction from backup: %s", error.AsCString());
+
+  SetBreakpointSiteEnabled(*bp_site, false);
+  return Status();
+}
+
+void ProcessEZH::Initialize() {
+  PluginManager::RegisterPlugin(GetPluginNameStatic(),
+                                "GDB Remote EZH coprocessor debugging plugin",
+                                CreateInstance, DebuggerInitialize);
+}
+
+void ProcessEZH::DebuggerInitialize(Debugger &debugger) {
+  if (!PluginManager::GetSettingForProcessPlugin(
+          debugger, ProcessEZHProperties::GetSettingName())) {
+    const bool is_global_setting = true;
+    PluginManager::CreateSettingForProcessPlugin(
+        debugger, GetGlobalEZHProperties().GetValueProperties(),
+        "Properties for the EZH remote process plugin.", is_global_setting);
+  }
+}
+
+void ProcessEZH::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
+}
+
+ProcessSP ProcessEZH::CreateInstance(TargetSP target_sp, ListenerSP listener_sp,
+                                     const FileSpec *crash_file_path,
+                                     bool can_connect) {
+  ProcessSP process_sp;
+  if (crash_file_path == nullptr) {
+    if (target_sp->GetArchitecture().GetTriple().getArchName().starts_with("ezh")) {
+      process_sp = std::make_shared<ProcessEZH>(target_sp, listener_sp);
+    }
+  }
+  return process_sp;
+}
+
+std::shared_ptr<lldb_private::process_gdb_remote::ThreadGDBRemote>
+ProcessEZH::CreateThread(lldb::tid_t tid) {
+  return std::make_shared<ThreadEZH>(*this, tid);
+}
+
+
+
+ArchSpec ProcessEZH::GetSystemArchitecture() {
+  return GetTarget().GetArchitecture();
+}
+
+Status ProcessEZH::DoResume(lldb::RunDirection direction) {
+  if (!GetTarget().GetExecutableModule()) {
+    return Status::FromErrorString(
+        "Cannot resume or single-step EZH co-processor without an active ELF symbols file loaded ('target create <elf>').");
+  }
+  m_memory_cache.Clear();
+
+  ThreadSP thread_sp = m_thread_list.GetThreadAtIndex(0);
+  if (!thread_sp)
+    return Status::FromErrorString("No active thread.");
+
+  RegisterContextSP reg_ctx_sp = thread_sp->GetRegisterContext();
+  if (reg_ctx_sp)
+    reg_ctx_sp->InvalidateAllRegisters();
+
+  StateType resume_state = thread_sp->GetTemporaryResumeState();
+  m_is_stepping = (resume_state == eStateStepping);
+  m_halt_requested = false;
+  Status error;
+
+  // 0.1 Resolve and read EZH's RAM handshake variable debug_frame over JTAG
+  addr_t debug_frame_addr_init = LLDB_INVALID_ADDRESS;
+  VariableList variable_list_init;
+  GetTarget().GetImages().FindGlobalVariables(ConstString("debug_frame"), 1, variable_list_init);
+  if (variable_list_init.GetSize() > 0) {
+    VariableSP var_sp_init = variable_list_init.GetVariableAtIndex(0);
+    if (var_sp_init) {
+      ExecutionContext exe_ctx(GetTarget());
+      auto value_or_error = var_sp_init->LocationExpressionList().Evaluate(&exe_ctx, nullptr, LLDB_INVALID_ADDRESS, nullptr, nullptr);
+      if (value_or_error) {
+        Value val = value_or_error.get();
+        debug_frame_addr_init = val.GetScalar().ULongLong(LLDB_INVALID_ADDRESS);
+      }
+    }
+  }
+
+  uint32_t sp_val_init = 0;
+  if (debug_frame_addr_init != LLDB_INVALID_ADDRESS)
+    DoReadMemory(debug_frame_addr_init, &sp_val_init, 4, error);
+
+  // 0.23 If virtually halted, force commit virtualized PC back to stack RAM to replace any JTAG markers!
+  // IMPORTANT: Do this BEFORE clearing deferred breakpoints, because virtualization relies on m_active_sw_breakpoints!
+  if (sp_val_init != 0 && reg_ctx_sp) {
+    const RegisterInfo *pc_reg_info = reg_ctx_sp->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+    uint32_t pc_val = reg_ctx_sp->ReadRegisterAsUnsigned(pc_reg_info, 0);
+    reg_ctx_sp->WriteRegister(pc_reg_info, RegisterValue(pc_val));
+  }
+
+  // Now it is safe to clean up any deferred cleared software breakpoints!
+  // Their slots will become free for the single-step logic to reuse.
+  for (int i = 0; i < 16; ++i) {
+    addr_t addr = m_active_sw_breakpoints[i];
+    if (addr != LLDB_INVALID_ADDRESS && addr != m_step_bp_addr) {
+      BreakpointSiteSP bp_site_sp = GetBreakpointSiteList().FindByAddress(addr);
+      if (!bp_site_sp || !IsBreakpointSiteEnabled(*bp_site_sp))
+        m_active_sw_breakpoints[i] = LLDB_INVALID_ADDRESS;
+    }
+  }
+
+  // Invalidate registers again to force re-reading PC from target RAM (where we just wrote the virtual PC)
+  if (reg_ctx_sp)
+    reg_ctx_sp->InvalidateAllRegisters();
+
+  // 0.2 Clear EZH JTAG Interrupt 7 pending status to prevent recursive loops on resume.
+  // Read current PENDTRAP, and only clear our pending request bit 7 (AND-NOT ~ (1<<7))
+  uint32_t trap_val_clear = 0;
+  error = ReadEZHRegister(EZHB_PENDTRAP_OFFSET, trap_val_clear);
+  if (error.Success()) {
+    trap_val_clear &= ~(1 << 7);
+    error = WriteEZHRegister(EZHB_PENDTRAP_OFFSET, trap_val_clear);
+  }
+  if (error.Fail())
+    return error;
+
+  // 0.3 Prevent stepping actively executing targets that have no stack frame!
+  if (resume_state == eStateStepping && sp_val_init == 0) {
+    uint32_t ctrl_val_check = 0;
+    ReadEZHRegister(EZHB_CTRL_OFFSET, ctrl_val_check);
+    if ((ctrl_val_check & 1) != 0) {
+      if (thread_sp)
+        thread_sp->DiscardThreadPlansUpToPlan(thread_sp->GetCurrentPlan());
+      return Status::FromErrorString("Cannot single-step an actively executing target. Halt it first.");
+    }
+  }
+
+  if (resume_state == eStateStepping) {
+    // 0.5 Check if EZH is physically stopped/reset (Start = 0).
+    uint32_t ctrl_val = 0;
+    error = ReadEZHRegister(EZHB_CTRL_OFFSET, ctrl_val);
+    if (error.Success() && ((ctrl_val & 1) == 0)) {
+      if (thread_sp)
+        thread_sp->DiscardThreadPlansUpToPlan(thread_sp->GetCurrentPlan());
+      return Status::FromErrorString("Cannot step, stepi, next or finish a non running core (Start = 0) because the stack pointer (SP) has not been initialized yet. Please set a breakpoint after stack initialization and use 'continue' to start the core.");
+    }
+
+    // 1. Read active PC natively from register context
+    RegisterContextSP reg_ctx_sp = thread_sp->GetRegisterContext();
+    uint32_t pc_val = 0;
+    if (reg_ctx_sp)
+      pc_val = reg_ctx_sp->ReadRegisterAsUnsigned(
+          reg_ctx_sp->GetRegisterInfo(eRegisterKindGeneric,
+                                      LLDB_REGNUM_GENERIC_PC),
+          0);
+
+    // 2. Decode EZH instruction at current PC to predict next PC (branch target prediction!)
+    uint32_t next_pc = pc_val + 4; // Default sequential fallback
+    uint32_t inst_val = 0;
+    uint32_t rn_wb = 99;
+    uint32_t rn_val = 0;
+    DoReadMemory(pc_val, &inst_val, 4, error);
+    
+    if (error.Success()) {
+      if ((inst_val & 0x3) == 0x3) {
+        // e_gosub (CALL) -> Unconditional 30-bit absolute address branch!
+        next_pc = inst_val & 0xFFFFFFFC;
+      } else if ((inst_val & 0x1F) == 0x15) {
+        // e_goto / e_gotol / e_goto_reg -> Conditional branches!
+        uint32_t cond = (inst_val >> 5) & 0xF;
+        bool is_reg = (((inst_val >> 9) & 1) == 0);
+
+        // Read ALU flags register directly from the active JTAG stack frame in RAM!
+        uint32_t flags = 0;
+        if (sp_val_init != 0)
+          DoReadMemory(sp_val_init + EZH_FRAME_OFFSET_FLAGS, &flags, 4, error);
+
+        // Evaluate the branch condition: cond == 0 is unconditional (EU), otherwise test bit 'cond' in flags!
+        bool condition_met = (cond == 0) || ((flags & (1 << cond)) != 0);
+
+
+        
+        if (condition_met) {
+          if (is_reg) {
+            // Register Branch -> target is in register raddr (Inst{17-14})
+            uint32_t raddr = (inst_val >> 14) & 0xF;
+            if (reg_ctx_sp)
+              next_pc = reg_ctx_sp->ReadRegisterAsUnsigned(raddr, pc_val + 4);
+          } else {
+            // Immediate Branch -> target is 21-bit absolute word offset (Inst{31-11}) from 0x24000000
+            uint32_t addr = (inst_val >> 11) & 0x1FFFFF;
+            next_pc = 0x24000000 + (addr << 2);
+          }
+
+      }
+      } else if ((inst_val & 0x1F) == 0x01 && ((inst_val >> 10) & 0xF) == 0xD) {
+        // e_ldr pc, ... (including e_popd pc!) -> Load to PC return!
+        // Predict next PC by reading the return address from the stack frame in RAM!
+        rn_wb = (inst_val >> 14) & 0xF; // Base register Rn (should be SP)
+        rn_val = 0;
+        if (reg_ctx_sp)
+          rn_val = reg_ctx_sp->ReadRegisterAsUnsigned(rn_wb, 0);
+
+        // EZH LDR_POST Rn, Offset: Address read is simply the current Rn value!
+        // (Post-increment reads from Rn, and then increments Rn! So the load address is exactly Rn!)
+        uint32_t load_addr = rn_val;
+        uint32_t ret_addr = 0;
+        DoReadMemory(load_addr, &ret_addr, 4, error);
+        if (error.Success()) {
+          next_pc = ret_addr;
+        }
+      } else if ((inst_val & 0x0000FFFF) == 0x0000f400) {
+        // e_mov pc, Rs -> Register move return!
+        // Rs is in Inst{17-14}
+        uint32_t rs = (inst_val >> 14) & 0xF;
+        if (reg_ctx_sp)
+          next_pc = reg_ctx_sp->ReadRegisterAsUnsigned(rs, pc_val + 4);
+      }
+    }
+
+    // 3. Set temporary Software Breakpoint (RAM patch) at next PC to prevent prefetch PC corruption hazards!
+    fprintf(stderr, "[ProcessEZH::DoResume] SINGLE_STEP: PC=0x%08x, inst=0x%08x -> Predicted next_pc=0x%08x (sp_init=0x%08x, rn_wb=%u, rn_val=0x%08x)\n",
+            pc_val, inst_val, next_pc, sp_val_init, rn_wb, rn_val);
+
+    // Clean up any stale step breakpoint first
+    if (m_step_bp_addr != LLDB_INVALID_ADDRESS) {
+      DoWriteMemory(m_step_bp_addr, &m_step_bp_original_op, 4, error);
+      if (m_step_bp_slot != -1)
+        m_active_sw_breakpoints[m_step_bp_slot] = LLDB_INVALID_ADDRESS;
+      m_step_bp_addr = LLDB_INVALID_ADDRESS;
+      m_step_bp_original_op = 0;
+      m_step_bp_slot = -1;
+    }
+
+    // Find an empty slot for the step breakpoint.
+    int slot = -1;
+    for (int i = 0; i < 16; ++i)
+      if (m_active_sw_breakpoints[i] == LLDB_INVALID_ADDRESS) {
+        slot = i;
+        break;
+      }
+
+    if (slot == -1)
+      return Status::FromErrorString("Cannot single-step EZH target: All 16 software breakpoint slots are currently full. Please disable a breakpoint first.");
+
+    lldb::addr_t debug_sw_bp_addr = GetDebugSoftwareBreakpointAddr(slot);
+    if (debug_sw_bp_addr == LLDB_INVALID_ADDRESS)
+      return Status::FromErrorStringWithFormat("Failed to resolve debug_software_breakpoint_%d address for software single-step.", slot);
+
+    // Read original instruction at next_pc.
+    uint32_t original_op = 0;
+    size_t bytes_read = DoReadMemoryDirect(next_pc, &original_op, 4, error);
+    if (bytes_read != 4 || error.Fail())
+      return Status::FromErrorStringWithFormat("Failed to read original instruction at single-step target 0x%08llx: %s", (unsigned long long)next_pc, error.AsCString());
+
+    // Backup original state.
+    m_step_bp_addr = next_pc;
+    m_step_bp_original_op = original_op;
+    m_step_bp_slot = slot;
+    m_active_sw_breakpoints[slot] = next_pc;
+
+    // Construct software breakpoint instruction: e_goto &debug_software_breakpoint_K.
+    uint32_t target_word = (static_cast<uint32_t>(debug_sw_bp_addr) >> 2) & 0x1FFFFF;
+    uint32_t sw_bp_op = (target_word << 11) | 0x215;
+
+    // Patch RAM.
+    size_t bytes_written = DoWriteMemory(next_pc, &sw_bp_op, 4, error);
+    if (bytes_written != 4 || error.Fail()) {
+      // Rollback backup state on write error.
+      m_active_sw_breakpoints[slot] = LLDB_INVALID_ADDRESS;
+      m_step_bp_addr = LLDB_INVALID_ADDRESS;
+      m_step_bp_original_op = 0;
+      m_step_bp_slot = -1;
+      return Status::FromErrorStringWithFormat("Failed to patch RAM at single-step target 0x%08llx: %s", (unsigned long long)next_pc, error.AsCString());
+    }
+
+    // 4. Unhalt EZH co-processor: set debug_frame in RAM to 0 over JTAG!
+    uint32_t zero = 0;
+    if (debug_frame_addr_init != LLDB_INVALID_ADDRESS) {
+      WriteMemory(debug_frame_addr_init, &zero, 4, error);
+      if (error.Fail())
+        return error;
+      // Give the remote JTAG adapter 10ms to process the unhalt cleanly!
+      std::this_thread::sleep_for(std::chrono::milliseconds(10));
+    }
+
+    // No artificial sleep needed; let PollingThread verify physical halt instantly.
+
+  } else if (resume_state == eStateRunning) {
+    // 1. Check the physical EZH ignition state first!
+    uint32_t ctrl_val = 0;
+    error = ReadEZHRegister(EZHB_CTRL_OFFSET, ctrl_val);
+    if (error.Fail())
+      return error;
+    bool ignition_set = ((ctrl_val & 1) != 0);
+
+    if (!ignition_set) {
+      // EZH is physically stopped/reset (Start = 0). Ignite it!
+
+      // 1. Invalidate EZH's cached JTAG RAM address to guarantee dynamic self-refresh on new compiles!
+      m_debug_frame_addr = LLDB_INVALID_ADDRESS;
+
+      // 2. Clear EZH's RAM JTAG handshake variable debug_frame over JTAG first!
+      uint32_t zero = 0;
+      if (debug_frame_addr_init != LLDB_INVALID_ADDRESS)
+        WriteMemory(debug_frame_addr_init, &zero, 4, error);
+
+      // 2. Clear JTAG Trap 7 request and arm JTAG Trap Enable 7 in hardware.
+      error = WriteEZHRegister(EZHB_PENDTRAP_OFFSET, 0x00800000);
+      if (error.Fail())
+        return error;
+
+      // 3. Automatically resolve EZH's entry point address from the ELF headers!
+      auto entry_point_address = GetTarget().GetEntryPointAddress();
+      if (entry_point_address) {
+        addr_t entry_point = entry_point_address->GetLoadAddress(&GetTarget());
+        if (entry_point == LLDB_INVALID_ADDRESS)
+          entry_point = entry_point_address->GetFileAddress(); // Robust static File Address fallback!
+        if (entry_point != LLDB_INVALID_ADDRESS) {
+          error = WriteEZHRegister(EZHB_BOOT_OFFSET, static_cast<uint32_t>(entry_point));
+          if (error.Fail())
+            return error;
+        }
+      } else {
+        llvm::consumeError(entry_point_address.takeError());
+      }
+
+      // 4. Ignite EZH!
+      uint32_t ctrl_ignite = 0xC0DE0000 | (ctrl_val & 0xFFFF) | 1;
+      error = WriteEZHRegister(EZHB_CTRL_OFFSET, ctrl_ignite);
+      if (error.Fail())
+        return error;
+      m_is_stepping = false;
+    } else {
+      // EZH is physically ignited (Start = 1). Only unhalt if we have a valid stack frame!
+      if (sp_val_init != 0) {
+        // EZH is in Virtually Halted state. Unhalt EZH: set debug_frame in RAM to 0 over JTAG!
+        uint32_t zero = 0;
+        if (debug_frame_addr_init != LLDB_INVALID_ADDRESS) {
+          WriteMemory(debug_frame_addr_init, &zero, 4, error);
+          if (error.Fail())
+            return error;
+        }
+      }
+    }
+  }
+
+  // Transition state to eStateRunning so polling thread runs and LLDB waits correctly
+  SetPrivateState(eStateRunning);
+
+  // Notify polling thread to start polling
+  m_polling_cv.notify_one();
+
+  return Status();
+}
+
+bool ProcessEZH::DoUpdateThreadList(ThreadList &old_thread_list,
+                                    ThreadList &new_thread_list) {
+  // Preserve EZH's real JTAG thread context if it exists to keep stop info and register contexts intact!
+  // Pass false to GetThreadAtIndex to prevent infinite recursive thread list update checking!
+  ThreadSP thread_sp = old_thread_list.GetThreadAtIndex(0, false);
+  if (!thread_sp) {
+    thread_sp = std::make_shared<ThreadEZH>(*this, 1);
+  } else {
+    // Forcefully invalidate register cache on stop refresh to guarantee fresh JTAG reads!
+    RegisterContextSP reg_ctx_sp = thread_sp->GetRegisterContext();
+    if (reg_ctx_sp)
+      reg_ctx_sp->InvalidateAllRegisters();
+  }
+  new_thread_list.AddThread(thread_sp);
+  return true;
+}
+
+Status ProcessEZH::DoHalt(bool &caused_stop) {
+  if (m_is_stepping)
+    // If EZH is actively single-stepping, do NOT inject Trap 7. Let the hardware hit the breakpoint naturally!
+    return Status();
+  m_halt_requested = true;
+  caused_stop = false;
+
+  // 1. Read current PENDTRAP to preserve other active traps!
+  uint32_t trap_val = 0;
+  Status error;
+  error = ReadEZHRegister(EZHB_PENDTRAP_OFFSET, trap_val);
+  if (error.Fail())
+    return error;
+
+  // 2. Enable pending trap 7 (bit 23) and set request (bit 7) safely via OR
+  trap_val |= (1 << 23) | (1 << 7);
+
+  error = WriteEZHRegister(EZHB_PENDTRAP_OFFSET, trap_val);
+  if (error.Success()) {
+    caused_stop = true;
+    return Status();
+  }
+
+  return Status::FromErrorStringWithFormat(
+      "Failed to write EZH PENDTRAP register over JTAG: %s", error.AsCString());
+}
+
+void ProcessEZH::RefreshStateAfterStop() {
+  Status error;
+  // 0. Clean up temporary Software Single-Step breakpoint if it was active.
+  if (m_step_bp_addr != LLDB_INVALID_ADDRESS) {
+    DoWriteMemory(m_step_bp_addr, &m_step_bp_original_op, 4, error);
+
+    // Force commit the virtual step PC back to stack RAM to replace the JTAG marker immediately!
+    // This allows us to free the step BP slot right now, instead of waiting for DoResume!
+    lldb::addr_t debug_frame_addr = GetDebugFrameAddr();
+    if (debug_frame_addr != LLDB_INVALID_ADDRESS) {
+      uint32_t sp_val = 0;
+      DoReadMemory(debug_frame_addr, &sp_val, 4, error);
+      if (sp_val != 0) {
+        uint32_t pc_val = static_cast<uint32_t>(m_step_bp_addr);
+        // Write virtual PC to stack frame (sp - 16)
+        DoWriteMemory(sp_val - 16, &pc_val, 4, error);
+      }
+    }
+
+    // Now we can safely free the slot immediately.
+    if (m_step_bp_slot != -1)
+      m_active_sw_breakpoints[m_step_bp_slot] = LLDB_INVALID_ADDRESS;
+
+    m_step_bp_addr = LLDB_INVALID_ADDRESS;
+    m_step_bp_original_op = 0;
+    m_step_bp_slot = -1;
+  }
+
+  // 0.5. Ensure EZH physical halt has fully completed and stabilized in RAM!
+  lldb::addr_t debug_frame_addr = GetDebugFrameAddr();
+  if (debug_frame_addr != LLDB_INVALID_ADDRESS) {
+    uint32_t sp_val = 0;
+    Status error;
+    m_memory_cache.Clear();
+    DoReadMemory(debug_frame_addr, &sp_val, 4, error);
+    if (sp_val == 0)
+      for (int i = 0; i < 20; ++i) {
+        std::this_thread::sleep_for(std::chrono::milliseconds(50));
+        m_memory_cache.Clear();
+        DoReadMemory(debug_frame_addr, &sp_val, 4, error);
+        if (sp_val != 0)
+          break;
+      }
+  }
+
+  // Refresh thread list directly without invoking base class GDB remote thread queries
+  m_thread_ids.clear();
+  m_thread_pcs.clear();
+  UpdateThreadListIfNeeded();
+  if (m_last_stop_packet) {
+    SetThreadStopInfo(*m_last_stop_packet);
+    m_last_stop_packet.reset();
+  }
+  m_thread_list_real.RefreshStateAfterStop();
+
+  ThreadSP thread_sp = m_thread_list.GetThreadAtIndex(0);
+  if (thread_sp) {
+    RegisterContextSP reg_ctx_sp = thread_sp->GetRegisterContext();
+    if (reg_ctx_sp)
+      reg_ctx_sp->InvalidateAllRegisters();
+
+    StateType temp_state = thread_sp->GetTemporaryResumeState();
+    if (temp_state == eStateStepping) {
+      thread_sp->SetStopInfo(StopInfo::CreateStopReasonToTrace(*thread_sp));
+    } else {
+      addr_t pc_val = 0;
+      if (reg_ctx_sp)
+        pc_val = reg_ctx_sp->ReadRegisterAsUnsigned(
+            13u, 0ULL); // PC is 13 (ra is 16)
+      BreakpointSiteSP bp_site_sp = GetBreakpointSiteList().FindByAddress(pc_val);
+      if (bp_site_sp)
+        thread_sp->SetStopInfo(StopInfo::CreateStopReasonWithBreakpointSiteID(*thread_sp, bp_site_sp->GetID()));
+      else
+        thread_sp->SetStopInfo(StopInfo::CreateStopReasonToTrace(*thread_sp));
+    }
+  }
+}
+
+void ProcessEZH::ModulesDidLoad(lldb_private::ModuleList &module_list) {
+  // Call base class to process the newly loaded modules first!
+  ProcessGDBRemote::ModulesDidLoad(module_list);
+
+  // Automatically resolve ELF entrypoint address and load it into hardware BOOTADR register!
+  auto entry_point_address = GetTarget().GetEntryPointAddress();
+  if (entry_point_address) {
+    addr_t entry_point = entry_point_address->GetLoadAddress(&GetTarget());
+    if (entry_point == LLDB_INVALID_ADDRESS)
+      entry_point = entry_point_address->GetFileAddress(); // Robust static File Address fallback!
+    if (entry_point != LLDB_INVALID_ADDRESS)
+      WriteEZHRegister(EZHB_BOOT_OFFSET, (uint32_t)entry_point);
+  } else {
+    llvm::consumeError(entry_point_address.takeError());
+  }
+}
+
+void ProcessEZH::PollingThread() {
+  lldb_private::Status error;
+
+  while (!m_destroy_polling_thread) {
+    std::unique_lock<std::mutex> lock(m_polling_mutex);
+    m_polling_cv.wait(lock, [this]() {
+      return GetPrivateState() == lldb::eStateRunning || m_destroy_polling_thread;
+    });
+
+    if (m_destroy_polling_thread)
+      break;
+
+    lock.unlock();
+
+    uint32_t sp_val = 0;
+    lldb::addr_t exc_signal_addr = LLDB_INVALID_ADDRESS;
+    bool first_poll = true;
+    int poll_count = 0;
+    
+    while (GetPrivateState() == lldb::eStateRunning && !m_destroy_polling_thread) {
+      poll_count++;
+      if (first_poll) {
+        if (m_is_stepping)
+          std::this_thread::sleep_for(std::chrono::milliseconds(
+              5)); // Initial 5ms wait for single-stepping to complete over JTAG
+      } else {
+        if (m_is_stepping)
+          std::this_thread::sleep_for(std::chrono::milliseconds(5)); // 5ms poll for single-stepping
+        else
+          std::this_thread::sleep_for(std::chrono::milliseconds(
+              500)); // Standard 500ms poll for continuous execution
+      }
+      first_poll = false;
+
+      if (m_destroy_polling_thread)
+        break;
+
+      // Re-read debug_frame immediately after waking up from sleep to ensure sp_val reflects the latest JTAG state
+      if (m_debug_frame_addr != LLDB_INVALID_ADDRESS && !m_destroy_polling_thread) {
+        m_memory_cache.Clear();
+        DoReadMemory(m_debug_frame_addr, &sp_val, 4, error);
+      }
+
+      if (m_debug_frame_addr == LLDB_INVALID_ADDRESS) {
+        VariableList variable_list;
+        GetTarget().GetImages().FindGlobalVariables(ConstString("debug_frame"), 1, variable_list);
+        if (variable_list.GetSize() > 0) {
+          VariableSP var_sp = variable_list.GetVariableAtIndex(0);
+          if (var_sp) {
+            ExecutionContext exe_ctx(GetTarget());
+            auto value_or_error = var_sp->LocationExpressionList().Evaluate(&exe_ctx, nullptr, LLDB_INVALID_ADDRESS, nullptr, nullptr);
+            if (value_or_error) {
+              Value val = value_or_error.get();
+              m_debug_frame_addr = val.GetScalar().ULongLong(LLDB_INVALID_ADDRESS);
+            }
+          }
+        }
+      }
+
+      if (exc_signal_addr == LLDB_INVALID_ADDRESS) {
+        VariableList variable_list_exc;
+        GetTarget().GetImages().FindGlobalVariables(ConstString("exc_signal"), 1, variable_list_exc);
+        if (variable_list_exc.GetSize() > 0) {
+          VariableSP var_sp_exc = variable_list_exc.GetVariableAtIndex(0);
+          if (var_sp_exc) {
+            ExecutionContext exe_ctx(GetTarget());
+            auto value_or_error = var_sp_exc->LocationExpressionList().Evaluate(&exe_ctx, nullptr, LLDB_INVALID_ADDRESS, nullptr, nullptr);
+            if (value_or_error) {
+              Value val = value_or_error.get();
+              exc_signal_addr = val.GetScalar().ULongLong(LLDB_INVALID_ADDRESS);
+            }
+          }
+        }
+      }
+
+      size_t bytes_read = 0;
+      uint32_t exc_val = 0;
+      if (m_debug_frame_addr != LLDB_INVALID_ADDRESS && !m_destroy_polling_thread) {
+        m_memory_cache.Clear();
+        bytes_read = DoReadMemory(m_debug_frame_addr, &sp_val, 4, error);
+      }
+      if (exc_signal_addr != LLDB_INVALID_ADDRESS && !m_destroy_polling_thread) {
+        Status exc_error;
+        m_memory_cache.Clear();
+        DoReadMemory(exc_signal_addr, &exc_val, 4, exc_error);
+      }
+
+      if (bytes_read == 4 && error.Success() && sp_val != 0) {
+        m_halt_requested = false;
+        SetPrivateState(lldb::eStateStopped);
+        break;
+      }
+    }
+  }
+}
+
+Status ProcessEZH::WriteEZHRegister(addr_t offset, uint32_t value) {
+  Status error;
+  WriteMemory(GetBaseAddress() + offset, &value, 4, error);
+  return error;
+}
+
+Status ProcessEZH::ReadEZHRegister(addr_t offset, uint32_t &value) {
+  Status error;
+  m_memory_cache.Clear();
+  ReadMemory(GetBaseAddress() + offset, &value, 4, error);
+  return error;
+}
+
+lldb::addr_t ProcessEZH::GetDebugFrameAddr() {
+  if (m_debug_frame_addr == LLDB_INVALID_ADDRESS) {
+    VariableList variable_list;
+    GetTarget().GetImages().FindGlobalVariables(ConstString("debug_frame"), 1, variable_list);
+    if (variable_list.GetSize() > 0) {
+      VariableSP var_sp = variable_list.GetVariableAtIndex(0);
+      if (var_sp) {
+        ExecutionContext exe_ctx(GetTarget());
+        auto value_or_error = var_sp->LocationExpressionList().Evaluate(&exe_ctx, nullptr, LLDB_INVALID_ADDRESS, nullptr, nullptr);
+        if (value_or_error) {
+          Value val = value_or_error.get();
+          m_debug_frame_addr = val.GetScalar().ULongLong(LLDB_INVALID_ADDRESS);
+        }
+      }
+    }
+  }
+  return m_debug_frame_addr;
+}
+
+lldb::addr_t ProcessEZH::GetDebugSoftwareBreakpointAddr(uint32_t slot) {
+  if (slot >= 16)
+    return LLDB_INVALID_ADDRESS;
+
+  if (m_debug_sw_bp_addrs[slot] == LLDB_INVALID_ADDRESS) {
+    char sym_name[64];
+    snprintf(sym_name, sizeof(sym_name), "debug_software_breakpoint_%u", slot);
+    SymbolContextList sc_list;
+    GetTarget().GetImages().FindSymbolsWithNameAndType(ConstString(sym_name), eSymbolTypeAny, sc_list);
+    if (sc_list.GetSize() > 0) {
+      SymbolContext sc;
+      if (sc_list.GetContextAtIndex(0, sc))
+        if (sc.symbol)
+          m_debug_sw_bp_addrs[slot] = sc.symbol->GetAddress().GetLoadAddress(&GetTarget());
+    }
+  }
+  return m_debug_sw_bp_addrs[slot];
+}
+
+Status ProcessEZH::DoDetach(bool keep_stopped) {
+  // Commit virtualized PC back to physical stack RAM before detaching so target is left in clean state.
+  ThreadSP thread_sp = m_thread_list.GetThreadAtIndex(0);
+  if (thread_sp) {
+    RegisterContextSP reg_ctx_sp = thread_sp->GetRegisterContext();
+    if (reg_ctx_sp) {
+      const RegisterInfo *pc_reg_info = reg_ctx_sp->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+      uint32_t pc_val = reg_ctx_sp->ReadRegisterAsUnsigned(pc_reg_info, 0);
+      if (pc_val != 0 &&
+          pc_val != static_cast<uint32_t>(LLDB_INVALID_ADDRESS))
+        reg_ctx_sp->WriteRegister(pc_reg_info, RegisterValue(pc_val));
+    }
+  }
+  return ProcessGDBRemote::DoDetach(keep_stopped);
+}
+
+Status ProcessEZH::DoDestroy() {
+  // Commit virtualized PC back to physical stack RAM before detaching so target is left in clean state.
+  ThreadSP thread_sp = m_thread_list.GetThreadAtIndex(0);
+  if (thread_sp) {
+    RegisterContextSP reg_ctx_sp = thread_sp->GetRegisterContext();
+    if (reg_ctx_sp) {
+      const RegisterInfo *pc_reg_info = reg_ctx_sp->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+      uint32_t pc_val = reg_ctx_sp->ReadRegisterAsUnsigned(pc_reg_info, 0);
+      if (pc_val != 0 &&
+          pc_val != static_cast<uint32_t>(LLDB_INVALID_ADDRESS))
+        reg_ctx_sp->WriteRegister(pc_reg_info, RegisterValue(pc_val));
+    }
+  }
+  return ProcessGDBRemote::DoDestroy();
+}
+
+
diff --git a/lldb/source/Plugins/Process/EZH/ProcessEZH.h b/lldb/source/Plugins/Process/EZH/ProcessEZH.h
new file mode 100644
index 0000000000000..a8af71e6b470e
--- /dev/null
+++ b/lldb/source/Plugins/Process/EZH/ProcessEZH.h
@@ -0,0 +1,112 @@
+//===-- ProcessEZH.h --------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_ProcessEZH_h_
+#define liblldb_ProcessEZH_h_
+
+#include "../gdb-remote/ProcessGDBRemote.h"
+#include "lldb/lldb-private.h"
+#include <thread>
+#include <mutex>
+#include <condition_variable>
+#include <atomic>
+
+class ProcessEZH : public lldb_private::process_gdb_remote::ProcessGDBRemote {
+public:
+  ProcessEZH(lldb::TargetSP target_sp, lldb::ListenerSP listener_sp);
+
+  ~ProcessEZH() override;
+
+  lldb_private::Status
+  EnableBreakpointSite(lldb_private::BreakpointSite *bp_site) override;
+
+  lldb_private::Status
+  DisableBreakpointSite(lldb_private::BreakpointSite *bp_site) override;
+
+  llvm::Error
+  UpdateBreakpointSites(const lldb_private::Process::BreakpointSiteToActionMap &site_to_action) override;
+
+  lldb::addr_t GetBaseAddress() const;
+
+  lldb_private::Status
+  DoConnectRemote(llvm::StringRef remote_url) override;
+
+  void WillPublicStop() override;
+
+  void DidAttach(lldb_private::ArchSpec &process_arch) override;
+
+  void InvalidateMemoryCache() { m_memory_cache.Clear(); }
+  size_t DoReadMemoryDirect(lldb::addr_t addr, void *buf, size_t size, lldb_private::Status &error) { return DoReadMemory(addr, buf, size, error); }
+
+  lldb_private::ArchSpec GetSystemArchitecture() override;
+
+  static void Initialize();
+
+  static void DebuggerInitialize(lldb_private::Debugger &debugger);
+
+  static void Terminate();
+
+  static lldb::ProcessSP
+  CreateInstance(lldb::TargetSP target_sp, lldb::ListenerSP listener_sp,
+                 const lldb_private::FileSpec *crash_file_path,
+                 bool can_connect);
+
+  std::shared_ptr<lldb_private::process_gdb_remote::ThreadGDBRemote>
+  CreateThread(lldb::tid_t tid) override;
+
+  bool DoUpdateThreadList(lldb_private::ThreadList &old_thread_list,
+                          lldb_private::ThreadList &new_thread_list) override;
+
+  lldb_private::Status
+  DoResume(lldb::RunDirection direction) override;
+
+  lldb_private::Status
+  DoHalt(bool &caused_stop) override;
+
+  lldb_private::Status
+  DoDetach(bool keep_stopped) override;
+
+  lldb_private::Status
+  DoDestroy() override;
+
+  void RefreshStateAfterStop() override;
+
+  static llvm::StringRef GetPluginNameStatic() { return "ezh-remote"; }
+
+  llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
+
+  void ModulesDidLoad(lldb_private::ModuleList &module_list) override;
+
+  lldb_private::Status WriteEZHRegister(lldb::addr_t offset, uint32_t value);
+  lldb_private::Status ReadEZHRegister(lldb::addr_t offset, uint32_t &value);
+
+  lldb::addr_t GetDebugFrameAddr();
+  lldb::addr_t GetDebugSoftwareBreakpointAddr(uint32_t slot);
+  lldb::addr_t GetActiveSoftwareBreakpointAddr(uint32_t slot) const {
+    return (slot < 16) ? m_active_sw_breakpoints[slot] : LLDB_INVALID_ADDRESS;
+  }
+
+private:
+  void PollingThread();
+
+  std::thread m_polling_thread;
+  std::atomic<bool> m_destroy_polling_thread{false};
+  std::atomic<bool> m_is_stepping{false};
+  std::atomic<bool> m_halt_requested{false};
+  std::condition_variable m_polling_cv;
+  std::mutex m_polling_mutex;
+
+  lldb::addr_t m_debug_frame_addr = LLDB_INVALID_ADDRESS;
+  lldb::addr_t m_debug_sw_bp_addrs[16];
+  lldb::addr_t m_active_sw_breakpoints[16];
+  lldb::addr_t m_step_bp_addr = LLDB_INVALID_ADDRESS;
+  uint32_t m_step_bp_original_op = 0;
+  int m_step_bp_slot = -1;
+};
+
+#endif // liblldb_ProcessEZH_h_
diff --git a/lldb/source/Plugins/Process/EZH/RegisterContextEZH.cpp b/lldb/source/Plugins/Process/EZH/RegisterContextEZH.cpp
new file mode 100644
index 0000000000000..ced182eac51a2
--- /dev/null
+++ b/lldb/source/Plugins/Process/EZH/RegisterContextEZH.cpp
@@ -0,0 +1,408 @@
+//===-- RegisterContextEZH.cpp --------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "RegisterContextEZH.h"
+#include "ProcessEZH.h"
+#include "EZHRegisters.h"
+#include "lldb/Core/Module.h"
+#include "lldb/Symbol/Variable.h"
+#include "lldb/Symbol/VariableList.h"
+#include "lldb/Target/Target.h"
+#include "lldb/Core/Value.h"
+#include "lldb/Core/Debugger.h"
+
+#include "lldb/Target/Process.h"
+#include "lldb/Target/Thread.h"
+#include "lldb/Target/RegisterFlags.h"
+#include "lldb/Utility/DataBufferHeap.h"
+#include "lldb/Utility/RegisterValue.h"
+#include "lldb/Utility/Status.h"
+
+#define DEFINE_REG_NAME(reg_num)      lldb_private::ConstString(#reg_num).GetCString()
+#define DEFINE_REG_NAME_STR(reg_name) lldb_private::ConstString(reg_name).GetCString()
+
+#define DEFINE_GENERIC_REGISTER_STUB(dwarf_num, str_name, generic_num)        \
+  {                                                                           \
+    DEFINE_REG_NAME(dwarf_num), DEFINE_REG_NAME_STR(str_name),                \
+    4, dwarf_num * 4, lldb::eEncodingUint, lldb::eFormatHex,                  \
+    { dwarf_num, dwarf_num, generic_num, dwarf_num, dwarf_num },              \
+    nullptr, nullptr, nullptr,                                                \
+  }
+
+#define DEFINE_FLAGS_REGISTER_STUB(dwarf_num, str_name, generic_num) \
+  {                                                                           \
+    DEFINE_REG_NAME(dwarf_num), DEFINE_REG_NAME_STR(str_name),                \
+    64, dwarf_num * 4, lldb::eEncodingVector, lldb::eFormatCString,           \
+    { dwarf_num, dwarf_num, generic_num, dwarf_num, dwarf_num },              \
+    nullptr, nullptr, nullptr,                                                \
+  }
+
+#define DEFINE_REGISTER_STUB(dwarf_num, str_name) \
+  DEFINE_GENERIC_REGISTER_STUB(dwarf_num, str_name, LLDB_INVALID_REGNUM)
+
+using namespace lldb;
+using namespace lldb_private;
+
+namespace {
+namespace dwarf {
+enum regnums {
+  r0, r1, r2, r3, r4, r5, r6, r7,
+  gpo, gpd, cfs, cfm,
+  sp, pc, gpi, ra, flags
+};
+
+static const lldb_private::RegisterFlags g_ezh_flags_type("flags", 4, {
+    {"EX", 15}, {"BS", 14}, {"NEX", 13}, {"NBS", 12},
+    {"SNE", 11}, {"SPO", 10}, {"CZ", 9}, {"NC", 8},
+    {"CA", 7}, {"ZB", 6}, {"AZ", 5}, {"NE", 4},
+    {"PO", 3}, {"NZ", 2}, {"ZE", 1}, {"EU", 0}
+});
+
+static const std::array<RegisterInfo, 17> g_register_infos = { {
+    DEFINE_GENERIC_REGISTER_STUB(r0, nullptr, LLDB_REGNUM_GENERIC_ARG1),
+    DEFINE_GENERIC_REGISTER_STUB(r1, nullptr, LLDB_REGNUM_GENERIC_ARG2),
+    DEFINE_GENERIC_REGISTER_STUB(r2, nullptr, LLDB_REGNUM_GENERIC_ARG3),
+    DEFINE_GENERIC_REGISTER_STUB(r3, nullptr, LLDB_REGNUM_GENERIC_ARG4),
+    DEFINE_REGISTER_STUB(r4, nullptr),
+    DEFINE_REGISTER_STUB(r5, nullptr),
+    DEFINE_REGISTER_STUB(r6, nullptr),
+    DEFINE_REGISTER_STUB(r7, nullptr),
+    DEFINE_REGISTER_STUB(gpo, nullptr),
+    DEFINE_REGISTER_STUB(gpd, nullptr),
+    DEFINE_REGISTER_STUB(cfs, nullptr),
+    DEFINE_REGISTER_STUB(cfm, nullptr),
+    DEFINE_GENERIC_REGISTER_STUB(sp, nullptr, LLDB_REGNUM_GENERIC_SP),
+    DEFINE_GENERIC_REGISTER_STUB(pc, nullptr, LLDB_REGNUM_GENERIC_PC),
+    DEFINE_REGISTER_STUB(gpi, nullptr),
+    DEFINE_GENERIC_REGISTER_STUB(ra, nullptr, LLDB_REGNUM_GENERIC_RA),
+    DEFINE_FLAGS_REGISTER_STUB(flags, nullptr, LLDB_REGNUM_GENERIC_FLAGS)} };
+
+static uint32_t g_reg_nums[] = {
+  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
+};
+
+static const RegisterSet g_reg_set = {
+    "General Purpose Registers", "gpr", 17, g_reg_nums
+};
+} // namespace dwarf
+} // namespace
+
+RegisterContextEZH::RegisterContextEZH(Thread &thread,
+                                       uint32_t concrete_frame_idx)
+    : RegisterContext(thread, concrete_frame_idx) {}
+
+size_t RegisterContextEZH::GetRegisterCount() {
+  return dwarf::g_register_infos.size();
+}
+
+const RegisterInfo *RegisterContextEZH::GetRegisterInfoAtIndex(size_t reg) {
+  if (reg < dwarf::g_register_infos.size())
+    return &dwarf::g_register_infos[reg];
+  return nullptr;
+}
+
+const RegisterSet *RegisterContextEZH::GetRegisterSet(size_t reg_set) {
+  if (reg_set == 0)
+    return &dwarf::g_reg_set;
+  return nullptr;
+}
+
+bool RegisterContextEZH::ReadAllRegisterValuesBytes() {
+  ProcessSP process_sp = m_thread.GetProcess();
+  if (!process_sp)
+    return false;
+
+  if (!process_sp->GetTarget().GetExecutableModule())
+    return false; // Block stack frame reads if no ELF is loaded!
+
+  Status error;
+  ProcessEZH *ezh_process = static_cast<ProcessEZH*>(process_sp.get());
+  if (!ezh_process)
+    return false;
+
+  lldb::addr_t debug_frame_addr = ezh_process->GetDebugFrameAddr();
+  if (debug_frame_addr == LLDB_INVALID_ADDRESS)
+    return false;
+
+  uint32_t sp_addr = 0;
+  size_t bytes_read = 0;
+  if (debug_frame_addr != LLDB_INVALID_ADDRESS) {
+    // 1. Read active stack pointer directly from dynamic RAM global variable debug_frame!
+    ezh_process->InvalidateMemoryCache();
+    bytes_read = ezh_process->DoReadMemoryDirect(debug_frame_addr, &sp_addr, 4, error);
+  }
+  if (bytes_read != 4 || error.Fail() || sp_addr == 0) {
+    if (error.Fail()) {
+      char dbg_err[256];
+      snprintf(dbg_err, sizeof(dbg_err), "RegisterContextEZH: Failed to read debug_frame from EZH RAM over JTAG: %s", error.AsCString());
+      lldb_private::Debugger::ReportWarning(dbg_err, process_sp->GetTarget().GetDebugger().GetID());
+    }
+    return false;
+  }
+
+  // 3. Read 68-byte stack frame from target RAM into local cache (sp_addr - EZH_FRAME_SIZE)
+  ezh_process->InvalidateMemoryCache();
+  bytes_read = ezh_process->DoReadMemoryDirect(sp_addr - EZH_FRAME_SIZE, m_reg_values, EZH_FRAME_SIZE, error);
+  if (bytes_read != EZH_FRAME_SIZE || error.Fail()) {
+    if (error.Fail()) {
+      char dbg_err[256];
+      snprintf(dbg_err, sizeof(dbg_err), "RegisterContextEZH: Failed to read EZH stack frame from RAM over JTAG: %s", error.AsCString());
+      lldb_private::Debugger::ReportWarning(dbg_err, process_sp->GetTarget().GetDebugger().GetID());
+    }
+    return false;
+  }
+
+  m_reg_values_valid = true;
+  
+
+
+  return true;
+}
+
+bool RegisterContextEZH::ReadRegister(const RegisterInfo *reg_info,
+                                     RegisterValue &value) {
+  if (!reg_info)
+    return false;
+
+  uint32_t reg_idx = reg_info->kinds[eRegisterKindLLDB];
+  if (reg_idx >= EZH_NUM_REGS)
+    return false;
+
+  ProcessSP process_sp = m_thread.GetProcess();
+  if (!process_sp)
+    return false;
+
+  Status error;
+  ProcessEZH *ezh_process = static_cast<ProcessEZH*>(process_sp.get());
+  
+  // 1. Check Ignition bit in EZHB_CTRL
+  uint32_t ctrl_val = 0;
+  error = ezh_process->ReadEZHRegister(EZHB_CTRL_OFFSET, ctrl_val);
+  if (error.Fail()) {
+    char dbg_err[256];
+    snprintf(dbg_err, sizeof(dbg_err), "RegisterContextEZH::ReadRegister: Failed to read EZH CTRL over JTAG: %s", error.AsCString());
+    lldb_private::Debugger::ReportWarning(dbg_err, ezh_process->GetTarget().GetDebugger().GetID());
+    return false;
+  }
+
+  bool ignition_set = ((ctrl_val & 1) != 0);
+
+  if (!ignition_set) {
+    // State 1: True Halted (Ignition = 0)
+    if (reg_idx == EZH_REG_IDX_PC) {
+      uint32_t boot_addr = 0;
+      error = ezh_process->ReadEZHRegister(EZHB_BOOT_OFFSET, boot_addr);
+      if (error.Fail()) {
+        char dbg_err[256];
+        snprintf(dbg_err, sizeof(dbg_err), "RegisterContextEZH::ReadRegister: Failed to read EZH BOOTADR over JTAG: %s", error.AsCString());
+        lldb_private::Debugger::ReportWarning(dbg_err, ezh_process->GetTarget().GetDebugger().GetID());
+        return false;
+      }
+      value.SetUInt32(boot_addr);
+      return true;
+    }
+    value.SetUInt32(0);
+    return true;
+  }
+
+  // 2. Check debug_frame to distinguish Executing vs Virtually Halted
+  lldb::addr_t debug_frame_addr = ezh_process->GetDebugFrameAddr();
+  if (debug_frame_addr == LLDB_INVALID_ADDRESS)
+    return false;
+
+  uint32_t sp_val = 0;
+  ezh_process->InvalidateMemoryCache();
+  ezh_process->DoReadMemoryDirect(debug_frame_addr, &sp_val, 4, error);
+
+  if (sp_val == 0) {
+    // State 2: Executing (Running) -> Registers are not accessible!
+    value.SetUInt32(0);
+    return true;
+  }
+
+  // State 3: Virtually Halted (Ignition = 1, debug_sp != 0)
+  if (!m_reg_values_valid && !ReadAllRegisterValuesBytes())
+    return false;
+
+  uint32_t reg_val = m_reg_values[reg_idx];
+  if (reg_idx == EZH_REG_IDX_PC) {
+    if (reg_val >= 0xFFFFFFF0 && reg_val <= 0xFFFFFFFF && ezh_process) {
+      uint32_t slot = reg_val - 0xFFFFFFF0;
+      lldb::addr_t sw_bp_addr = ezh_process->GetActiveSoftwareBreakpointAddr(slot);
+      if (sw_bp_addr != LLDB_INVALID_ADDRESS)
+        reg_val = static_cast<uint32_t>(sw_bp_addr);
+    } else if (reg_val == 0) {
+      reg_val = m_reg_values[EZH_REG_IDX_RA];
+    }
+  }
+
+  if (reg_idx == EZH_REG_IDX_FLAGS) {
+    char flags_str[64];
+    snprintf(flags_str, sizeof(flags_str), "0x%08x (", reg_val);
+    bool first = true;
+    for (const auto &field : dwarf::g_ezh_flags_type.GetFields()) {
+      if (!field.GetName().empty() && field.GetName() != "EU" && field.GetValue(reg_val) != 0) {
+        if (!first) strncat(flags_str, ", ", sizeof(flags_str) - strlen(flags_str) - 1);
+        strncat(flags_str, field.GetName().c_str(), sizeof(flags_str) - strlen(flags_str) - 1);
+        first = false;
+      }
+    }
+    if (first) strncat(flags_str, "None", sizeof(flags_str) - strlen(flags_str) - 1);
+    strncat(flags_str, ")", sizeof(flags_str) - strlen(flags_str) - 1);
+
+    value.SetBytes(flags_str, strlen(flags_str) + 1, endian::InlHostByteOrder());
+    return true;
+  }
+
+  value.SetUInt32(reg_val);
+  return true;
+}
+
+bool RegisterContextEZH::WriteRegister(const RegisterInfo *reg_info,
+                                      const RegisterValue &value) {
+  Status error;
+
+  if (!reg_info)
+    return false;
+
+  uint32_t reg_idx = reg_info->kinds[eRegisterKindLLDB];
+  if (reg_idx >= EZH_NUM_REGS)
+    return false;
+
+  // flags is read-only
+  if (reg_idx == EZH_REG_IDX_FLAGS)
+    return false;
+
+  ProcessSP process_sp = m_thread.GetProcess();
+  if (!process_sp)
+    return false;
+
+  ProcessEZH *ezh_process = static_cast<ProcessEZH*>(process_sp.get());
+  if (!ezh_process)
+    return false;
+  
+  // 1. Check Ignition bit in EZHB_CTRL
+  uint32_t ctrl_val = 0;
+  error = ezh_process->ReadEZHRegister(EZHB_CTRL_OFFSET, ctrl_val);
+  if (error.Fail()) {
+    char dbg_err[256];
+    snprintf(dbg_err, sizeof(dbg_err), "RegisterContextEZH::WriteRegister: Failed to read EZH CTRL over JTAG: %s", error.AsCString());
+    lldb_private::Debugger::ReportWarning(dbg_err, ezh_process->GetTarget().GetDebugger().GetID());
+    return false;
+  }
+  bool ignition_set = ((ctrl_val & 1) != 0);
+  if (!ignition_set) {
+    // State 1: True Halted (Ignition = 0)
+    if (reg_idx != EZH_REG_IDX_PC)
+      return false;
+
+    uint32_t val = value.GetAsUInt32();
+    error = ezh_process->WriteEZHRegister(EZHB_BOOT_OFFSET, val);
+    if (error.Fail()) {
+      char dbg_err[256];
+      snprintf(dbg_err, sizeof(dbg_err), "RegisterContextEZH::WriteRegister: Failed to write EZH BOOTADR over JTAG: %s", error.AsCString());
+      lldb_private::Debugger::ReportWarning(dbg_err, ezh_process->GetTarget().GetDebugger().GetID());
+      return false;
+    }
+    return true;
+  }
+
+
+
+  // 2. Check debug_frame
+  lldb::addr_t debug_frame_addr = ezh_process->GetDebugFrameAddr();
+  if (debug_frame_addr == LLDB_INVALID_ADDRESS)
+    return false;
+
+  uint32_t sp_val = 0;
+  ezh_process->DoReadMemoryDirect(debug_frame_addr, &sp_val, 4, error);
+
+  if (sp_val == 0)
+    // State 2: Executing -> Cannot write registers!
+    return false;
+
+  // State 3: Virtually Halted (Ignition = 1, debug_sp != 0)
+  uint32_t ezh_sp_val = sp_val;
+
+  uint32_t val = value.GetAsUInt32();
+  m_reg_values[reg_idx] = val;
+
+  // Write value back to stack RAM
+  size_t bytes_written = process_sp->WriteMemory(ezh_sp_val - EZH_FRAME_SIZE + (reg_idx * 4), &val, 4, error);
+  return bytes_written == 4 && error.Success();
+}
+
+bool RegisterContextEZH::ReadAllRegisterValues(WritableDataBufferSP &data_sp) {
+  if (!m_reg_values_valid && !ReadAllRegisterValuesBytes())
+    return false;
+  data_sp = std::make_shared<DataBufferHeap>(m_reg_values, 68);
+  return true;
+}
+
+bool RegisterContextEZH::WriteAllRegisterValues(const DataBufferSP &data_sp) {
+  if (!data_sp || data_sp->GetByteSize() != 68)
+    return false;
+
+  ProcessSP process_sp = m_thread.GetProcess();
+  if (!process_sp)
+    return false;
+
+  Status error;
+  uint32_t ezh_sp_val = 0;
+  ProcessEZH *ezh_process = static_cast<ProcessEZH*>(process_sp.get());
+
+  lldb::addr_t debug_frame_addr = ezh_process->GetDebugFrameAddr();
+  if (debug_frame_addr == LLDB_INVALID_ADDRESS)
+    return false;
+  // Read stack frame base from debug_frame RAM variable instead of broken EZHB_SP hardware register!
+  size_t bytes_read = ezh_process->DoReadMemoryDirect(debug_frame_addr, &ezh_sp_val, 4, error);
+  if (bytes_read != 4 || error.Fail() || ezh_sp_val == 0)
+    return false;
+
+  memcpy(m_reg_values, data_sp->GetBytes(), EZH_FRAME_SIZE);
+
+  // Write entire stack frame block back to RAM (ezh_sp_val - EZH_FRAME_SIZE)
+  size_t bytes_written = process_sp->WriteMemory(ezh_sp_val - EZH_FRAME_SIZE, m_reg_values, EZH_FRAME_SIZE, error);
+  return bytes_written == EZH_FRAME_SIZE && error.Success();
+}
+
+uint32_t RegisterContextEZH::ConvertRegisterKindToRegisterNumber(RegisterKind kind,
+                                                                 uint32_t num) {
+  if (kind == eRegisterKindGeneric) {
+    switch (num) {
+    case LLDB_REGNUM_GENERIC_PC:    return EZH_REG_IDX_PC; // pc
+    case LLDB_REGNUM_GENERIC_SP:    return EZH_REG_IDX_SP; // sp
+    case LLDB_REGNUM_GENERIC_RA:    return EZH_REG_IDX_RA; // ra
+    case LLDB_REGNUM_GENERIC_ARG1:  return EZH_REG_IDX_R0;  // r0
+    case LLDB_REGNUM_GENERIC_ARG2:  return EZH_REG_IDX_R1;  // r1
+    case LLDB_REGNUM_GENERIC_ARG3:  return EZH_REG_IDX_R2;  // r2
+    case LLDB_REGNUM_GENERIC_ARG4:  return EZH_REG_IDX_R3;  // r3
+    case LLDB_REGNUM_GENERIC_FLAGS: return EZH_REG_IDX_FLAGS; // flags
+    default:                        return LLDB_INVALID_REGNUM;
+    }
+  }
+
+  if (kind == eRegisterKindLLDB && num < EZH_NUM_REGS)
+    return num;
+
+  if (kind == eRegisterKindDWARF) {
+    if (num < EZH_REG_IDX_SP)
+      return num; // r0-r7, gpo, gpd, cfs, cfm
+    if (num == EZH_REG_IDX_SP)
+      return EZH_REG_IDX_SP;  // sp
+    if (num == EZH_REG_IDX_PC)
+      return EZH_REG_IDX_PC;  // pc
+    if (num == 14)
+      return 14;  // gpi
+    if (num == 15)
+      return EZH_REG_IDX_RA;  // DWARF 15 (ra) -> LLDB 15 (ra)
+    if (num == 16)
+      return EZH_REG_IDX_FLAGS; // DWARF 16 (flags) -> LLDB 16 (flags)
+  }
+  return LLDB_INVALID_REGNUM;
+}
diff --git a/lldb/source/Plugins/Process/EZH/RegisterContextEZH.h b/lldb/source/Plugins/Process/EZH/RegisterContextEZH.h
new file mode 100644
index 0000000000000..3acfbea2ce38b
--- /dev/null
+++ b/lldb/source/Plugins/Process/EZH/RegisterContextEZH.h
@@ -0,0 +1,52 @@
+//===-- RegisterContextEZH.h ------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_RegisterContextEZH_h_
+#define liblldb_RegisterContextEZH_h_
+
+#include "lldb/Target/RegisterContext.h"
+#include "lldb/lldb-private.h"
+#include "EZHRegisters.h"
+
+class RegisterContextEZH : public lldb_private::RegisterContext {
+public:
+  RegisterContextEZH(lldb_private::Thread &thread, uint32_t concrete_frame_idx);
+
+  ~RegisterContextEZH() override = default;
+
+  void InvalidateAllRegisters() override { m_reg_values_valid = false; }
+
+  size_t GetRegisterCount() override;
+
+  const lldb_private::RegisterInfo *GetRegisterInfoAtIndex(size_t reg) override;
+
+  size_t GetRegisterSetCount() override { return 1; }
+
+  const lldb_private::RegisterSet *GetRegisterSet(size_t reg_set) override;
+
+  bool ReadRegister(const lldb_private::RegisterInfo *reg_info,
+                    lldb_private::RegisterValue &value) override;
+
+  bool WriteRegister(const lldb_private::RegisterInfo *reg_info,
+                     const lldb_private::RegisterValue &value) override;
+
+  bool ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override;
+
+  bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override;
+
+  uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind,
+                                               uint32_t num) override;
+
+private:
+  bool ReadAllRegisterValuesBytes();
+
+  uint32_t m_reg_values[EZH_NUM_REGS] = {};
+  bool m_reg_values_valid = false;
+};
+
+#endif // liblldb_RegisterContextEZH_h_
diff --git a/lldb/source/Plugins/Process/EZH/ThreadEZH.cpp b/lldb/source/Plugins/Process/EZH/ThreadEZH.cpp
new file mode 100644
index 0000000000000..72e1e70039c72
--- /dev/null
+++ b/lldb/source/Plugins/Process/EZH/ThreadEZH.cpp
@@ -0,0 +1,53 @@
+//===-- ThreadEZH.cpp -----------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "ThreadEZH.h"
+#include "RegisterContextEZH.h"
+
+#include "lldb/Target/StackFrame.h"
+#include "lldb/Target/StopInfo.h"
+#include "lldb/Core/Debugger.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+ThreadEZH::ThreadEZH(Process &process, tid_t tid)
+    : ThreadGDBRemote(process, tid) {}
+
+RegisterContextSP ThreadEZH::GetRegisterContext() {
+  if (!m_reg_context_sp)
+    m_reg_context_sp = CreateRegisterContextForFrame(nullptr);
+  return m_reg_context_sp;
+}
+
+RegisterContextSP ThreadEZH::CreateRegisterContextForFrame(StackFrame *frame) {
+  uint32_t concrete_frame_idx = 0;
+  if (frame)
+    concrete_frame_idx = frame->GetConcreteFrameIndex();
+  return std::make_shared<RegisterContextEZH>(*this, concrete_frame_idx);
+}
+
+bool ThreadEZH::CalculateStopInfo() {
+
+  if (m_stop_info_sp)
+    return true;
+
+  // Set EZH's stop reason cleanly to Signal 2 (SIGINT) representing a debugger interrupt halt!
+  m_stop_info_sp = lldb_private::StopInfo::CreateStopReasonWithSignal(*this, 2);
+  SetStopInfo(m_stop_info_sp);
+  return true;
+}
+
+void ThreadEZH::RefreshStateAfterStop() {
+  // 1. Call base class to invalidate register context
+  ThreadGDBRemote::RefreshStateAfterStop();
+  if (m_reg_context_sp)
+    m_reg_context_sp->InvalidateAllRegisters();
+  // 2. Forcefully clear cached stack frames so UnwindLLDB re-fetches them using fresh JTAG memory reads!
+  ClearStackFrames();
+}
diff --git a/lldb/source/Plugins/Process/EZH/ThreadEZH.h b/lldb/source/Plugins/Process/EZH/ThreadEZH.h
new file mode 100644
index 0000000000000..ead7018aa3dec
--- /dev/null
+++ b/lldb/source/Plugins/Process/EZH/ThreadEZH.h
@@ -0,0 +1,31 @@
+//===-- ThreadEZH.h ---------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_ThreadEZH_h_
+#define liblldb_ThreadEZH_h_
+
+#include "../gdb-remote/ThreadGDBRemote.h"
+#include "lldb/lldb-private.h"
+
+class ThreadEZH : public lldb_private::process_gdb_remote::ThreadGDBRemote {
+public:
+  ThreadEZH(lldb_private::Process &process, lldb::tid_t tid);
+
+  ~ThreadEZH() override = default;
+
+  lldb::RegisterContextSP GetRegisterContext() override;
+
+  lldb::RegisterContextSP
+  CreateRegisterContextForFrame(lldb_private::StackFrame *frame) override;
+
+  bool CalculateStopInfo() override;
+
+  void RefreshStateAfterStop() override;
+};
+
+#endif // liblldb_ThreadEZH_h_
diff --git a/lldb/source/Utility/ArchSpec.cpp b/lldb/source/Utility/ArchSpec.cpp
index 6eecf4f1b0995..58edf1102c9d5 100644
--- a/lldb/source/Utility/ArchSpec.cpp
+++ b/lldb/source/Utility/ArchSpec.cpp
@@ -254,6 +254,8 @@ static constexpr const CoreDefinition g_core_definitions[] = {
 
     {eByteOrderLittle, 4, 1, 4, llvm::Triple::wasm32, ArchSpec::eCore_wasm32,
      "wasm32"},
+    {eByteOrderLittle, 4, 4, 4, llvm::Triple::ezh, ArchSpec::eCore_ezh,
+     "ezh"},
 };
 
 // Ensure that we have an entry in the g_core_definitions for each core. If you
@@ -421,6 +423,7 @@ static const ArchDefinitionEntry g_elf_arch_entries[] = {
     {ArchSpec::eCore_riscv64,         llvm::ELF::EM_RISCV,      ArchSpec::eRISCVSubType_riscv64}, // riscv64
     {ArchSpec::eCore_loongarch32,     llvm::ELF::EM_LOONGARCH,  ArchSpec::eLoongArchSubType_loongarch32}, // loongarch32
     {ArchSpec::eCore_loongarch64,     llvm::ELF::EM_LOONGARCH,  ArchSpec::eLoongArchSubType_loongarch64}, // loongarch64
+    {ArchSpec::eCore_ezh,             llvm::ELF::EM_EZH         }, // EZH
 };
 // clang-format on
 



More information about the cfe-commits mailing list