Bill Schmidt | 5c6cb81 | 2014-10-21 13:02:37 +0000 | [diff] [blame] | 1 | ; Test several VSX FMA mutation opportunities. The first one isn't a |
| 2 | ; reasonable transformation because the killed product register is the |
| 3 | ; same as the FMA target register. The second one is legal. The third |
| 4 | ; one doesn't fit the feeding-copy pattern. |
| 5 | |
Ehsan Amiri | a538b0f | 2016-08-03 18:17:35 +0000 | [diff] [blame] | 6 | ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -enable-unsafe-fp-math -mattr=+vsx -disable-ppc-vsx-fma-mutation=false | FileCheck %s |
Bill Schmidt | 5c6cb81 | 2014-10-21 13:02:37 +0000 | [diff] [blame] | 7 | target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64" |
| 8 | target triple = "powerpc64-unknown-linux-gnu" |
| 9 | |
| 10 | declare double @llvm.sqrt.f64(double) |
| 11 | |
| 12 | define double @foo3(double %a) nounwind { |
| 13 | %r = call double @llvm.sqrt.f64(double %a) |
| 14 | ret double %r |
| 15 | |
| 16 | ; CHECK: @foo3 |
Geoff Berry | fabedba | 2017-10-03 16:59:13 +0000 | [diff] [blame] | 17 | ; CHECK: xsnmsubadp [[REG:[0-9]+]], {{[0-9]+}}, [[REG]] |
Bill Schmidt | 5c6cb81 | 2014-10-21 13:02:37 +0000 | [diff] [blame] | 18 | ; CHECK: xsmaddmdp |
| 19 | ; CHECK: xsmaddadp |
| 20 | } |
| 21 | |