summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2019-07-30 23:56:30 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2019-07-30 23:56:30 +0000
commit9cf980d4a7ac7bda6f05807dd1e0456b8b2906ff (patch)
tree38497ac0b07bfbd3e5f811c6d2227f7ec3ce0a25 /llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
parentc1210c7e96fe8cabfa40b5cd155814d704fe9f3f (diff)
downloadbcm5719-llvm-9cf980d4a7ac7bda6f05807dd1e0456b8b2906ff.tar.gz
bcm5719-llvm-9cf980d4a7ac7bda6f05807dd1e0456b8b2906ff.zip
GlobalISel: Add G_ATOMICRMW_{FADD|FSUB}
llvm-svn: 367369
Diffstat (limited to 'llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp')
-rw-r--r--llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp b/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
index f6d811240f4..92d1c46d355 100644
--- a/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
+++ b/llvm/unittests/CodeGen/GlobalISel/MachineIRBuilderTest.cpp
@@ -278,3 +278,33 @@ TEST_F(GISelMITest, BuildMinMax) {
EXPECT_TRUE(CheckMachineFunction(*MF, CheckStr)) << *MF;
}
+
+TEST_F(GISelMITest, BuildAtomicRMW) {
+ if (!TM)
+ return;
+
+ LLT S64 = LLT::scalar(64);
+ LLT P0 = LLT::pointer(0, 64);
+ SmallVector<Register, 4> Copies;
+ collectCopies(Copies, MF);
+
+ MachineMemOperand *MMO =
+ MF->getMachineMemOperand(
+ MachinePointerInfo(),
+ MachineMemOperand::MOLoad | MachineMemOperand::MOStore,
+ 8, 8, AAMDNodes(), nullptr, SyncScope::System, AtomicOrdering::Unordered);
+
+ auto Ptr = B.buildUndef(P0);
+ B.buildAtomicRMWFAdd(S64, Ptr, Copies[0], *MMO);
+ B.buildAtomicRMWFSub(S64, Ptr, Copies[0], *MMO);
+
+ auto CheckStr = R"(
+ ; CHECK: [[COPY0:%[0-9]+]]:_(s64) = COPY $x0
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
+ ; CHECK: [[PTR:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF
+ ; CHECK: [[FADD:%[0-9]+]]:_(s64) = G_ATOMICRMW_FADD [[PTR]]:_(p0), [[COPY0]]:_ :: (load store unordered 8)
+ ; CHECK: [[FSUB:%[0-9]+]]:_(s64) = G_ATOMICRMW_FSUB [[PTR]]:_(p0), [[COPY0]]:_ :: (load store unordered 8)
+ )";
+
+ EXPECT_TRUE(CheckMachineFunction(*MF, CheckStr)) << *MF;
+}
OpenPOWER on IntegriCloud