blob: 2558b16f3d3c13229df0c6d0266fb5d40866a272 [file] [log] [blame]
Saleem Abdulrasool72587352014-04-03 16:01:44 +00001; RUN: llc -mtriple=arm-eabi %s -o - | FileCheck %s
2; RUN: llc -mtriple=arm-eabi -mcpu=swift %s -o - | FileCheck %s
Evan Chenga5007fa2007-01-19 09:20:23 +00003
Stephen Linf799e3f2013-07-13 20:38:47 +00004; CHECK-LABEL: test1:
Jakob Stoklund Olesen73d96652012-04-16 20:56:42 +00005; CHECK: ldr {{.*, \[.*]}}, -r2
6; CHECK-NOT: ldr
7define i32 @test1(i32 %a, i32 %b, i32 %c) {
Tanya Lattnerf697c032008-02-17 20:02:20 +00008 %tmp1 = mul i32 %a, %b ; <i32> [#uses=2]
9 %tmp2 = inttoptr i32 %tmp1 to i32* ; <i32*> [#uses=1]
10 %tmp3 = load i32* %tmp2 ; <i32> [#uses=1]
11 %tmp4 = sub i32 %tmp1, %c ; <i32> [#uses=1]
12 %tmp5 = mul i32 %tmp4, %tmp3 ; <i32> [#uses=1]
13 ret i32 %tmp5
Evan Chenga5007fa2007-01-19 09:20:23 +000014}
Tanya Lattnerf697c032008-02-17 20:02:20 +000015
Stephen Linf799e3f2013-07-13 20:38:47 +000016; CHECK-LABEL: test2:
Jakob Stoklund Olesen73d96652012-04-16 20:56:42 +000017; CHECK: ldr {{.*, \[.*\]}}, #-16
18; CHECK-NOT: ldr
19define i32 @test2(i32 %a, i32 %b) {
20 %tmp1 = mul i32 %a, %b ; <i32> [#uses=2]
21 %tmp2 = inttoptr i32 %tmp1 to i32* ; <i32*> [#uses=1]
22 %tmp3 = load i32* %tmp2 ; <i32> [#uses=1]
23 %tmp4 = sub i32 %tmp1, 16 ; <i32> [#uses=1]
24 %tmp5 = mul i32 %tmp4, %tmp3 ; <i32> [#uses=1]
25 ret i32 %tmp5
26}