Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/test/CodeGen/SystemZ/fp-strict-alias.ll
Show All 24 Lines | ; CHECK: br %r14 | ||||
%sqrt2 = call float @llvm.sqrt.f32(float %f2) | %sqrt2 = call float @llvm.sqrt.f32(float %f2) | ||||
store float %sqrt1, float *%ptr1 | store float %sqrt1, float *%ptr1 | ||||
store float %sqrt2, float *%ptr2 | store float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
define void @f2(float %f1, float %f2, float *%ptr1, float *%ptr2) { | define void @f2(float %f1, float %f2, float *%ptr1, float *%ptr2) #0 { | ||||
; CHECK-LABEL: f2: | ; CHECK-LABEL: f2: | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: br %r14 | ; CHECK: br %r14 | ||||
%sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f1, | float %f1, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.ignore") | metadata !"fpexcept.ignore") #0 | ||||
%sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f2, | float %f2, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.ignore") | metadata !"fpexcept.ignore") #0 | ||||
store float %sqrt1, float *%ptr1 | store float %sqrt1, float *%ptr1 | ||||
store float %sqrt2, float *%ptr2 | store float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
define void @f3(float %f1, float %f2, float *%ptr1, float *%ptr2) { | define void @f3(float %f1, float %f2, float *%ptr1, float *%ptr2) #0 { | ||||
; CHECK-LABEL: f3: | ; CHECK-LABEL: f3: | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: br %r14 | ; CHECK: br %r14 | ||||
%sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f1, | float %f1, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.strict") | metadata !"fpexcept.strict") #0 | ||||
%sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f2, | float %f2, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.strict") | metadata !"fpexcept.strict") #0 | ||||
store float %sqrt1, float *%ptr1 | store float %sqrt1, float *%ptr1 | ||||
store float %sqrt2, float *%ptr2 | store float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
Show All 13 Lines | ; CHECK: br %r14 | ||||
%sqrt2 = call float @llvm.sqrt.f32(float %f2) | %sqrt2 = call float @llvm.sqrt.f32(float %f2) | ||||
store volatile float %sqrt1, float *%ptr1 | store volatile float %sqrt1, float *%ptr1 | ||||
store volatile float %sqrt2, float *%ptr2 | store volatile float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
define void @f5(float %f1, float %f2, float *%ptr1, float *%ptr2) { | define void @f5(float %f1, float %f2, float *%ptr1, float *%ptr2) #0 { | ||||
; CHECK-LABEL: f5: | ; CHECK-LABEL: f5: | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: br %r14 | ; CHECK: br %r14 | ||||
%sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f1, | float %f1, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.ignore") | metadata !"fpexcept.ignore") #0 | ||||
%sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f2, | float %f2, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.ignore") | metadata !"fpexcept.ignore") #0 | ||||
store volatile float %sqrt1, float *%ptr1 | store volatile float %sqrt1, float *%ptr1 | ||||
store volatile float %sqrt2, float *%ptr2 | store volatile float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
define void @f6(float %f1, float %f2, float *%ptr1, float *%ptr2) { | define void @f6(float %f1, float %f2, float *%ptr1, float *%ptr2) #0 { | ||||
; CHECK-LABEL: f6: | ; CHECK-LABEL: f6: | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: br %r14 | ; CHECK: br %r14 | ||||
%sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f1, | float %f1, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.strict") | metadata !"fpexcept.strict") #0 | ||||
%sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f2, | float %f2, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.strict") | metadata !"fpexcept.strict") #0 | ||||
store volatile float %sqrt1, float *%ptr1 | store volatile float %sqrt1, float *%ptr1 | ||||
store volatile float %sqrt2, float *%ptr2 | store volatile float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
Show All 13 Lines | ; CHECK: br %r14 | ||||
call void @llvm.s390.sfpc(i32 0) | call void @llvm.s390.sfpc(i32 0) | ||||
store float %sqrt1, float *%ptr1 | store float %sqrt1, float *%ptr1 | ||||
store float %sqrt2, float *%ptr2 | store float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
define void @f8(float %f1, float %f2, float *%ptr1, float *%ptr2) { | define void @f8(float %f1, float %f2, float *%ptr1, float *%ptr2) #0 { | ||||
; CHECK-LABEL: f8: | ; CHECK-LABEL: f8: | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: br %r14 | ; CHECK: br %r14 | ||||
%sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f1, | float %f1, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.ignore") | metadata !"fpexcept.ignore") #0 | ||||
%sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f2, | float %f2, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.ignore") | metadata !"fpexcept.ignore") #0 | ||||
call void @llvm.s390.sfpc(i32 0) | call void @llvm.s390.sfpc(i32 0) #0 | ||||
store float %sqrt1, float *%ptr1 | store float %sqrt1, float *%ptr1 | ||||
store float %sqrt2, float *%ptr2 | store float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
define void @f9(float %f1, float %f2, float *%ptr1, float *%ptr2) { | define void @f9(float %f1, float %f2, float *%ptr1, float *%ptr2) #0 { | ||||
; CHECK-LABEL: f9: | ; CHECK-LABEL: f9: | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: sqebr | ; CHECK: sqebr | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: ste | ; CHECK: ste | ||||
; CHECK: br %r14 | ; CHECK: br %r14 | ||||
%sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt1 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f1, | float %f1, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.strict") | metadata !"fpexcept.strict") #0 | ||||
%sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | %sqrt2 = call float @llvm.experimental.constrained.sqrt.f32( | ||||
float %f2, | float %f2, | ||||
metadata !"round.dynamic", | metadata !"round.dynamic", | ||||
metadata !"fpexcept.strict") | metadata !"fpexcept.strict") #0 | ||||
call void @llvm.s390.sfpc(i32 0) | call void @llvm.s390.sfpc(i32 0) #0 | ||||
store float %sqrt1, float *%ptr1 | store float %sqrt1, float *%ptr1 | ||||
store float %sqrt2, float *%ptr2 | store float %sqrt2, float *%ptr2 | ||||
ret void | ret void | ||||
} | } | ||||
attributes #0 = { strictfp } |