Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/WebAssembly/f64.ll
Show First 20 Lines • Show All 211 Lines • ▼ Show 20 Lines | ; CHECK-NEXT: return $pop0 | ||||
ret double %a | ret double %a | ||||
} | } | ||||
declare double @llvm.minnum.f64(double, double) | declare double @llvm.minnum.f64(double, double) | ||||
define double @fminnum64_intrinsic(double %x, double %y) { | define double @fminnum64_intrinsic(double %x, double %y) { | ||||
; CHECK-LABEL: fminnum64_intrinsic: | ; CHECK-LABEL: fminnum64_intrinsic: | ||||
; CHECK: .functype fminnum64_intrinsic (f64, f64) -> (f64) | ; CHECK: .functype fminnum64_intrinsic (f64, f64) -> (f64) | ||||
; 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: f64.min $push0=, $pop2, $pop1 | ; CHECK-NEXT: local.get $push3=, 0 | ||||
; CHECK-NEXT: return $pop0 | ; CHECK-NEXT: local.get $push2=, 1 | ||||
; CHECK-NEXT: f64.lt $push0=, $pop3, $pop2 | |||||
; CHECK-NEXT: f64.select $push1=, $pop5, $pop4, $pop0 | |||||
; CHECK-NEXT: return $pop1 | |||||
%a = call nnan double @llvm.minnum.f64(double %x, double %y) | %a = call nnan double @llvm.minnum.f64(double %x, double %y) | ||||
ret double %a | ret double %a | ||||
} | } | ||||
define double @fminnum64_nsz_intrinsic(double %x, double %y) { | define double @fminnum64_nsz_intrinsic(double %x, double %y) { | ||||
; CHECK-LABEL: fminnum64_nsz_intrinsic: | ; CHECK-LABEL: fminnum64_nsz_intrinsic: | ||||
; CHECK: .functype fminnum64_nsz_intrinsic (f64, f64) -> (f64) | ; CHECK: .functype fminnum64_nsz_intrinsic (f64, f64) -> (f64) | ||||
; 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: f64.min $push0=, $pop2, $pop1 | ; CHECK-NEXT: f64.min $push0=, $pop2, $pop1 | ||||
; CHECK-NEXT: return $pop0 | ; CHECK-NEXT: return $pop0 | ||||
%a = call nnan nsz double @llvm.minnum.f64(double %x, double %y) | %a = call nnan nsz double @llvm.minnum.f64(double %x, double %y) | ||||
ret double %a | ret double %a | ||||
} | } | ||||
define double @fminnum64_zero_intrinsic(double %x) { | define double @fminnum64_zero_intrinsic(double %x) { | ||||
; CHECK-LABEL: fminnum64_zero_intrinsic: | ; CHECK-LABEL: fminnum64_zero_intrinsic: | ||||
; CHECK: .functype fminnum64_zero_intrinsic (f64) -> (f64) | ; CHECK: .functype fminnum64_zero_intrinsic (f64) -> (f64) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
; CHECK-NEXT: local.get $push2=, 0 | ; CHECK-NEXT: local.get $push5=, 0 | ||||
; CHECK-NEXT: f64.const $push0=, -0x0p0 | ; CHECK-NEXT: f64.const $push0=, -0x0p0 | ||||
; CHECK-NEXT: f64.min $push1=, $pop2, $pop0 | ; CHECK-NEXT: local.get $push4=, 0 | ||||
; CHECK-NEXT: return $pop1 | ; CHECK-NEXT: f64.const $push3=, -0x0p0 | ||||
; CHECK-NEXT: f64.lt $push1=, $pop4, $pop3 | |||||
; CHECK-NEXT: f64.select $push2=, $pop5, $pop0, $pop1 | |||||
; CHECK-NEXT: return $pop2 | |||||
%a = call nnan double @llvm.minnum.f64(double %x, double -0.0) | %a = call nnan double @llvm.minnum.f64(double %x, double -0.0) | ||||
ret double %a | ret double %a | ||||
} | } | ||||
define double @fminnum64_non_zero_intrinsic(double %x) { | define double @fminnum64_non_zero_intrinsic(double %x) { | ||||
; CHECK-LABEL: fminnum64_non_zero_intrinsic: | ; CHECK-LABEL: fminnum64_non_zero_intrinsic: | ||||
; CHECK: .functype fminnum64_non_zero_intrinsic (f64) -> (f64) | ; CHECK: .functype fminnum64_non_zero_intrinsic (f64) -> (f64) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
Show All 18 Lines | ; CHECK-NEXT: return $pop0 | ||||
ret double %a | ret double %a | ||||
} | } | ||||
declare double @llvm.maxnum.f64(double, double) | declare double @llvm.maxnum.f64(double, double) | ||||
define double@fmaxnum64_intrinsic(double %x, double %y) { | define double@fmaxnum64_intrinsic(double %x, double %y) { | ||||
; CHECK-LABEL: fmaxnum64_intrinsic: | ; CHECK-LABEL: fmaxnum64_intrinsic: | ||||
; CHECK: .functype fmaxnum64_intrinsic (f64, f64) -> (f64) | ; CHECK: .functype fmaxnum64_intrinsic (f64, f64) -> (f64) | ||||
; 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: f64.max $push0=, $pop2, $pop1 | ; CHECK-NEXT: local.get $push3=, 0 | ||||
; CHECK-NEXT: return $pop0 | ; CHECK-NEXT: local.get $push2=, 1 | ||||
; CHECK-NEXT: f64.gt $push0=, $pop3, $pop2 | |||||
; CHECK-NEXT: f64.select $push1=, $pop5, $pop4, $pop0 | |||||
; CHECK-NEXT: return $pop1 | |||||
%a = call nnan double @llvm.maxnum.f64(double %x, double %y) | %a = call nnan double @llvm.maxnum.f64(double %x, double %y) | ||||
ret double %a | ret double %a | ||||
} | } | ||||
define double@fmaxnum64_nsz_intrinsic(double %x, double %y) { | define double@fmaxnum64_nsz_intrinsic(double %x, double %y) { | ||||
; CHECK-LABEL: fmaxnum64_nsz_intrinsic: | ; CHECK-LABEL: fmaxnum64_nsz_intrinsic: | ||||
; CHECK: .functype fmaxnum64_nsz_intrinsic (f64, f64) -> (f64) | ; CHECK: .functype fmaxnum64_nsz_intrinsic (f64, f64) -> (f64) | ||||
; 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: f64.max $push0=, $pop2, $pop1 | ; CHECK-NEXT: f64.max $push0=, $pop2, $pop1 | ||||
; CHECK-NEXT: return $pop0 | ; CHECK-NEXT: return $pop0 | ||||
%a = call nnan nsz double @llvm.maxnum.f64(double %x, double %y) | %a = call nnan nsz double @llvm.maxnum.f64(double %x, double %y) | ||||
ret double %a | ret double %a | ||||
} | } | ||||
define double @fmaxnum64_zero_intrinsic(double %x) { | define double @fmaxnum64_zero_intrinsic(double %x) { | ||||
; CHECK-LABEL: fmaxnum64_zero_intrinsic: | ; CHECK-LABEL: fmaxnum64_zero_intrinsic: | ||||
; CHECK: .functype fmaxnum64_zero_intrinsic (f64) -> (f64) | ; CHECK: .functype fmaxnum64_zero_intrinsic (f64) -> (f64) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
; CHECK-NEXT: local.get $push2=, 0 | ; CHECK-NEXT: local.get $push5=, 0 | ||||
; CHECK-NEXT: f64.const $push0=, 0x0p0 | ; CHECK-NEXT: f64.const $push0=, 0x0p0 | ||||
; CHECK-NEXT: f64.max $push1=, $pop2, $pop0 | ; CHECK-NEXT: local.get $push4=, 0 | ||||
; CHECK-NEXT: return $pop1 | ; CHECK-NEXT: f64.const $push3=, 0x0p0 | ||||
; CHECK-NEXT: f64.gt $push1=, $pop4, $pop3 | |||||
; CHECK-NEXT: f64.select $push2=, $pop5, $pop0, $pop1 | |||||
; CHECK-NEXT: return $pop2 | |||||
%a = call nnan double @llvm.maxnum.f64(double %x, double 0.0) | %a = call nnan double @llvm.maxnum.f64(double %x, double 0.0) | ||||
ret double %a | ret double %a | ||||
} | } | ||||
define double @fmaxnum64_non_zero_intrinsic(double %x) { | define double @fmaxnum64_non_zero_intrinsic(double %x) { | ||||
; CHECK-LABEL: fmaxnum64_non_zero_intrinsic: | ; CHECK-LABEL: fmaxnum64_non_zero_intrinsic: | ||||
; CHECK: .functype fmaxnum64_non_zero_intrinsic (f64) -> (f64) | ; CHECK: .functype fmaxnum64_non_zero_intrinsic (f64) -> (f64) | ||||
; CHECK-NEXT: # %bb.0: | ; CHECK-NEXT: # %bb.0: | ||||
Show All 20 Lines |