[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / PowerPC / setrnd.ll
blob40d99c878e88713590925b9e57acb58c42d4d14c
1 ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s \
2 ; RUN:   -verify-machineinstrs | FileCheck %s
3 ; RUN: llc -mcpu=pwr7 -mtriple=powerpc64le-unknown-linux-gnu < %s \
4 ; RUN:   -verify-machineinstrs | FileCheck -check-prefix=CHECK-PWR7 %s
6 define double @test_setrndi() {
7 entry:
8   %0 = tail call double @llvm.ppc.setrnd(i32 2)
9   ret double %0
11 ; CHECK-LABEL: @test_setrndi
12 ; CHECK:      # %bb.0:
13 ; CHECK-DAG:   mffs 1 
14 ; CHECK-DAG:   mtfsb0 31
15 ; CHECK-DAG:   mtfsb1 30
16 ; CHECK:       blr
19 define double @test_setrnd(i32 signext %x) {
20 entry:
21   %0 = tail call double @llvm.ppc.setrnd(i32 %x)
22   ret double %0
24 ; CHECK-LABEL: @test_setrnd
25 ; CHECK:      # %bb.0:
26 ; CHECK-DAG:   mffs 1 
27 ; CHECK-DAG:   mffprd [[REG1:[0-9]+]], 1 
28 ; CHECK-DAG:   rldimi [[REG1]], 3, 0, 62
29 ; CHECK-DAG:   mtfprd [[REG2:[0-9]+]], [[REG1]]
30 ; CHECK-DAG:   mtfsf 255, [[REG2]] 
31 ; CHECK:       blr
33 ; CHECK-PWR7-LABEL: @test_setrnd
34 ; CHECK-PWR7:      # %bb.0:
35 ; CHECK-PWR7-DAG:   mffs 1 
36 ; CHECK-PWR7-DAG:   stfd 1, -8(1) 
37 ; CHECK-PWR7-DAG:   ld [[REG1:[0-9]+]], -8(1) 
38 ; CHECK-PWR7-DAG:   rldimi [[REG1]], 3, 0, 62
39 ; CHECK-PWR7-DAG:   std [[REG1]], -16(1)
40 ; CHECK-PWR7-DAG:   lfd [[REG2:[0-9]+]], -16(1)
41 ; CHECK-PWR7-DAG:   mtfsf 255, [[REG2]] 
42 ; CHECK-PWR7:       blr
45 declare double @llvm.ppc.setrnd(i32)