blob: 224f5d5e5c54c2368cfe74ff435b0412e08829b1 [file] [log] [blame]
Chris Lattnerae37c2a2005-01-02 02:30:04 +00001; The register allocator can commute two-address instructions to avoid
2; insertion of register-register copies.
3
Chris Lattnerf2c7af22005-05-09 05:54:27 +00004; Make sure there are only 3 mov's for each testcase
Tanya Lattner33eefff2008-02-21 07:42:26 +00005; RUN: llvm-as < %s | llc -march=x86 -x86-asm-syntax=intel | \
Dan Gohman28beeea2007-08-15 13:36:28 +00006; RUN: grep {\\\<mov\\\>} | count 6
Chris Lattnerae37c2a2005-01-02 02:30:04 +00007
Chris Lattner837451b2005-07-20 03:56:48 +00008
9target triple = "i686-pc-linux-gnu"
Tanya Lattner33eefff2008-02-21 07:42:26 +000010@G = external global i32 ; <i32*> [#uses=2]
Chris Lattner837451b2005-07-20 03:56:48 +000011
Tanya Lattner33eefff2008-02-21 07:42:26 +000012declare void @ext(i32)
Chris Lattnerae37c2a2005-01-02 02:30:04 +000013
Tanya Lattner33eefff2008-02-21 07:42:26 +000014define i32 @add_test(i32 %X, i32 %Y) {
15 %Z = add i32 %X, %Y ; <i32> [#uses=1]
16 store i32 %Z, i32* @G
17 ret i32 %X
Chris Lattnerae37c2a2005-01-02 02:30:04 +000018}
19
Tanya Lattner33eefff2008-02-21 07:42:26 +000020define i32 @xor_test(i32 %X, i32 %Y) {
21 %Z = xor i32 %X, %Y ; <i32> [#uses=1]
22 store i32 %Z, i32* @G
23 ret i32 %X
Chris Lattnerae37c2a2005-01-02 02:30:04 +000024}
Tanya Lattner33eefff2008-02-21 07:42:26 +000025