1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/test/CodeGen/PowerPC/rounding-rm-flag.ll
Kang Zhang 4af9b5466a [PowerPC] Fix RM operands for some instructions
Summary:
Some instructions have set the wrong [RM] flag, this patch is to fix it.

Instructions x(v|s)r(d|s)pi[zmp]? and fri[npzm] use fixed rounding
directions without referencing current rounding mode.

Also, the SETRNDi, SETRND, BCLRn, MTFSFI, MTFSB0, MTFSB1, MTFSFb,
MTFSFI, MTFSFI_rec, MTFSF, MTFSF_rec should also fix the RM flag.

Reviewed By: jsji

Differential Revision: https://reviews.llvm.org/D81360
2020-07-30 02:10:49 +00:00

27 lines
765 B
LLVM

; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
; RUN: -mcpu=pwr9 -stop-after=early-ifcvt < %s | FileCheck %s
define float @test_XSRDPI(float %f) {
entry:
%0 = tail call float @llvm.round.f32(float %f)
ret float %0
; CHECK-LABEL: name: test_XSRDPI
; CHECK-NOT: %2:vsfrc = nofpexcept XSRDPI killed %1, implicit $rm
; CHECK: %2:vsfrc = nofpexcept XSRDPI killed %1
}
define double @test_XSRDPIM(double %d) {
entry:
%0 = tail call double @llvm.floor.f64(double %d)
ret double %0
; CHECK-LABEL: name: test_XSRDPIM
; CHECK-NOT: %1:vsfrc = nofpexcept XSRDPIM %0, implicit $rm
; CHECK: %1:vsfrc = nofpexcept XSRDPIM %0
}
declare float @llvm.round.f32(float)
declare double @llvm.floor.f64(double)