From b2d324bc2366003920d1460e5fb4a2d9d71e44b9 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Thu, 10 Dec 2015 02:07:53 +0000 Subject: [PATCH] [WebAssembly] Fix legalization of f32->f64 EXTLOAD. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255202 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../WebAssembly/WebAssemblyISelLowering.cpp | 2 +- test/CodeGen/WebAssembly/legalize.ll | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp index 21a28e3b767..fae10947ec6 100644 --- a/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp +++ b/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp @@ -179,7 +179,7 @@ WebAssemblyTargetLowering::WebAssemblyTargetLowering( // - Floating-point extending loads. // - Floating-point truncating stores. // - i1 extending loads. - setLoadExtAction(ISD::EXTLOAD, MVT::f32, MVT::f64, Expand); + setLoadExtAction(ISD::EXTLOAD, MVT::f64, MVT::f32, Expand); setTruncStoreAction(MVT::f64, MVT::f32, Expand); for (auto T : MVT::integer_valuetypes()) for (auto Ext : {ISD::EXTLOAD, ISD::ZEXTLOAD, ISD::SEXTLOAD}) diff --git a/test/CodeGen/WebAssembly/legalize.ll b/test/CodeGen/WebAssembly/legalize.ll index 5279f4fa7a5..4dbf96d4d8a 100644 --- a/test/CodeGen/WebAssembly/legalize.ll +++ b/test/CodeGen/WebAssembly/legalize.ll @@ -31,3 +31,23 @@ define i64 @sext_in_reg_i32_i64(i64 %a) { %c = ashr i64 %b, 32 ret i64 %c } + +; CHECK-LABEL: fpext_f32_f64: +; CHECK: f32.load $push0=, 0($0){{$}} +; CHECK: f64.promote/f32 $push1=, $pop0 +; CHECK: return $pop1{{$}} +define double @fpext_f32_f64(float *%p) { + %v = load float, float* %p + %e = fpext float %v to double + ret double %e +} + +; CHECK-LABEL: fpconv_f64_f32: +; CHECK: f64.load $push0=, 0($0){{$}} +; CHECK: f32.demote/f64 $push1=, $pop0 +; CHECK: return $pop1{{$}} +define float @fpconv_f64_f32(double *%p) { + %v = load double, double* %p + %e = fptrunc double %v to float + ret float %e +} -- 2.34.1