From ab37189f7eb05e427170f60902d1964cf9ee4c95 Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Thu, 11 Oct 2018 18:45:48 +0000 Subject: [WebAssembly] Revert rL344180, which was breaking expensive checks llvm-svn: 344280 --- .../Target/WebAssembly/WebAssemblyInstrMemory.td | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td') diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td index ccc331d1bf0..76ef1461d22 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td @@ -53,6 +53,8 @@ def regPlusGA : PatFrag<(ops node:$addr, node:$off), // We don't need a regPlusES because external symbols never have constant // offsets folded into them, so we can just use add. +let Defs = [ARGUMENTS] in { + // Defines atomic and non-atomic loads, regular and extending. multiclass WebAssemblyLoad { let mayLoad = 1 in @@ -71,6 +73,8 @@ defm LOAD_I64 : WebAssemblyLoad; defm LOAD_F32 : WebAssemblyLoad; defm LOAD_F64 : WebAssemblyLoad; +} // Defs = [ARGUMENTS] + // Select loads with no constant offset. class LoadPatNoOffset : Pat<(ty (kind I32:$addr)), (inst 0, 0, I32:$addr)>; @@ -140,6 +144,8 @@ def : LoadPatExternSymOffOnly; def : LoadPatExternSymOffOnly; def : LoadPatExternSymOffOnly; +let Defs = [ARGUMENTS] in { + // Extending load. defm LOAD8_S_I32 : WebAssemblyLoad; defm LOAD8_U_I32 : WebAssemblyLoad; @@ -152,6 +158,8 @@ defm LOAD16_U_I64 : WebAssemblyLoad; defm LOAD32_S_I64 : WebAssemblyLoad; defm LOAD32_U_I64 : WebAssemblyLoad; +} // Defs = [ARGUMENTS] + // Select extending loads with no constant offset. def : LoadPatNoOffset; def : LoadPatNoOffset; @@ -295,6 +303,9 @@ def : LoadPatExternSymOffOnly; def : LoadPatExternSymOffOnly; def : LoadPatExternSymOffOnly; + +let Defs = [ARGUMENTS] in { + // Defines atomic and non-atomic stores, regular and truncating multiclass WebAssemblyStore { let mayStore = 1 in @@ -312,6 +323,8 @@ defm STORE_I64 : WebAssemblyStore; defm STORE_F32 : WebAssemblyStore; defm STORE_F64 : WebAssemblyStore; +} // Defs = [ARGUMENTS] + // Select stores with no constant offset. class StorePatNoOffset : Pat<(node ty:$val, I32:$addr), (inst 0, 0, I32:$addr, ty:$val)>; @@ -376,6 +389,9 @@ def : StorePatExternSymOffOnly; def : StorePatExternSymOffOnly; def : StorePatExternSymOffOnly; + +let Defs = [ARGUMENTS] in { + // Truncating store. defm STORE8_I32 : WebAssemblyStore; defm STORE16_I32 : WebAssemblyStore; @@ -383,6 +399,8 @@ defm STORE8_I64 : WebAssemblyStore; defm STORE16_I64 : WebAssemblyStore; defm STORE32_I64 : WebAssemblyStore; +} // Defs = [ARGUMENTS] + // Select truncating stores with no constant offset. def : StorePatNoOffset; def : StorePatNoOffset; @@ -430,6 +448,8 @@ def : StorePatExternSymOffOnly; def : StorePatExternSymOffOnly; def : StorePatExternSymOffOnly; +let Defs = [ARGUMENTS] in { + // Current memory size. defm MEMORY_SIZE_I32 : I<(outs I32:$dst), (ins i32imm:$flags), (outs), (ins i32imm:$flags), @@ -473,6 +493,8 @@ defm GROW_MEMORY_I32 : I<(outs I32:$dst), (ins i32imm:$flags, I32:$delta), 0x40>, Requires<[HasAddr32]>; +} // Defs = [ARGUMENTS] + def : Pat<(int_wasm_current_memory), (CURRENT_MEMORY_I32 0)>; def : Pat<(int_wasm_grow_memory I32:$delta), -- cgit v1.2.3