Skip to content

Commit

Permalink
Fix errors in use of strictfp attribute.
Browse files Browse the repository at this point in the history
Errors spotted with use of: https://reviews.llvm.org/D68233
  • Loading branch information
kpneal committed May 29, 2020
1 parent a387882 commit 66d1899
Show file tree
Hide file tree
Showing 4 changed files with 180 additions and 171 deletions.
38 changes: 20 additions & 18 deletions llvm/test/CodeGen/PowerPC/fp-strict-f128.ll
Expand Up @@ -9,55 +9,55 @@ declare fp128 @llvm.experimental.constrained.fdiv.f128(fp128, fp128, metadata, m
declare fp128 @llvm.experimental.constrained.fma.f128(fp128, fp128, fp128, metadata, metadata)
declare fp128 @llvm.experimental.constrained.sqrt.f128(fp128, metadata, metadata)

define fp128 @fadd_f128(fp128 %f1, fp128 %f2) {
define fp128 @fadd_f128(fp128 %f1, fp128 %f2) #0 {
; CHECK-LABEL: fadd_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xsaddqp v2, v2, v3
; CHECK-NEXT: blr
%res = call fp128 @llvm.experimental.constrained.fadd.f128(
fp128 %f1, fp128 %f2,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret fp128 %res
}

define fp128 @fsub_f128(fp128 %f1, fp128 %f2) {
define fp128 @fsub_f128(fp128 %f1, fp128 %f2) #0 {
; CHECK-LABEL: fsub_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xssubqp v2, v2, v3
; CHECK-NEXT: blr
%res = call fp128 @llvm.experimental.constrained.fsub.f128(
fp128 %f1, fp128 %f2,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret fp128 %res
}

define fp128 @fmul_f128(fp128 %f1, fp128 %f2) {
define fp128 @fmul_f128(fp128 %f1, fp128 %f2) #0 {
; CHECK-LABEL: fmul_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xsmulqp v2, v2, v3
; CHECK-NEXT: blr
%res = call fp128 @llvm.experimental.constrained.fmul.f128(
fp128 %f1, fp128 %f2,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret fp128 %res
}

define fp128 @fdiv_f128(fp128 %f1, fp128 %f2) {
define fp128 @fdiv_f128(fp128 %f1, fp128 %f2) #0 {
; CHECK-LABEL: fdiv_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xsdivqp v2, v2, v3
; CHECK-NEXT: blr
%res = call fp128 @llvm.experimental.constrained.fdiv.f128(
fp128 %f1, fp128 %f2,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret fp128 %res
}

define fp128 @fmadd_f128(fp128 %f0, fp128 %f1, fp128 %f2) {
define fp128 @fmadd_f128(fp128 %f0, fp128 %f1, fp128 %f2) #0 {
; CHECK-LABEL: fmadd_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xsmaddqp v4, v2, v3
Expand All @@ -66,11 +66,11 @@ define fp128 @fmadd_f128(fp128 %f0, fp128 %f1, fp128 %f2) {
%res = call fp128 @llvm.experimental.constrained.fma.f128(
fp128 %f0, fp128 %f1, fp128 %f2,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret fp128 %res
}

define fp128 @fmsub_f128(fp128 %f0, fp128 %f1, fp128 %f2) {
define fp128 @fmsub_f128(fp128 %f0, fp128 %f1, fp128 %f2) #0 {
; CHECK-LABEL: fmsub_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xsmsubqp v4, v2, v3
Expand All @@ -80,11 +80,11 @@ define fp128 @fmsub_f128(fp128 %f0, fp128 %f1, fp128 %f2) {
%res = call fp128 @llvm.experimental.constrained.fma.f128(
fp128 %f0, fp128 %f1, fp128 %neg,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret fp128 %res
}

define fp128 @fnmadd_f128(fp128 %f0, fp128 %f1, fp128 %f2) {
define fp128 @fnmadd_f128(fp128 %f0, fp128 %f1, fp128 %f2) #0 {
; CHECK-LABEL: fnmadd_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xsnmaddqp v4, v2, v3
Expand All @@ -93,12 +93,12 @@ define fp128 @fnmadd_f128(fp128 %f0, fp128 %f1, fp128 %f2) {
%fma = call fp128 @llvm.experimental.constrained.fma.f128(
fp128 %f0, fp128 %f1, fp128 %f2,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
%res = fneg fp128 %fma
ret fp128 %res
}

define fp128 @fnmsub_f128(fp128 %f0, fp128 %f1, fp128 %f2) {
define fp128 @fnmsub_f128(fp128 %f0, fp128 %f1, fp128 %f2) #0 {
; CHECK-LABEL: fnmsub_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xsnmsubqp v4, v2, v3
Expand All @@ -108,20 +108,22 @@ define fp128 @fnmsub_f128(fp128 %f0, fp128 %f1, fp128 %f2) {
%fma = call fp128 @llvm.experimental.constrained.fma.f128(
fp128 %f0, fp128 %f1, fp128 %neg,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
%res = fneg fp128 %fma
ret fp128 %res
}


define fp128 @fsqrt_f128(fp128 %f1) {
define fp128 @fsqrt_f128(fp128 %f1) #0 {
; CHECK-LABEL: fsqrt_f128:
; CHECK: # %bb.0:
; CHECK-NEXT: xssqrtqp v2, v2
; CHECK-NEXT: blr
%res = call fp128 @llvm.experimental.constrained.sqrt.f128(
fp128 %f1,
metadata !"round.dynamic",
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret fp128 %res
}

attributes #0 = { strictfp }
18 changes: 10 additions & 8 deletions llvm/test/CodeGen/PowerPC/fp-strict-minmax.ll
Expand Up @@ -9,47 +9,49 @@ declare <2 x double> @llvm.experimental.constrained.maxnum.v2f64(<2 x double>, <
declare <4 x float> @llvm.experimental.constrained.minnum.v4f32(<4 x float>, <4 x float>, metadata)
declare <2 x double> @llvm.experimental.constrained.minnum.v2f64(<2 x double>, <2 x double>, metadata)

define <4 x float> @fmaxnum_v4f32(<4 x float> %vf0, <4 x float> %vf1) {
define <4 x float> @fmaxnum_v4f32(<4 x float> %vf0, <4 x float> %vf1) #0 {
; CHECK-LABEL: fmaxnum_v4f32:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmaxsp v2, v2, v3
; CHECK-NEXT: blr
%res = call <4 x float> @llvm.experimental.constrained.maxnum.v4f32(
<4 x float> %vf0, <4 x float> %vf1,
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret <4 x float> %res
}

define <2 x double> @fmaxnum_v2f64(<2 x double> %vf0, <2 x double> %vf1) {
define <2 x double> @fmaxnum_v2f64(<2 x double> %vf0, <2 x double> %vf1) #0 {
; CHECK-LABEL: fmaxnum_v2f64:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmaxdp v2, v2, v3
; CHECK-NEXT: blr
%res = call <2 x double> @llvm.experimental.constrained.maxnum.v2f64(
<2 x double> %vf0, <2 x double> %vf1,
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret <2 x double> %res
}


define <4 x float> @fminnum_v4f32(<4 x float> %vf0, <4 x float> %vf1) {
define <4 x float> @fminnum_v4f32(<4 x float> %vf0, <4 x float> %vf1) #0 {
; CHECK-LABEL: fminnum_v4f32:
; CHECK: # %bb.0:
; CHECK-NEXT: xvminsp v2, v2, v3
; CHECK-NEXT: blr
%res = call <4 x float> @llvm.experimental.constrained.minnum.v4f32(
<4 x float> %vf0, <4 x float> %vf1,
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret <4 x float> %res
}

define <2 x double> @fminnum_v2f64(<2 x double> %vf0, <2 x double> %vf1) {
define <2 x double> @fminnum_v2f64(<2 x double> %vf0, <2 x double> %vf1) #0 {
; CHECK-LABEL: fminnum_v2f64:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmindp v2, v2, v3
; CHECK-NEXT: blr
%res = call <2 x double> @llvm.experimental.constrained.minnum.v2f64(
<2 x double> %vf0, <2 x double> %vf1,
metadata !"fpexcept.strict")
metadata !"fpexcept.strict") #0
ret <2 x double> %res
}

attributes #0 = { strictfp }

0 comments on commit 66d1899

Please sign in to comment.