[llvm] r303545 - [mips] Support micromips attribute passed by front-end
Simon Atanasyan via llvm-commits
llvm-commits at lists.llvm.org
Mon May 22 05:47:41 PDT 2017
Author: atanasyan
Date: Mon May 22 07:47:41 2017
New Revision: 303545
URL: http://llvm.org/viewvc/llvm-project?rev=303545&view=rev
Log:
[mips] Support micromips attribute passed by front-end
This patch adds handling of the `micromips` and `nomicromips` attributes
passed by front-end. The patch depends on D33363.
Differential revision: https://reviews.llvm.org/D33364
Added:
llvm/trunk/test/CodeGen/Mips/micromips-attr.ll
Modified:
llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
Modified: llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp?rev=303545&r1=303544&r2=303545&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp Mon May 22 07:47:41 2017
@@ -154,6 +154,11 @@ MipsTargetMachine::getSubtargetImpl(cons
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 @@ MipsTargetMachine::getSubtargetImpl(cons
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";
Added: llvm/trunk/test/CodeGen/Mips/micromips-attr.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/micromips-attr.ll?rev=303545&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/micromips-attr.ll (added)
+++ llvm/trunk/test/CodeGen/Mips/micromips-attr.ll Mon May 22 07:47:41 2017
@@ -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"
+}
More information about the llvm-commits
mailing list