mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
4af9b5466a
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
27 lines
765 B
LLVM
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)
|
|
|