| Index: tests_lit/llvm2ice_tests/rmw.ll
|
| diff --git a/tests_lit/llvm2ice_tests/rmw.ll b/tests_lit/llvm2ice_tests/rmw.ll
|
| index 321f61221a3cd4df25baed80c13657213239b9b3..12d365daa2fd52b4763ea75628648833d37abff5 100644
|
| --- a/tests_lit/llvm2ice_tests/rmw.ll
|
| +++ b/tests_lit/llvm2ice_tests/rmw.ll
|
| @@ -102,3 +102,31 @@ entry:
|
| ; Look for something like: add DWORD PTR [eax+ecx*4+12],ecx
|
| ; CHECK-LABEL: rmw_add_i32_var_addropt
|
| ; CHECK: add DWORD PTR [e{{..}}+e{{..}}*4+0xc],e{{ax|bx|cx|dx|bp|di|si}}
|
| +
|
| +; Test for commutativity opportunities. This is the same as rmw_add_i32_var
|
| +; except with the "add" operands reversed.
|
| +define internal void @rmw_add_i32_var_comm(i32 %addr_arg, i32 %var) {
|
| +entry:
|
| + %addr = inttoptr i32 %addr_arg to i32*
|
| + %val = load i32, i32* %addr, align 1
|
| + %rmw = add i32 %var, %val
|
| + store i32 %rmw, i32* %addr, align 1
|
| + ret void
|
| +}
|
| +; Look for something like: add DWORD PTR [eax],ecx
|
| +; CHECK-LABEL: rmw_add_i32_var_comm
|
| +; CHECK: add DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}],e{{ax|bx|cx|dx|bp|di|si}}
|
| +
|
| +; Test that commutativity isn't triggered for a non-commutative arithmetic
|
| +; operator (sub). This is the same as rmw_add_i32_var_comm except with a
|
| +; "sub" operation.
|
| +define internal i32 @no_rmw_sub_i32_var(i32 %addr_arg, i32 %var) {
|
| +entry:
|
| + %addr = inttoptr i32 %addr_arg to i32*
|
| + %val = load i32, i32* %addr, align 1
|
| + %rmw = sub i32 %var, %val
|
| + store i32 %rmw, i32* %addr, align 1
|
| + ret i32 %rmw
|
| +}
|
| +; CHECK-LABEL: no_rmw_sub_i32_var
|
| +; CHECK: sub e{{ax|bx|cx|dx|bp|di|si}},DWORD PTR [e{{ax|bx|cx|dx|bp|di|si}}]
|
|
|