[PATCH] D138100: [LoongArch] Implement assembler branches pseudo instructions
wanglei via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 18 00:54:45 PST 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rGbfa3551dd3ac: [LoongArch] Implement assembler branches pseudo instructions (authored by wangleiat).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D138100/new/
https://reviews.llvm.org/D138100
Files:
llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
llvm/test/MC/LoongArch/Macros/aliases-br.s
Index: llvm/test/MC/LoongArch/Macros/aliases-br.s
===================================================================
--- /dev/null
+++ llvm/test/MC/LoongArch/Macros/aliases-br.s
@@ -0,0 +1,18 @@
+# RUN: llvm-mc --triple=loongarch64 %s | FileCheck %s
+
+bgt $a1, $a0, 16
+# CHECK: blt $a0, $a1, 16
+bgtu $a1, $a0, 16
+# CHECK-NEXT: bltu $a0, $a1, 16
+ble $a1, $a0, 16
+# CHECK-NEXT: bge $a0, $a1, 16
+bleu $a1, $a0, 16
+# CHECK-NEXT: bgeu $a0, $a1, 16
+bltz $a0, 16
+# CHECK-NEXT: blt $a0, $zero, 16
+bgtz $a0, 16
+# CHECK-NEXT: blt $zero, $a0, 16
+blez $a0, 16
+# CHECK-NEXT: bge $zero, $a0, 16
+bgez $a0, 16
+# CHECK-NEXT: bge $a0, $zero, 16
Index: llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
===================================================================
--- llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
+++ llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
@@ -1348,6 +1348,28 @@
def : InstAlias<"ret", (JIRL R0, R1, 0)>;
def : InstAlias<"jr $rj", (JIRL R0, GPR:$rj, 0)>;
+// Branches implemented with alias.
+// Always output the canonical mnemonic for the pseudo branch instructions.
+// The GNU tools emit the canonical mnemonic for the branch pseudo instructions
+// as well (e.g. "bgt" will be recognised by the assembler but never printed by
+// objdump). Match this behaviour by setting a zero weight.
+def : InstAlias<"bgt $rj, $rd, $imm16",
+ (BLT GPR:$rd, GPR:$rj, simm16_lsl2_br:$imm16), 0>;
+def : InstAlias<"bgtu $rj, $rd, $imm16",
+ (BLTU GPR:$rd, GPR:$rj, simm16_lsl2_br:$imm16), 0>;
+def : InstAlias<"ble $rj, $rd, $imm16",
+ (BGE GPR:$rd, GPR:$rj, simm16_lsl2_br:$imm16), 0>;
+def : InstAlias<"bleu $rj, $rd, $imm16",
+ (BGEU GPR:$rd, GPR:$rj, simm16_lsl2_br:$imm16), 0>;
+def : InstAlias<"bltz $rd, $imm16",
+ (BLT GPR:$rd, R0, simm16_lsl2_br:$imm16), 0>;
+def : InstAlias<"bgtz $rj, $imm16",
+ (BLT R0, GPR:$rj, simm16_lsl2_br:$imm16), 0>;
+def : InstAlias<"blez $rj, $imm16",
+ (BGE R0, GPR:$rj, simm16_lsl2_br:$imm16), 0>;
+def : InstAlias<"bgez $rd, $imm16",
+ (BGE GPR:$rd, R0, simm16_lsl2_br:$imm16), 0>;
+
//===----------------------------------------------------------------------===//
// Basic Floating-Point Instructions
//===----------------------------------------------------------------------===//
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D138100.476376.patch
Type: text/x-patch
Size: 2420 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221118/dca00fef/attachment.bin>
More information about the llvm-commits
mailing list