mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
ARM: Fixup some tests using denormal-fp-math attribute
Don't use the deprecated, single mode form in tests. Also make sure to parse the attribute, in case of the deprecated form.
This commit is contained in:
parent
5193ea06e9
commit
b868163de4
@ -576,12 +576,22 @@ void ARMAsmPrinter::emitEndOfAsmFile(Module &M) {
|
||||
// to appear in the .ARM.attributes section in ELF.
|
||||
// Instead of subclassing the MCELFStreamer, we do the work here.
|
||||
|
||||
// Returns true if all functions have the same function attribute value.
|
||||
// It also returns true when the module has no functions.
|
||||
// Returns true if all functions have the same function attribute value.
|
||||
// It also returns true when the module has no functions.
|
||||
static bool checkFunctionsAttributeConsistency(const Module &M, StringRef Attr,
|
||||
StringRef Value) {
|
||||
return !any_of(M, [&](const Function &F) {
|
||||
return F.getFnAttribute(Attr).getValueAsString() != Value;
|
||||
});
|
||||
}
|
||||
// Returns true if all functions have the same denormal mode.
|
||||
// It also returns true when the module has no functions.
|
||||
static bool checkDenormalAttributeConsistency(const Module &M,
|
||||
StringRef Attr,
|
||||
DenormalMode Value) {
|
||||
return !any_of(M, [&](const Function &F) {
|
||||
return F.getFnAttribute(Attr).getValueAsString() != Value;
|
||||
StringRef AttrVal = F.getFnAttribute(Attr).getValueAsString();
|
||||
return parseDenormalFPAttribute(AttrVal) != Value;
|
||||
});
|
||||
}
|
||||
|
||||
@ -642,15 +652,15 @@ void ARMAsmPrinter::emitAttributes() {
|
||||
}
|
||||
|
||||
// Set FP Denormals.
|
||||
if (checkFunctionsAttributeConsistency(*MMI->getModule(),
|
||||
"denormal-fp-math",
|
||||
"preserve-sign") ||
|
||||
if (checkDenormalAttributeConsistency(*MMI->getModule(),
|
||||
"denormal-fp-math",
|
||||
DenormalMode::getPreserveSign()) ||
|
||||
TM.Options.FPDenormalMode == FPDenormal::PreserveSign)
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_denormal,
|
||||
ARMBuildAttrs::PreserveFPSign);
|
||||
else if (checkFunctionsAttributeConsistency(*MMI->getModule(),
|
||||
"denormal-fp-math",
|
||||
"positive-zero") ||
|
||||
else if (checkDenormalAttributeConsistency(*MMI->getModule(),
|
||||
"denormal-fp-math",
|
||||
DenormalMode::getPositiveZero()) ||
|
||||
TM.Options.FPDenormalMode == FPDenormal::PositiveZero)
|
||||
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_denormal,
|
||||
ARMBuildAttrs::PositiveZero);
|
||||
|
@ -13,4 +13,4 @@ entry:
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
attributes #0 = { minsize norecurse nounwind optsize readnone "denormal-fp-math"="positive-zero"}
|
||||
attributes #0 = { minsize norecurse nounwind optsize readnone "denormal-fp-math"="positive-zero,positive-zero" }
|
||||
|
@ -13,4 +13,4 @@ entry:
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
attributes #0 = { minsize norecurse nounwind optsize readnone "denormal-fp-math"="preserve-sign"}
|
||||
attributes #0 = { minsize norecurse nounwind optsize readnone "denormal-fp-math"="preserve-sign,preserve-sign"}
|
||||
|
@ -2,7 +2,7 @@
|
||||
; as function attributes, which map on to build attributes ABI_FP_exceptions
|
||||
; ABI_FP_denormal. In the backend we therefore have a check to see if all
|
||||
; functions have consistent function attributes values. Here we check two
|
||||
; functions have inconsistent values, and that a default is returned.
|
||||
; functions have inconsistent values, and that a default is returned.
|
||||
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -enable-ipra | FileCheck %s
|
||||
@ -19,5 +19,5 @@ entry:
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
attributes #0 = { minsize norecurse nounwind optsize readnone "denormal-fp-math"="preserve-sign"}
|
||||
attributes #1 = { minsize norecurse nounwind optsize readnone "denormal-fp-math"="positive-zero"}
|
||||
attributes #0 = { minsize norecurse nounwind optsize readnone "denormal-fp-math"="preserve-sign,preserve-sign"}
|
||||
attributes #1 = { minsize norecurse nounwind optsize readnone "denormal-fp-math"="positive-zero,positive-zero"}
|
||||
|
@ -49,10 +49,10 @@ attributes #0 = { "bss-section"="my_bss.1" "data-section"="my_data.1" "rodata-se
|
||||
attributes #1 = { "data-section"="my_data.1" "rodata-section"="my_rodata.1" }
|
||||
attributes #2 = { "bss-section"="my_bss.2" "rodata-section"="my_rodata.1" }
|
||||
attributes #3 = { "bss-section"="my_bss.2" "data-section"="my_data.2" "rodata-section"="my_rodata.2" }
|
||||
attributes #4 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign" "disable-tail-calls"="false" "implicit-section-name"="my_text.1" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+dsp,+fp16,+neon,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
attributes #5 = { noinline "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign" "disable-tail-calls"="false" "implicit-section-name"="my_text.2" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+dsp,+fp16,+neon,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
attributes #6 = { "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+dsp,+fp16,+neon,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
attributes #7 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+dsp,+fp16,+neon,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
attributes #4 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign,preserve-sign" "disable-tail-calls"="false" "implicit-section-name"="my_text.1" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+dsp,+fp16,+neon,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
attributes #5 = { noinline "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign,preserve-sign" "disable-tail-calls"="false" "implicit-section-name"="my_text.2" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+dsp,+fp16,+neon,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
attributes #6 = { "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign,preserve-sign" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+dsp,+fp16,+neon,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
attributes #7 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign,preserve-sign" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a9" "target-features"="+dsp,+fp16,+neon,+vfp3" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
|
||||
!llvm.module.flags = !{!0, !1, !2, !3}
|
||||
|
||||
|
@ -43,4 +43,4 @@ land.end: ; preds = %land.rhs, %entry
|
||||
ret void
|
||||
}
|
||||
|
||||
attributes #0 = { noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m4" "target-features"="+armv7e-m,+dsp,+fp16,+hwdiv,+thumb-mode,+vfp2sp,+vfp3d16sp,+vfp4d16sp,-aes,-crc,-crypto,-dotprod,-fp16fml,-fullfp16,-hwdiv-arm,-lob,-mve,-mve.fp,-ras,-sb,-sha2" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
attributes #0 = { noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign,preserve-sign" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m4" "target-features"="+armv7e-m,+dsp,+fp16,+hwdiv,+thumb-mode,+vfp2sp,+vfp3d16sp,+vfp4d16sp,-aes,-crc,-crypto,-dotprod,-fp16fml,-fullfp16,-hwdiv-arm,-lob,-mve,-mve.fp,-ras,-sb,-sha2" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
||||
|
@ -146,5 +146,5 @@ define double @test_sqrt64_refined_ftz(double %a) #0 #1 #2 {
|
||||
}
|
||||
|
||||
attributes #0 = { "unsafe-fp-math" = "true" }
|
||||
attributes #1 = { "denormal-fp-math-f32" = "preserve-sign" }
|
||||
attributes #1 = { "denormal-fp-math-f32" = "preserve-sign,preserve-sign" }
|
||||
attributes #2 = { "reciprocal-estimates" = "rsqrtf:1,rsqrtd:1,sqrtf:1,sqrtd:1" }
|
||||
|
Loading…
x
Reference in New Issue
Block a user