1; Test v2f64 rounding. 2; 3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s 4 5declare <2 x double> @llvm.rint.v2f64(<2 x double>) 6declare <2 x double> @llvm.nearbyint.v2f64(<2 x double>) 7declare <2 x double> @llvm.floor.v2f64(<2 x double>) 8declare <2 x double> @llvm.ceil.v2f64(<2 x double>) 9declare <2 x double> @llvm.trunc.v2f64(<2 x double>) 10declare <2 x double> @llvm.round.v2f64(<2 x double>) 11 12define <2 x double> @f1(<2 x double> %val) { 13; CHECK-LABEL: f1: 14; CHECK: vfidb %v24, %v24, 0, 0 15; CHECK: br %r14 16 %res = call <2 x double> @llvm.rint.v2f64(<2 x double> %val) 17 ret <2 x double> %res 18} 19 20define <2 x double> @f2(<2 x double> %val) { 21; CHECK-LABEL: f2: 22; CHECK: vfidb %v24, %v24, 4, 0 23; CHECK: br %r14 24 %res = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %val) 25 ret <2 x double> %res 26} 27 28define <2 x double> @f3(<2 x double> %val) { 29; CHECK-LABEL: f3: 30; CHECK: vfidb %v24, %v24, 4, 7 31; CHECK: br %r14 32 %res = call <2 x double> @llvm.floor.v2f64(<2 x double> %val) 33 ret <2 x double> %res 34} 35 36define <2 x double> @f4(<2 x double> %val) { 37; CHECK-LABEL: f4: 38; CHECK: vfidb %v24, %v24, 4, 6 39; CHECK: br %r14 40 %res = call <2 x double> @llvm.ceil.v2f64(<2 x double> %val) 41 ret <2 x double> %res 42} 43 44define <2 x double> @f5(<2 x double> %val) { 45; CHECK-LABEL: f5: 46; CHECK: vfidb %v24, %v24, 4, 5 47; CHECK: br %r14 48 %res = call <2 x double> @llvm.trunc.v2f64(<2 x double> %val) 49 ret <2 x double> %res 50} 51 52define <2 x double> @f6(<2 x double> %val) { 53; CHECK-LABEL: f6: 54; CHECK: vfidb %v24, %v24, 4, 1 55; CHECK: br %r14 56 %res = call <2 x double> @llvm.round.v2f64(<2 x double> %val) 57 ret <2 x double> %res 58} 59