Sanjay Patel | 9adb386 | 2018-04-12 22:14:23 +0000 | [diff] [blame] | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| 2 | ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le < %s | FileCheck %s |
| 3 | |
Sanjay Patel | 6c3af65 | 2018-04-15 16:43:48 +0000 | [diff] [blame] | 4 | ; When fpext is free, we should look through it for optimizations |
Sanjay Patel | 9adb386 | 2018-04-12 22:14:23 +0000 | [diff] [blame] | 5 | ; even if it has multiple uses and produce an 'fadd' here. |
| 6 | ; Y - (fpext(-X)) --> Y + fpext(X) |
| 7 | |
| 8 | define double @neg_ext_op1_extra_use(float %x, double %y) nounwind { |
| 9 | ; CHECK-LABEL: neg_ext_op1_extra_use: |
| 10 | ; CHECK: # %bb.0: |
Sanjay Patel | 6c3af65 | 2018-04-15 16:43:48 +0000 | [diff] [blame] | 11 | ; CHECK-NEXT: xsadddp 0, 2, 1 |
Stefan Pintilie | cb4f0c5 | 2018-07-04 18:54:25 +0000 | [diff] [blame] | 12 | ; CHECK-NEXT: fneg 1, 1 |
| 13 | ; CHECK-NEXT: xsdivdp 1, 1, 0 |
Sanjay Patel | 9adb386 | 2018-04-12 22:14:23 +0000 | [diff] [blame] | 14 | ; CHECK-NEXT: blr |
| 15 | %t1 = fsub float -0.0, %x |
| 16 | %t2 = fpext float %t1 to double |
| 17 | %t3 = fsub double %y, %t2 |
| 18 | %t4 = fdiv double %t2, %t3 |
| 19 | ret double %t4 |
| 20 | } |
| 21 | |