Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/WebAssembly/f32.ll
Show First 20 Lines • Show All 211 Lines • ▼ Show 20 Lines | ; CHECK-NEXT: return $pop0 | ||||
ret float %a | ret float %a | ||||
} | } | ||||
declare float @llvm.minnum.f32(float, float) | declare float @llvm.minnum.f32(float, float) | ||||
define float @fminnum32_intrinsic(float %x, float %y) { | define float @fminnum32_intrinsic(float %x, float %y) { | ||||
; CHECK-LABEL: fminnum32_intrinsic: | ; CHECK-LABEL: fminnum32_intrinsic: | ||||
; CHECK: .functype fminnum32_intrinsic (f32, f32) -> (f32) | ; CHECK: .functype fminnum32_intrinsic (f32, f32) -> (f32) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
; CHECK-NEXT: local.get $push2=, 0 | ; CHECK-NEXT: local.get $push5=, 0 | ||||
; CHECK-NEXT: local.get $push1=, 1 | ; CHECK-NEXT: local.get $push4=, 1 | ||||
; CHECK-NEXT: f32.min $push0=, $pop2, $pop1 | ; CHECK-NEXT: local.get $push3=, 0 | ||||
; CHECK-NEXT: return $pop0 | ; CHECK-NEXT: local.get $push2=, 1 | ||||
; CHECK-NEXT: f32.lt $push0=, $pop3, $pop2 | |||||
; CHECK-NEXT: f32.select $push1=, $pop5, $pop4, $pop0 | |||||
; CHECK-NEXT: return $pop1 | |||||
%a = call nnan float @llvm.minnum.f32(float %x, float %y) | %a = call nnan float @llvm.minnum.f32(float %x, float %y) | ||||
ret float %a | ret float %a | ||||
} | } | ||||
define float @fminnum32_non_zero_intrinsic(float %x) { | define float @fminnum32_non_zero_intrinsic(float %x) { | ||||
; CHECK-LABEL: fminnum32_non_zero_intrinsic: | ; CHECK-LABEL: fminnum32_non_zero_intrinsic: | ||||
; CHECK: .functype fminnum32_non_zero_intrinsic (f32) -> (f32) | ; CHECK: .functype fminnum32_non_zero_intrinsic (f32) -> (f32) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
Show All 30 Lines | ; CHECK-NEXT: return $pop0 | ||||
ret float %a | ret float %a | ||||
} | } | ||||
declare float @llvm.maxnum.f32(float, float) | declare float @llvm.maxnum.f32(float, float) | ||||
define float @fmaxnum32_intrinsic(float %x, float %y) { | define float @fmaxnum32_intrinsic(float %x, float %y) { | ||||
; CHECK-LABEL: fmaxnum32_intrinsic: | ; CHECK-LABEL: fmaxnum32_intrinsic: | ||||
; CHECK: .functype fmaxnum32_intrinsic (f32, f32) -> (f32) | ; CHECK: .functype fmaxnum32_intrinsic (f32, f32) -> (f32) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
; CHECK-NEXT: local.get $push2=, 0 | ; CHECK-NEXT: local.get $push5=, 0 | ||||
; CHECK-NEXT: local.get $push1=, 1 | ; CHECK-NEXT: local.get $push4=, 1 | ||||
; CHECK-NEXT: f32.max $push0=, $pop2, $pop1 | ; CHECK-NEXT: local.get $push3=, 0 | ||||
; CHECK-NEXT: return $pop0 | ; CHECK-NEXT: local.get $push2=, 1 | ||||
; CHECK-NEXT: f32.gt $push0=, $pop3, $pop2 | |||||
; CHECK-NEXT: f32.select $push1=, $pop5, $pop4, $pop0 | |||||
; CHECK-NEXT: return $pop1 | |||||
%a = call nnan float @llvm.maxnum.f32(float %x, float %y) | %a = call nnan float @llvm.maxnum.f32(float %x, float %y) | ||||
ret float %a | ret float %a | ||||
} | } | ||||
define float @fmaxnum32_nsz_intrinsic(float %x, float %y) { | define float @fmaxnum32_nsz_intrinsic(float %x, float %y) { | ||||
; CHECK-LABEL: fmaxnum32_nsz_intrinsic: | ; CHECK-LABEL: fmaxnum32_nsz_intrinsic: | ||||
; CHECK: .functype fmaxnum32_nsz_intrinsic (f32, f32) -> (f32) | ; CHECK: .functype fmaxnum32_nsz_intrinsic (f32, f32) -> (f32) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
; CHECK-NEXT: local.get $push2=, 0 | ; CHECK-NEXT: local.get $push2=, 0 | ||||
; CHECK-NEXT: local.get $push1=, 1 | ; CHECK-NEXT: local.get $push1=, 1 | ||||
; CHECK-NEXT: f32.max $push0=, $pop2, $pop1 | ; CHECK-NEXT: f32.max $push0=, $pop2, $pop1 | ||||
; CHECK-NEXT: return $pop0 | ; CHECK-NEXT: return $pop0 | ||||
%a = call nnan nsz float @llvm.maxnum.f32(float %x, float %y) | %a = call nnan nsz float @llvm.maxnum.f32(float %x, float %y) | ||||
ret float %a | ret float %a | ||||
} | } | ||||
define float @fmaxnum32_zero_intrinsic(float %x) { | define float @fmaxnum32_zero_intrinsic(float %x) { | ||||
; CHECK-LABEL: fmaxnum32_zero_intrinsic: | ; CHECK-LABEL: fmaxnum32_zero_intrinsic: | ||||
; CHECK: .functype fmaxnum32_zero_intrinsic (f32) -> (f32) | ; CHECK: .functype fmaxnum32_zero_intrinsic (f32) -> (f32) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
; CHECK-NEXT: local.get $push2=, 0 | ; CHECK-NEXT: local.get $push5=, 0 | ||||
; CHECK-NEXT: f32.const $push0=, 0x0p0 | ; CHECK-NEXT: f32.const $push0=, 0x0p0 | ||||
; CHECK-NEXT: f32.max $push1=, $pop2, $pop0 | ; CHECK-NEXT: local.get $push4=, 0 | ||||
; CHECK-NEXT: return $pop1 | ; CHECK-NEXT: f32.const $push3=, 0x0p0 | ||||
; CHECK-NEXT: f32.gt $push1=, $pop4, $pop3 | |||||
; CHECK-NEXT: f32.select $push2=, $pop5, $pop0, $pop1 | |||||
; CHECK-NEXT: return $pop2 | |||||
%a = call nnan float @llvm.maxnum.f32(float %x, float 0.0) | %a = call nnan float @llvm.maxnum.f32(float %x, float 0.0) | ||||
ret float %a | ret float %a | ||||
} | } | ||||
define float @fmaxnum32_non_zero_intrinsic(float %x) { | define float @fmaxnum32_non_zero_intrinsic(float %x) { | ||||
; CHECK-LABEL: fmaxnum32_non_zero_intrinsic: | ; CHECK-LABEL: fmaxnum32_non_zero_intrinsic: | ||||
; CHECK: .functype fmaxnum32_non_zero_intrinsic (f32) -> (f32) | ; CHECK: .functype fmaxnum32_non_zero_intrinsic (f32) -> (f32) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
Show All 20 Lines |