diff options
Diffstat (limited to 'test/Transforms/GCSE/2002-05-14-OperandSwap.ll')
-rw-r--r-- | test/Transforms/GCSE/2002-05-14-OperandSwap.ll | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/Transforms/GCSE/2002-05-14-OperandSwap.ll b/test/Transforms/GCSE/2002-05-14-OperandSwap.ll new file mode 100644 index 0000000..51183b8 --- /dev/null +++ b/test/Transforms/GCSE/2002-05-14-OperandSwap.ll @@ -0,0 +1,18 @@ +; This entire chain of computation should be optimized away, but +; wasn't because the two multiplies were not detected as being identical. +; +; RUN: llvm-upgrade < %s | llvm-as | opt -gcse -instcombine -dce | \ +; RUN: llvm-dis | not grep sub + +implementation ; Functions: + +uint "vnum_test4"(uint* %data) { + %idx1 = getelementptr uint* %data, uint 1 + %idx2 = getelementptr uint* %data, uint 3 + %reg1101 = load uint* %idx1 + %reg1111 = load uint* %idx2 + %reg109 = mul uint %reg1101, %reg1111 + %reg108 = mul uint %reg1111, %reg1101 + %reg121 = sub uint %reg108, %reg109 + ret uint %reg121 +} |