Jatin Bhateja | a251312 | 2017-09-08 09:15:36 +0000 | [diff] [blame] | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| 2 | |
| 3 | ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=haswell | FileCheck %s |
| 4 | |
| 5 | declare <4 x double> @llvm.minnum.v4f64(<4 x double> %x, <4 x double> %y) |
| 6 | declare <4 x double> @llvm.maxnum.v4f64(<4 x double> %x, <4 x double> %y) |
| 7 | |
| 8 | define <4 x double> @via_minnum(<4 x double> %x, <4 x double> %y) { |
| 9 | ; CHECK-LABEL: via_minnum: |
Francis Visoiu Mistrih | 25528d6 | 2017-12-04 17:18:51 +0000 | [diff] [blame] | 10 | ; CHECK: # %bb.0: |
Jatin Bhateja | a251312 | 2017-09-08 09:15:36 +0000 | [diff] [blame] | 11 | ; CHECK-NEXT: vminpd %ymm0, %ymm1, %ymm2 |
| 12 | ; CHECK-NEXT: vcmpunordpd %ymm0, %ymm0, %ymm0 |
| 13 | ; CHECK-NEXT: vblendvpd %ymm0, %ymm1, %ymm2, %ymm0 |
| 14 | ; CHECK-NEXT: retq |
| 15 | %z = call fast <4 x double> @llvm.minnum.v4f64(<4 x double> %x, <4 x double> %y) readnone |
| 16 | ret <4 x double> %z |
| 17 | } |
| 18 | |
| 19 | define <4 x double> @via_maxnum(<4 x double> %x, <4 x double> %y) { |
| 20 | ; CHECK-LABEL: via_maxnum: |
Francis Visoiu Mistrih | 25528d6 | 2017-12-04 17:18:51 +0000 | [diff] [blame] | 21 | ; CHECK: # %bb.0: |
Jatin Bhateja | a251312 | 2017-09-08 09:15:36 +0000 | [diff] [blame] | 22 | ; CHECK-NEXT: vmaxpd %ymm0, %ymm1, %ymm2 |
| 23 | ; CHECK-NEXT: vcmpunordpd %ymm0, %ymm0, %ymm0 |
| 24 | ; CHECK-NEXT: vblendvpd %ymm0, %ymm1, %ymm2, %ymm0 |
| 25 | ; CHECK-NEXT: retq |
| 26 | %z = call fast <4 x double> @llvm.maxnum.v4f64(<4 x double> %x, <4 x double> %y) readnone |
| 27 | ret <4 x double> %z |
| 28 | } |
| 29 | |
| 30 | define <4 x double> @via_fcmp(<4 x double> %x, <4 x double> %y) { |
| 31 | ; CHECK-LABEL: via_fcmp: |
Francis Visoiu Mistrih | 25528d6 | 2017-12-04 17:18:51 +0000 | [diff] [blame] | 32 | ; CHECK: # %bb.0: |
Jatin Bhateja | a251312 | 2017-09-08 09:15:36 +0000 | [diff] [blame] | 33 | ; CHECK-NEXT: vminpd %ymm0, %ymm1, %ymm0 |
| 34 | ; CHECK-NEXT: retq |
| 35 | %c = fcmp ule <4 x double> %x, %y |
| 36 | %z = select <4 x i1> %c, <4 x double> %x, <4 x double> %y |
| 37 | ret <4 x double> %z |
| 38 | } |
| 39 | |
| 40 | |