blob: 40d99c878e88713590925b9e57acb58c42d4d14c [file] [log] [blame]
Kang Zhang05f78b32019-03-29 08:45:24 +00001; 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
5
6define double @test_setrndi() {
7entry:
8 %0 = tail call double @llvm.ppc.setrnd(i32 2)
9 ret double %0
10
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
17}
18
19define double @test_setrnd(i32 signext %x) {
20entry:
21 %0 = tail call double @llvm.ppc.setrnd(i32 %x)
22 ret double %0
23
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
Jinsong Ji1ed7d212019-08-29 21:53:59 +000029; CHECK-DAG: mtfprd [[REG2:[0-9]+]], [[REG1]]
Kang Zhang05f78b32019-03-29 08:45:24 +000030; CHECK-DAG: mtfsf 255, [[REG2]]
31; CHECK: blr
32
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
43}
44
45declare double @llvm.ppc.setrnd(i32)
46