@@ -72,8 +72,9 @@ defm LOAD16_U_I64 : WebAssemblyLoad<I64, "i64.load16_u", 0x33, []>;
7272defm LOAD32_S_I64 : WebAssemblyLoad<I64, "i64.load32_s", 0x34, []>;
7373defm LOAD32_U_I64 : WebAssemblyLoad<I64, "i64.load32_u", 0x35, []>;
7474
75- // Half Precision
76- defm LOAD_F16_F32 : WebAssemblyLoad<F32, "f32.load_f16", 0xfc30, [HasHalfPrecision]>;
75+ // Half-precision load.
76+ defm LOAD_F16_F32 :
77+ WebAssemblyLoad<F32, "f32.load_f16", 0xfc30, [HasHalfPrecision]>;
7778
7879// Pattern matching
7980
@@ -171,12 +172,18 @@ defm STORE8_I64 : WebAssemblyStore<I64, "i64.store8", 0x3c>;
171172defm STORE16_I64 : WebAssemblyStore<I64, "i64.store16", 0x3d>;
172173defm STORE32_I64 : WebAssemblyStore<I64, "i64.store32", 0x3e>;
173174
175+ // Half-precision store.
176+ defm STORE_F16_F32 :
177+ WebAssemblyStore<F32, "f32.store_f16", 0xfc31, [HasHalfPrecision]>;
178+
174179defm : StorePat<i32, truncstorei8, "STORE8_I32">;
175180defm : StorePat<i32, truncstorei16, "STORE16_I32">;
176181defm : StorePat<i64, truncstorei8, "STORE8_I64">;
177182defm : StorePat<i64, truncstorei16, "STORE16_I64">;
178183defm : StorePat<i64, truncstorei32, "STORE32_I64">;
179184
185+ defm : StorePat<f32, int_wasm_storef16_f32, "STORE_F16_F32">;
186+
180187multiclass MemoryOps<WebAssemblyRegClass rc, string B> {
181188// Current memory size.
182189defm MEMORY_SIZE_A#B : I<(outs rc:$dst), (ins i32imm:$flags),
0 commit comments