[PATCH] D17373: [mips][microMIPS] Prevent usage of OR16_MMR6 instruction when code for microMIPS is generated.

Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 4 09:39:20 PST 2016


This revision was automatically updated to reflect the committed changes.
Closed by commit rL262725: [mips][microMIPS] Prevent usage of OR16_MMR6 instruction when code for… (authored by zjovanovic).

Changed prior to commit:
  http://reviews.llvm.org/D17373?vs=49590&id=49837#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D17373

Files:
  llvm/trunk/lib/Target/Mips/MicroMips32r6InstrFormats.td
  llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td
  llvm/trunk/test/CodeGen/Mips/micromips-or16.ll

Index: llvm/trunk/lib/Target/Mips/MicroMips32r6InstrFormats.td
===================================================================
--- llvm/trunk/lib/Target/Mips/MicroMips32r6InstrFormats.td
+++ llvm/trunk/lib/Target/Mips/MicroMips32r6InstrFormats.td
@@ -751,7 +751,7 @@
   let Inst{3-0}   = 0b0000;
 }
 
-class POOL16C_OR16_XOR16_FM_MMR6<bits<4> op> {
+class POOL16C_OR16_XOR16_FM_MMR6<bits<4> op> : MicroMipsR6Inst16 {
   bits<3> rt;
   bits<3> rs;
 
Index: llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td
===================================================================
--- llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td
+++ llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td
@@ -830,7 +830,7 @@
 class SUBU16_MMR6_DESC : ArithRMM16<"subu16", GPRMM16Opnd, 0, II_SUBU, sub>,
       MMR6Arch<"sdbbp16">, MicroMipsR6Inst16;
 class XOR16_MMR6_DESC : LogicRMM16<"xor16", GPRMM16Opnd, II_XOR, xor>,
-      MMR6Arch<"sdbbp16">, MicroMipsR6Inst16;
+      MMR6Arch<"sdbbp16">;
 
 class LW_MMR6_DESC : MMR6Arch<"lw">, MipsR6Inst {
   dag OutOperandList = (outs GPR32Opnd:$rt);
Index: llvm/trunk/test/CodeGen/Mips/micromips-or16.ll
===================================================================
--- llvm/trunk/test/CodeGen/Mips/micromips-or16.ll
+++ llvm/trunk/test/CodeGen/Mips/micromips-or16.ll
@@ -1,18 +1,23 @@
 ; RUN: llc -march=mipsel -mcpu=mips32r2 -mattr=+micromips \
 ; RUN:   -relocation-model=pic -O3 < %s | FileCheck %s
+; RUN: llc -O0 -march=mips -mcpu=mips32r2 -mattr=+micromips \
+; RUN:   -asm-show-inst < %s | FileCheck %s
 
-define i32 @main() {
-entry:
-  %retval = alloca i32, align 4
-  %a = alloca i32, align 4
-  %b = alloca i32, align 4
-  %c = alloca i32, align 4
-  store i32 0, i32* %retval
-  %0 = load i32, i32* %b, align 4
-  %1 = load i32, i32* %c, align 4
-  %or = or i32 %0, %1
-  store i32 %or, i32* %a, align 4
-  ret i32 0
+; Branch instruction added to enable FastISel::selectOperator
+; to select OR instruction
+define i32 @f1(i32 signext %a, i32 signext %b) {
+; CHECK-LABEL: f1
+; CHECK-NOT: OR16_MMR6
+      %1 = or i32 %a, %b
+       br label %b1
+b1:
+       ret i32 %1
 }
 
+define i32 @f2(i32 signext %a, i32 signext %b) {
+entry:
+; CHECK-LABEL: f2
 ; CHECK: or16
+  %0 = or i32 %a, %b
+  ret i32 %0
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17373.49837.patch
Type: text/x-patch
Size: 2263 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160304/8191c2cc/attachment.bin>


More information about the llvm-commits mailing list