[PATCH] D33364: [mips] Support micromips attribute passed by front-end

Simon Atanasyan via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon May 22 05:47:53 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL303545: [mips] Support micromips attribute passed by front-end (authored by atanasyan).

Changed prior to commit:
  https://reviews.llvm.org/D33364?vs=99590&id=99747#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D33364

Files:
  llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
  llvm/trunk/test/CodeGen/Mips/micromips-attr.ll


Index: llvm/trunk/test/CodeGen/Mips/micromips-attr.ll
===================================================================
--- llvm/trunk/test/CodeGen/Mips/micromips-attr.ll
+++ llvm/trunk/test/CodeGen/Mips/micromips-attr.ll
@@ -0,0 +1,39 @@
+; RUN: llc -march=mips -mcpu=mips32 --mattr=-micromips < %s | FileCheck %s 
+
+define void @foo() #0 {
+entry:
+  ret void
+}
+; CHECK:        .set    micromips
+; CHECK-NEXT:   .set    nomips16
+; CHECK-NEXT:   .ent    foo
+; CHECK-NEXT: foo:
+
+define void @bar() #1 {
+entry:
+  ret void
+}
+; CHECK:        .set    nomicromips
+; CHECK-NEXT:   .set    nomips16
+; CHECK-NEXT:   .ent    bar
+; CHECK-NEXT: bar:
+
+attributes #0 = {
+  nounwind "micromips"
+  "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false"
+  "less-precise-fpmad"="false" "no-frame-pointer-elim"="false"
+  "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false"
+  "no-signed-zeros-fp-math"="false" "no-trapping-math"="false"
+  "stack-protector-buffer-size"="8" "unsafe-fp-math"="false"
+  "use-soft-float"="false"
+}
+
+attributes #1 = {
+  nounwind
+  "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false"
+  "less-precise-fpmad"="false" "no-frame-pointer-elim"="false"
+  "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false"
+  "no-signed-zeros-fp-math"="false" "no-trapping-math"="false"
+  "stack-protector-buffer-size"="8" "unsafe-fp-math"="false"
+  "use-soft-float"="false"
+}
Index: llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
===================================================================
--- llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
+++ llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
@@ -154,6 +154,11 @@
   bool hasNoMips16Attr =
       !F.getFnAttribute("nomips16").hasAttribute(Attribute::None);
 
+  bool HasMicroMipsAttr =
+      !F.getFnAttribute("micromips").hasAttribute(Attribute::None);
+  bool HasNoMicroMipsAttr =
+      !F.getFnAttribute("nomicromips").hasAttribute(Attribute::None);
+
   // FIXME: This is related to the code below to reset the target options,
   // we need to know whether or not the soft float flag is set on the
   // function, so we can enable it as a subtarget feature.
@@ -165,6 +170,10 @@
     FS += FS.empty() ? "+mips16" : ",+mips16";
   else if (hasNoMips16Attr)
     FS += FS.empty() ? "-mips16" : ",-mips16";
+  if (HasMicroMipsAttr)
+    FS += FS.empty() ? "+micromips" : ",+micromips";
+  else if (HasNoMicroMipsAttr)
+    FS += FS.empty() ? "-micromips" : ",-micromips";
   if (softFloat)
     FS += FS.empty() ? "+soft-float" : ",+soft-float";
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33364.99747.patch
Type: text/x-patch
Size: 2635 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170522/3a4034cd/attachment-0001.bin>


More information about the cfe-commits mailing list