mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-01 08:23:21 +01:00
b3487aa334
This option has been disabled for a while, and it is going away so I can clean up the coalescer code. The tests that required physreg joining to be enabled were almost all of the form "tiny function with interference between arguments and return value". Such functions are usually inlined in the real world. The problem exposed by phys_subreg_coalesce-3.ll is real, but fairly rare. llvm-svn: 157027
66 lines
2.1 KiB
LLVM
66 lines
2.1 KiB
LLVM
; RUN: llc < %s -march=x86-64 -mattr=+avx -asm-verbose=false -enable-unsafe-fp-math -enable-no-nans-fp-math -promote-elements | FileCheck -check-prefix=UNSAFE %s
|
|
|
|
; UNSAFE: maxpd:
|
|
; UNSAFE: vmaxpd {{.+}}, %xmm
|
|
define <2 x double> @maxpd(<2 x double> %x, <2 x double> %y) {
|
|
%max_is_x = fcmp oge <2 x double> %x, %y
|
|
%max = select <2 x i1> %max_is_x, <2 x double> %x, <2 x double> %y
|
|
ret <2 x double> %max
|
|
}
|
|
|
|
; UNSAFE: minpd:
|
|
; UNSAFE: vminpd {{.+}}, %xmm
|
|
define <2 x double> @minpd(<2 x double> %x, <2 x double> %y) {
|
|
%min_is_x = fcmp ole <2 x double> %x, %y
|
|
%min = select <2 x i1> %min_is_x, <2 x double> %x, <2 x double> %y
|
|
ret <2 x double> %min
|
|
}
|
|
|
|
; UNSAFE: maxps:
|
|
; UNSAFE: vmaxps {{.+}}, %xmm
|
|
define <4 x float> @maxps(<4 x float> %x, <4 x float> %y) {
|
|
%max_is_x = fcmp oge <4 x float> %x, %y
|
|
%max = select <4 x i1> %max_is_x, <4 x float> %x, <4 x float> %y
|
|
ret <4 x float> %max
|
|
}
|
|
|
|
; UNSAFE: minps:
|
|
; UNSAFE: vminps {{.+}}, %xmm
|
|
define <4 x float> @minps(<4 x float> %x, <4 x float> %y) {
|
|
%min_is_x = fcmp ole <4 x float> %x, %y
|
|
%min = select <4 x i1> %min_is_x, <4 x float> %x, <4 x float> %y
|
|
ret <4 x float> %min
|
|
}
|
|
|
|
; UNSAFE: vmaxpd:
|
|
; UNSAFE: vmaxpd {{.+}}, %ymm
|
|
define <4 x double> @vmaxpd(<4 x double> %x, <4 x double> %y) {
|
|
%max_is_x = fcmp oge <4 x double> %x, %y
|
|
%max = select <4 x i1> %max_is_x, <4 x double> %x, <4 x double> %y
|
|
ret <4 x double> %max
|
|
}
|
|
|
|
; UNSAFE: vminpd:
|
|
; UNSAFE: vminpd {{.+}}, %ymm
|
|
define <4 x double> @vminpd(<4 x double> %x, <4 x double> %y) {
|
|
%min_is_x = fcmp ole <4 x double> %x, %y
|
|
%min = select <4 x i1> %min_is_x, <4 x double> %x, <4 x double> %y
|
|
ret <4 x double> %min
|
|
}
|
|
|
|
; UNSAFE: vmaxps:
|
|
; UNSAFE: vmaxps {{.+}}, %ymm
|
|
define <8 x float> @vmaxps(<8 x float> %x, <8 x float> %y) {
|
|
%max_is_x = fcmp oge <8 x float> %x, %y
|
|
%max = select <8 x i1> %max_is_x, <8 x float> %x, <8 x float> %y
|
|
ret <8 x float> %max
|
|
}
|
|
|
|
; UNSAFE: vminps:
|
|
; UNSAFE: vminps {{.+}}, %ymm
|
|
define <8 x float> @vminps(<8 x float> %x, <8 x float> %y) {
|
|
%min_is_x = fcmp ole <8 x float> %x, %y
|
|
%min = select <8 x i1> %min_is_x, <8 x float> %x, <8 x float> %y
|
|
ret <8 x float> %min
|
|
}
|