[LLVM][Alignment] Make functions using log of alignment explicit
[llvm-complete.git] / test / CodeGen / PowerPC / stfiwx.ll
blobf9f1afc5d19a95282eb59b119ee73062081eed3e
1 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu -mattr=stfiwx | FileCheck %s
2 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu -mattr=-stfiwx | FileCheck -check-prefix=CHECK-LS %s
4 define void @test1(float %a, i32* %b) nounwind {
5 ; CHECK-LABEL: @test1
6 ; CHECK-LS-LABEL: @test1
7         %tmp.2 = fptosi float %a to i32         ; <i32> [#uses=1]
8         store i32 %tmp.2, i32* %b
9         ret void
11 ; CHECK: stwu
12 ; CHECK-NOT: lwz
13 ; CHECK-NOT: stw
14 ; CHECK: stfiwx
15 ; CHECK: blr
17 ; CHECK-LS: lwz
18 ; CHECK-LS: stw
19 ; CHECK-LS-NOT: stfiwx
20 ; CHECK-LS: blr
23 define void @test2(float %a, i32* %b, i32 %i) nounwind {
24 ; CHECK-LABEL: @test2
25 ; CHECK-LS-LABEL: @test2
26         %tmp.2 = getelementptr i32, i32* %b, i32 1           ; <i32*> [#uses=1]
27         %tmp.5 = getelementptr i32, i32* %b, i32 %i          ; <i32*> [#uses=1]
28         %tmp.7 = fptosi float %a to i32         ; <i32> [#uses=3]
29         store i32 %tmp.7, i32* %tmp.5
30         store i32 %tmp.7, i32* %tmp.2
31         store i32 %tmp.7, i32* %b
32         ret void
34 ; CHECK: stwu
35 ; CHECK-NOT: lwz
36 ; CHECK-NOT: stw
37 ; CHECK: stfiwx
38 ; CHECK: blr
40 ; CHECK-LS: lwz
41 ; CHECK-LS: stw
42 ; CHECK-LS-NOT: stfiwx
43 ; CHECK-LS: blr