2e8a65fc8cc1578d7dc82d80c496c8c37e4dfa26
[oota-llvm.git] / test / CodeGen / ARM / mulhi.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
2 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v6 &&
3 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v6 | grep smmul | wc -l | grep 1 &&
4 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep umull | wc -l | grep 1
5
6 int %smulhi(int %x, int %y) {
7         %tmp = cast int %x to ulong             ; <ulong> [#uses=1]
8         %tmp1 = cast int %y to ulong            ; <ulong> [#uses=1]
9         %tmp2 = mul ulong %tmp1, %tmp           ; <ulong> [#uses=1]
10         %tmp3 = shr ulong %tmp2, ubyte 32               ; <ulong> [#uses=1]
11         %tmp3 = cast ulong %tmp3 to int         ; <int> [#uses=1]
12         ret int %tmp3
13 }
14
15 int %umulhi(uint %x, uint %y) {
16         %tmp = cast uint %x to ulong            ; <ulong> [#uses=1]
17         %tmp1 = cast uint %y to ulong           ; <ulong> [#uses=1]
18         %tmp2 = mul ulong %tmp1, %tmp           ; <ulong> [#uses=1]
19         %tmp3 = shr ulong %tmp2, ubyte 32               ; <ulong> [#uses=1]
20         %tmp3 = cast ulong %tmp3 to int         ; <int> [#uses=1]
21         ret int %tmp3
22 }
23