xref: /llvm-project/llvm/test/CodeGen/PowerPC/kernel-fp-round.ll (revision fae05692a36f9ebbd201d93c2a6b0f927564d7e6)
168ef0b6aSKai Luo; RUN: llc -simplify-mir -verify-machineinstrs -stop-after=finalize-isel \
268ef0b6aSKai Luo; RUN:   -mtriple=powerpc64le-unknown-unknown -mattr=-vsx < %s | FileCheck %s
3b7d5229dSKai Luo; RUN: llc -simplify-mir -verify-machineinstrs -stop-after=finalize-isel \
4b7d5229dSKai Luo; RUN:   -mtriple=powerpc-unknown-unknown -mcpu=pwr6 -mattr=-vsx < %s | \
5b7d5229dSKai Luo; RUN:   FileCheck --check-prefix=CHECK-P6 %s
6b7d5229dSKai Luo; RUN: llc -simplify-mir -verify-machineinstrs -stop-after=finalize-isel \
7b7d5229dSKai Luo; RUN:   -mtriple=powerpc64-unknown-unknown -mcpu=pwr6 -mattr=-vsx < %s | \
8b7d5229dSKai Luo; RUN:   FileCheck --check-prefix=CHECK-P6-64 %s
968ef0b6aSKai Luo
1068ef0b6aSKai Luodefine float @test(float %a) {
1168ef0b6aSKai Luo; CHECK:        stack:
1268ef0b6aSKai Luo; CHECK-NEXT:   - { id: 0, size: 4, alignment: 4 }
1313edcd69SQiu Chaofan; CHECK:        %2:f8rc = nofpexcept FCTIWZ killed %1, implicit $rm
1468ef0b6aSKai Luo; CHECK:        STFIWX killed %2, $zero8, %3
15*fae05692SMatt Arsenault; CHECK-NEXT:   %4:f8rc = LFIWAX $zero8, %3 :: (load (s32) from %stack.0)
16a5b7b8ccSQiu Chaofan; CHECK-NEXT:   %5:f4rc = nofpexcept FCFIDS killed %4, implicit $rm
17b7d5229dSKai Luo; CHECK-NEXT:   $f1 = COPY %5
18b7d5229dSKai Luo; CHECK-NEXT:   BLR8 implicit $lr8, implicit $rm, implicit $f1
19b7d5229dSKai Luo
20b7d5229dSKai Luo; CHECK-P6:        stack:
21b7d5229dSKai Luo; CHECK-P6-NEXT:   - { id: 0, size: 4, alignment: 4 }
2213edcd69SQiu Chaofan; CHECK-P6:        %2:f8rc = nofpexcept FCTIWZ killed %1, implicit $rm
23b7d5229dSKai Luo; CHECK-P6:        STFIWX killed %2, $zero, %3
24*fae05692SMatt Arsenault; CHECK-P6-NEXT:   %4:f8rc = LFIWAX $zero, %3 :: (load (s32) from %stack.0)
25a5b7b8ccSQiu Chaofan; CHECK-P6-NEXT:   %5:f8rc = nofpexcept FCFID killed %4, implicit $rm
2613edcd69SQiu Chaofan; CHECK-P6-NEXT:   %6:f4rc = nofpexcept FRSP killed %5, implicit $rm
27b7d5229dSKai Luo; CHECK-P6-NEXT:   $f1 = COPY %6
28b7d5229dSKai Luo; CHECK-P6-NEXT:   BLR implicit $lr, implicit $rm, implicit $f1
29b7d5229dSKai Luo
30b7d5229dSKai Luo; CHECK-P6-64:        stack:
31b7d5229dSKai Luo; CHECK-P6-64-NEXT:   - { id: 0, size: 4, alignment: 4 }
3213edcd69SQiu Chaofan; CHECK-P6-64:        %2:f8rc = nofpexcept FCTIWZ killed %1, implicit $rm
33b7d5229dSKai Luo; CHECK-P6-64:        STFIWX killed %2, $zero8, %3
34*fae05692SMatt Arsenault; CHECK-P6-64-NEXT:   %4:f8rc = LFIWAX $zero8, %3 :: (load (s32) from %stack.0)
35a5b7b8ccSQiu Chaofan; CHECK-P6-64-NEXT:   %5:f8rc = nofpexcept FCFID killed %4, implicit $rm
3613edcd69SQiu Chaofan; CHECK-P6-64-NEXT:   %6:f4rc = nofpexcept FRSP killed %5, implicit $rm
37b7d5229dSKai Luo; CHECK-P6-64-NEXT:   $f1 = COPY %6
38b7d5229dSKai Luo; CHECK-P6-64-NEXT:   BLR8 implicit $lr8, implicit $rm, implicit $f1
39b7d5229dSKai Luo
4068ef0b6aSKai Luoentry:
4168ef0b6aSKai Luo  %b = fptosi float %a to i32
4268ef0b6aSKai Luo  %c = sitofp i32 %b to float
4368ef0b6aSKai Luo  ret float %c
4468ef0b6aSKai Luo}
45