memcmp.ll revision 475cfe42c05aa84d599835ef44c3e7fe641f5b36
1475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner; Test that the memcmpOptimizer works correctly
2475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | not grep 'call.*memcmp' &&
3475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner; RUN: llvm-as < %s | opt -simplify-libcalls -disable-output
4475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner
5475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattnerdeclare int %memcmp(sbyte*,sbyte*,int)
6475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner%h = constant [2 x sbyte] c"h\00"
7475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner%hel = constant [4 x sbyte] c"hel\00"
8475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner%hello_u = constant [8 x sbyte] c"hello_u\00"
9475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner
10475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattnerimplementation
11475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner
12475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattnervoid %test(sbyte *%P, sbyte *%Q, int %N, int* %IP, bool *%BP) {
13475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  %A = call int %memcmp(sbyte *%P, sbyte* %P, int %N)
14475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  volatile store int %A, int* %IP
15475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  %B = call int %memcmp(sbyte *%P, sbyte* %Q, int 0)
16475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  volatile store int %B, int* %IP
17475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  %C = call int %memcmp(sbyte *%P, sbyte* %Q, int 1)
18475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  volatile store int %C, int* %IP
19475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  %D = call int %memcmp(sbyte *%P, sbyte* %Q, int 2)
20475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  %E = seteq int %D, 0
21475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  volatile store bool %E, bool* %BP
22475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner  ret void
23475cfe42c05aa84d599835ef44c3e7fe641f5b36Chris Lattner}
24