Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp =================================================================== --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -99,6 +99,10 @@ cl::desc("Number limit for gluing ld/st of memcpy."), cl::Hidden, cl::init(0)); +static cl::opt DisableStrictNodeMutatin("disable-strictnode-mutation", + cl::desc("Don't mutate strict-float node to a legalize node"), + cl::init(false), cl::Hidden); + static void NewSDValueDbgMsg(SDValue V, StringRef Msg, SelectionDAG *G) { LLVM_DEBUG(dbgs() << Msg; V.getNode()->dump(G);); } @@ -7746,6 +7750,9 @@ } SDNode* SelectionDAG::mutateStrictFPToFP(SDNode *Node) { + if (DisableStrictNodeMutatin) + return Node; + unsigned OrigOpc = Node->getOpcode(); unsigned NewOpc; switch (OrigOpc) { Index: llvm/test/CodeGen/SystemZ/fp-strict-add-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-add-01.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-add-01.ll @@ -1,8 +1,8 @@ ; Test 32-bit floating-point strict addition. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @foo() declare float @llvm.experimental.constrained.fadd.f32(float, float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-add-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-add-02.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-add-02.ll @@ -1,8 +1,8 @@ ; Test strict 64-bit floating-point addition. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -verify-machineinstrs | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -verify-machineinstrs -disable-strictnode-mutation | FileCheck %s declare double @foo() declare double @llvm.experimental.constrained.fadd.f64(double, double, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-add-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-add-03.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-add-03.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit floating-point addition. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fadd.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-add-04.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-add-04.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-add-04.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit floating-point addition on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fadd.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-alias.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-alias.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-alias.ll @@ -1,6 +1,6 @@ ; Verify that strict FP operations are not rescheduled ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.sqrt.f32(float, metadata, metadata) declare float @llvm.sqrt.f32(float) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-01.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-01.ll @@ -1,9 +1,9 @@ ; Test strict floating-point truncations. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s declare float @llvm.experimental.constrained.fptrunc.f32.f64(double, metadata, metadata) declare float @llvm.experimental.constrained.fptrunc.f32.f128(fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-02.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-02.ll @@ -1,6 +1,6 @@ ; Test strict extensions of f32 to f64. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.fpext.f64.f32(float, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-03.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-03.ll @@ -1,6 +1,6 @@ ; Test strict extensions of f32 to f128. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fpext.f128.f32(float, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-04.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-04.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-04.ll @@ -1,6 +1,6 @@ ; Test strict extensions of f64 to f128. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fpext.f128.f64(double, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-09.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-09.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-09.ll @@ -1,6 +1,6 @@ ; Test strict conversion of floating-point values to signed i32s. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare i32 @llvm.experimental.constrained.fptosi.i32.f32(float, metadata) declare i32 @llvm.experimental.constrained.fptosi.i32.f64(double, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-10.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-10.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-10.ll @@ -1,7 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; Test strict conversion of floating-point values to unsigned i32s (z10 only). ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 -disable-strictnode-mutation | FileCheck %s ; z10 doesn't have native support for unsigned fp-to-i32 conversions; ; they were added in z196 as the Convert to Logical family of instructions. Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-11.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-11.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-11.ll @@ -1,6 +1,6 @@ ; Test strict conversion of floating-point values to signed i64s. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare i64 @llvm.experimental.constrained.fptosi.i64.f32(float, metadata) declare i64 @llvm.experimental.constrained.fptosi.i64.f64(double, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-12.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-12.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-12.ll @@ -1,7 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; Test strict conversion of floating-point values to unsigned i64s (z10 only). ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 -disable-strictnode-mutation | FileCheck %s ; z10 doesn't have native support for unsigned fp-to-i64 conversions; ; they were added in z196 as the Convert to Logical family of instructions. Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-14.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-14.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-14.ll @@ -1,6 +1,6 @@ ; Test strict conversion of floating-point values to unsigned integers. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z196 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z196 -disable-strictnode-mutation | FileCheck %s declare i32 @llvm.experimental.constrained.fptoui.i32.f32(float, metadata) declare i32 @llvm.experimental.constrained.fptoui.i32.f64(double, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-15.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-15.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-15.ll @@ -1,6 +1,6 @@ ; Test f128 floating-point strict truncations/extensions on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.fptrunc.f32.f128(fp128, metadata, metadata) declare double @llvm.experimental.constrained.fptrunc.f64.f128(fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-conv-16.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-conv-16.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-conv-16.ll @@ -1,6 +1,6 @@ ; Test f128 floating-point strict conversion to/from integers on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s ; FIXME: llvm.experimental.constrained.[su]itofp does not yet exist Index: llvm/test/CodeGen/SystemZ/fp-strict-div-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-div-01.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-div-01.ll @@ -1,8 +1,8 @@ ; Test strict 32-bit floating-point division. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @foo() declare float @llvm.experimental.constrained.fdiv.f32(float, float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-div-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-div-02.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-div-02.ll @@ -1,8 +1,8 @@ ; Test strict 64-bit floating-point division. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @foo() declare double @llvm.experimental.constrained.fdiv.f64(double, double, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-div-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-div-03.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-div-03.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit floating-point division. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fdiv.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-div-04.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-div-04.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-div-04.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit floating-point division on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fdiv.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-01.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-01.ll @@ -1,8 +1,8 @@ ; Test strict multiplication of two f32s, producing an f32 result. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @foo() declare float @llvm.experimental.constrained.fmul.f32(float, float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-02.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-02.ll @@ -1,7 +1,7 @@ ; Test strict multiplication of two f32s, producing an f64 result. ; FIXME: we do not have a strict version of fpext yet ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare float @foo() declare double @llvm.experimental.constrained.fmul.f64(double, double, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-03.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-03.ll @@ -1,8 +1,8 @@ ; Test strict multiplication of two f64s, producing an f64 result. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @foo() declare double @llvm.experimental.constrained.fmul.f64(double, double, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-04.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-04.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-04.ll @@ -1,7 +1,7 @@ ; Test strict multiplication of two f64s, producing an f128 result. ; FIXME: we do not have a strict version of fpext yet ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fmul.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-05.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-05.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-05.ll @@ -1,6 +1,6 @@ ; Test strict multiplication of two f128s. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fmul.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-06.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-06.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-06.ll @@ -1,7 +1,7 @@ ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s declare float @llvm.experimental.constrained.fma.f32(float, float, float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-07.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-07.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-07.ll @@ -1,7 +1,7 @@ ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s declare double @llvm.experimental.constrained.fma.f64(double %f1, double %f2, double %f3, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-08.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-08.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-08.ll @@ -1,7 +1,7 @@ ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s declare float @llvm.experimental.constrained.fma.f32(float %f1, float %f2, float %f3, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-09.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-09.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-09.ll @@ -1,7 +1,7 @@ ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s declare double @llvm.experimental.constrained.fma.f64(double %f1, double %f2, double %f3, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-10.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-10.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-10.ll @@ -1,4 +1,4 @@ -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.fma.f64(double %f1, double %f2, double %f3, metadata, metadata) declare float @llvm.experimental.constrained.fma.f32(float %f1, float %f2, float %f3, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-mul-11.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-mul-11.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-mul-11.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit floating-point multiplication on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fmul.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-round-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-round-01.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-round-01.ll @@ -1,6 +1,6 @@ ; Test strict rounding functions for z10. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 -disable-strictnode-mutation | FileCheck %s ; Test rint for f32. declare float @llvm.experimental.constrained.rint.f32(float, metadata, metadata) @@ -43,209 +43,4 @@ ret void } -; Test nearbyint for f32. -declare float @llvm.experimental.constrained.nearbyint.f32(float, metadata, metadata) -define float @f4(float %f) #0 { -; CHECK-LABEL: f4: -; CHECK: brasl %r14, nearbyintf@PLT -; CHECK: br %r14 - %res = call float @llvm.experimental.constrained.nearbyint.f32( - float %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret float %res -} - -; Test nearbyint for f64. -declare double @llvm.experimental.constrained.nearbyint.f64(double, metadata, metadata) -define double @f5(double %f) #0 { -; CHECK-LABEL: f5: -; CHECK: brasl %r14, nearbyint@PLT -; CHECK: br %r14 - %res = call double @llvm.experimental.constrained.nearbyint.f64( - double %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret double %res -} - -; Test nearbyint for f128. -declare fp128 @llvm.experimental.constrained.nearbyint.f128(fp128, metadata, metadata) -define void @f6(fp128 *%ptr) #0 { -; CHECK-LABEL: f6: -; CHECK: brasl %r14, nearbyintl@PLT -; CHECK: br %r14 - %src = load fp128, fp128 *%ptr - %res = call fp128 @llvm.experimental.constrained.nearbyint.f128( - fp128 %src, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - store fp128 %res, fp128 *%ptr - ret void -} - -; Test floor for f32. -declare float @llvm.experimental.constrained.floor.f32(float, metadata, metadata) -define float @f7(float %f) #0 { -; CHECK-LABEL: f7: -; CHECK: brasl %r14, floorf@PLT -; CHECK: br %r14 - %res = call float @llvm.experimental.constrained.floor.f32( - float %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret float %res -} - -; Test floor for f64. -declare double @llvm.experimental.constrained.floor.f64(double, metadata, metadata) -define double @f8(double %f) #0 { -; CHECK-LABEL: f8: -; CHECK: brasl %r14, floor@PLT -; CHECK: br %r14 - %res = call double @llvm.experimental.constrained.floor.f64( - double %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret double %res -} - -; Test floor for f128. -declare fp128 @llvm.experimental.constrained.floor.f128(fp128, metadata, metadata) -define void @f9(fp128 *%ptr) #0 { -; CHECK-LABEL: f9: -; CHECK: brasl %r14, floorl@PLT -; CHECK: br %r14 - %src = load fp128, fp128 *%ptr - %res = call fp128 @llvm.experimental.constrained.floor.f128( - fp128 %src, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - store fp128 %res, fp128 *%ptr - ret void -} - -; Test ceil for f32. -declare float @llvm.experimental.constrained.ceil.f32(float, metadata, metadata) -define float @f10(float %f) #0 { -; CHECK-LABEL: f10: -; CHECK: brasl %r14, ceilf@PLT -; CHECK: br %r14 - %res = call float @llvm.experimental.constrained.ceil.f32( - float %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret float %res -} - -; Test ceil for f64. -declare double @llvm.experimental.constrained.ceil.f64(double, metadata, metadata) -define double @f11(double %f) #0 { -; CHECK-LABEL: f11: -; CHECK: brasl %r14, ceil@PLT -; CHECK: br %r14 - %res = call double @llvm.experimental.constrained.ceil.f64( - double %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret double %res -} - -; Test ceil for f128. -declare fp128 @llvm.experimental.constrained.ceil.f128(fp128, metadata, metadata) -define void @f12(fp128 *%ptr) #0 { -; CHECK-LABEL: f12: -; CHECK: brasl %r14, ceill@PLT -; CHECK: br %r14 - %src = load fp128, fp128 *%ptr - %res = call fp128 @llvm.experimental.constrained.ceil.f128( - fp128 %src, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - store fp128 %res, fp128 *%ptr - ret void -} - -; Test trunc for f32. -declare float @llvm.experimental.constrained.trunc.f32(float, metadata, metadata) -define float @f13(float %f) #0 { -; CHECK-LABEL: f13: -; CHECK: brasl %r14, truncf@PLT -; CHECK: br %r14 - %res = call float @llvm.experimental.constrained.trunc.f32( - float %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret float %res -} - -; Test trunc for f64. -declare double @llvm.experimental.constrained.trunc.f64(double, metadata, metadata) -define double @f14(double %f) #0 { -; CHECK-LABEL: f14: -; CHECK: brasl %r14, trunc@PLT -; CHECK: br %r14 - %res = call double @llvm.experimental.constrained.trunc.f64( - double %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret double %res -} - -; Test trunc for f128. -declare fp128 @llvm.experimental.constrained.trunc.f128(fp128, metadata, metadata) -define void @f15(fp128 *%ptr) #0 { -; CHECK-LABEL: f15: -; CHECK: brasl %r14, truncl@PLT -; CHECK: br %r14 - %src = load fp128, fp128 *%ptr - %res = call fp128 @llvm.experimental.constrained.trunc.f128( - fp128 %src, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - store fp128 %res, fp128 *%ptr - ret void -} - -; Test round for f32. -declare float @llvm.experimental.constrained.round.f32(float, metadata, metadata) -define float @f16(float %f) #0 { -; CHECK-LABEL: f16: -; CHECK: brasl %r14, roundf@PLT -; CHECK: br %r14 - %res = call float @llvm.experimental.constrained.round.f32( - float %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret float %res -} - -; Test round for f64. -declare double @llvm.experimental.constrained.round.f64(double, metadata, metadata) -define double @f17(double %f) #0 { -; CHECK-LABEL: f17: -; CHECK: brasl %r14, round@PLT -; CHECK: br %r14 - %res = call double @llvm.experimental.constrained.round.f64( - double %f, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - ret double %res -} - -; Test round for f128. -declare fp128 @llvm.experimental.constrained.round.f128(fp128, metadata, metadata) -define void @f18(fp128 *%ptr) #0 { -; CHECK-LABEL: f18: -; CHECK: brasl %r14, roundl@PLT -; CHECK: br %r14 - %src = load fp128, fp128 *%ptr - %res = call fp128 @llvm.experimental.constrained.round.f128( - fp128 %src, - metadata !"round.dynamic", - metadata !"fpexcept.strict") #0 - store fp128 %res, fp128 *%ptr - ret void -} - attributes #0 = { strictfp } Index: llvm/test/CodeGen/SystemZ/fp-strict-round-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-round-02.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-round-02.ll @@ -1,9 +1,9 @@ ; Test strict rounding functions for z196 and above. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z196 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-VECTOR %s ; Test rint for f32. declare float @llvm.experimental.constrained.rint.f32(float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-round-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-round-03.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-round-03.ll @@ -1,6 +1,6 @@ ; Test strict rounding functions for z14 and above. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s ; Test rint for f32. declare float @llvm.experimental.constrained.rint.f32(float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-round-04.ll =================================================================== --- /dev/null +++ llvm/test/CodeGen/SystemZ/fp-strict-round-04.ll @@ -0,0 +1,211 @@ +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s + +; Test nearbyint for f32. +declare float @llvm.experimental.constrained.nearbyint.f32(float, metadata, metadata) +define float @f4(float %f) #0 { +; CHECK-LABEL: f4: +; CHECK: brasl %r14, nearbyintf@PLT +; CHECK: br %r14 + %res = call float @llvm.experimental.constrained.nearbyint.f32( + float %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret float %res +} + +; Test nearbyint for f64. +declare double @llvm.experimental.constrained.nearbyint.f64(double, metadata, metadata) +define double @f5(double %f) #0 { +; CHECK-LABEL: f5: +; CHECK: brasl %r14, nearbyint@PLT +; CHECK: br %r14 + %res = call double @llvm.experimental.constrained.nearbyint.f64( + double %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret double %res +} + +; Test nearbyint for f128. +declare fp128 @llvm.experimental.constrained.nearbyint.f128(fp128, metadata, metadata) +define void @f6(fp128 *%ptr) #0 { +; CHECK-LABEL: f6: +; CHECK: brasl %r14, nearbyintl@PLT +; CHECK: br %r14 + %src = load fp128, fp128 *%ptr + %res = call fp128 @llvm.experimental.constrained.nearbyint.f128( + fp128 %src, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + store fp128 %res, fp128 *%ptr + ret void +} + +; Test floor for f32. +declare float @llvm.experimental.constrained.floor.f32(float, metadata, metadata) +define float @f7(float %f) #0 { +; CHECK-LABEL: f7: +; CHECK: brasl %r14, floorf@PLT +; CHECK: br %r14 + %res = call float @llvm.experimental.constrained.floor.f32( + float %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret float %res +} + +; Test floor for f64. +declare double @llvm.experimental.constrained.floor.f64(double, metadata, metadata) +define double @f8(double %f) #0 { +; CHECK-LABEL: f8: +; CHECK: brasl %r14, floor@PLT +; CHECK: br %r14 + %res = call double @llvm.experimental.constrained.floor.f64( + double %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret double %res +} + +; Test floor for f128. +declare fp128 @llvm.experimental.constrained.floor.f128(fp128, metadata, metadata) +define void @f9(fp128 *%ptr) #0 { +; CHECK-LABEL: f9: +; CHECK: brasl %r14, floorl@PLT +; CHECK: br %r14 + %src = load fp128, fp128 *%ptr + %res = call fp128 @llvm.experimental.constrained.floor.f128( + fp128 %src, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + store fp128 %res, fp128 *%ptr + ret void +} + +; Test ceil for f32. +declare float @llvm.experimental.constrained.ceil.f32(float, metadata, metadata) +define float @f10(float %f) #0 { +; CHECK-LABEL: f10: +; CHECK: brasl %r14, ceilf@PLT +; CHECK: br %r14 + %res = call float @llvm.experimental.constrained.ceil.f32( + float %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret float %res +} + +; Test ceil for f64. +declare double @llvm.experimental.constrained.ceil.f64(double, metadata, metadata) +define double @f11(double %f) #0 { +; CHECK-LABEL: f11: +; CHECK: brasl %r14, ceil@PLT +; CHECK: br %r14 + %res = call double @llvm.experimental.constrained.ceil.f64( + double %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret double %res +} + +; Test ceil for f128. +declare fp128 @llvm.experimental.constrained.ceil.f128(fp128, metadata, metadata) +define void @f12(fp128 *%ptr) #0 { +; CHECK-LABEL: f12: +; CHECK: brasl %r14, ceill@PLT +; CHECK: br %r14 + %src = load fp128, fp128 *%ptr + %res = call fp128 @llvm.experimental.constrained.ceil.f128( + fp128 %src, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + store fp128 %res, fp128 *%ptr + ret void +} + +; Test trunc for f32. +declare float @llvm.experimental.constrained.trunc.f32(float, metadata, metadata) +define float @f13(float %f) #0 { +; CHECK-LABEL: f13: +; CHECK: brasl %r14, truncf@PLT +; CHECK: br %r14 + %res = call float @llvm.experimental.constrained.trunc.f32( + float %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret float %res +} + +; Test trunc for f64. +declare double @llvm.experimental.constrained.trunc.f64(double, metadata, metadata) +define double @f14(double %f) #0 { +; CHECK-LABEL: f14: +; CHECK: brasl %r14, trunc@PLT +; CHECK: br %r14 + %res = call double @llvm.experimental.constrained.trunc.f64( + double %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret double %res +} + +; Test trunc for f128. +declare fp128 @llvm.experimental.constrained.trunc.f128(fp128, metadata, metadata) +define void @f15(fp128 *%ptr) #0 { +; CHECK-LABEL: f15: +; CHECK: brasl %r14, truncl@PLT +; CHECK: br %r14 + %src = load fp128, fp128 *%ptr + %res = call fp128 @llvm.experimental.constrained.trunc.f128( + fp128 %src, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + store fp128 %res, fp128 *%ptr + ret void +} + +; Test round for f32. +declare float @llvm.experimental.constrained.round.f32(float, metadata, metadata) +define float @f16(float %f) #0 { +; CHECK-LABEL: f16: +; CHECK: brasl %r14, roundf@PLT +; CHECK: br %r14 + %res = call float @llvm.experimental.constrained.round.f32( + float %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret float %res +} + +; Test round for f64. +declare double @llvm.experimental.constrained.round.f64(double, metadata, metadata) +define double @f17(double %f) #0 { +; CHECK-LABEL: f17: +; CHECK: brasl %r14, round@PLT +; CHECK: br %r14 + %res = call double @llvm.experimental.constrained.round.f64( + double %f, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + ret double %res +} + +; Test round for f128. +declare fp128 @llvm.experimental.constrained.round.f128(fp128, metadata, metadata) +define void @f18(fp128 *%ptr) #0 { +; CHECK-LABEL: f18: +; CHECK: brasl %r14, roundl@PLT +; CHECK: br %r14 + %src = load fp128, fp128 *%ptr + %res = call fp128 @llvm.experimental.constrained.round.f128( + fp128 %src, + metadata !"round.dynamic", + metadata !"fpexcept.strict") #0 + store fp128 %res, fp128 *%ptr + ret void +} + +attributes #0 = { strictfp } + + + Index: llvm/test/CodeGen/SystemZ/fp-strict-sqrt-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-sqrt-01.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-sqrt-01.ll @@ -1,8 +1,8 @@ ; Test strict 32-bit square root. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.sqrt.f32(float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-sqrt-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-sqrt-02.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-sqrt-02.ll @@ -1,8 +1,8 @@ ; Test strict 64-bit square root. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.sqrt.f64(double, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-sqrt-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-sqrt-03.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-sqrt-03.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit square root. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.sqrt.f128(fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-sqrt-04.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-sqrt-04.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-sqrt-04.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit floating-point square root on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.sqrt.f128(fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-sub-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-sub-01.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-sub-01.ll @@ -1,8 +1,8 @@ ; Test 32-bit floating-point strict subtraction. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @foo() declare float @llvm.experimental.constrained.fsub.f32(float, float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-sub-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-sub-02.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-sub-02.ll @@ -1,8 +1,8 @@ ; Test strict 64-bit floating-point subtraction. ; ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 \ -; RUN: | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: -disable-strictnode-mutation | FileCheck -check-prefix=CHECK -check-prefix=CHECK-SCALAR %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @foo() declare double @llvm.experimental.constrained.fsub.f64(double, double, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-sub-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-sub-03.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-sub-03.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit floating-point subtraction. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fsub.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/fp-strict-sub-04.ll =================================================================== --- llvm/test/CodeGen/SystemZ/fp-strict-sub-04.ll +++ llvm/test/CodeGen/SystemZ/fp-strict-sub-04.ll @@ -1,6 +1,6 @@ ; Test strict 128-bit floating-point subtraction on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare fp128 @llvm.experimental.constrained.fsub.f128(fp128, fp128, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-add-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-add-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-add-01.ll @@ -1,6 +1,6 @@ ; Test strict vector addition. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.fadd.f64(double, double, metadata, metadata) declare <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double>, <2 x double>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-add-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-add-02.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-add-02.ll @@ -1,6 +1,6 @@ ; Test strict vector addition on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.fadd.f32(float, float, metadata, metadata) declare <4 x float> @llvm.experimental.constrained.fadd.v4f32(<4 x float>, <4 x float>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-conv-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-conv-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-conv-01.ll @@ -1,6 +1,6 @@ ; Test strict conversions between integer and float elements. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s ; FIXME: llvm.experimental.constrained.[su]itofp does not yet exist Index: llvm/test/CodeGen/SystemZ/vec-strict-conv-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-conv-03.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-conv-03.ll @@ -1,6 +1,6 @@ ; Test strict conversions between integer and float elements on z15. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z15 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z15 -disable-strictnode-mutation | FileCheck %s ; FIXME: llvm.experimental.constrained.[su]itofp does not yet exist Index: llvm/test/CodeGen/SystemZ/vec-strict-div-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-div-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-div-01.ll @@ -1,6 +1,6 @@ ; Test strict vector division. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.fdiv.f64(double, double, metadata, metadata) declare <2 x double> @llvm.experimental.constrained.fdiv.v2f64(<2 x double>, <2 x double>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-div-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-div-02.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-div-02.ll @@ -1,6 +1,6 @@ ; Test strict vector division on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.fdiv.f32(float, float, metadata, metadata) declare <4 x float> @llvm.experimental.constrained.fdiv.v4f32(<4 x float>, <4 x float>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-max-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-max-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-max-01.ll @@ -1,6 +1,6 @@ ; Test strict vector maximum on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.maxnum.f64(double, double, metadata, metadata) declare <2 x double> @llvm.experimental.constrained.maxnum.v2f64(<2 x double>, <2 x double>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-min-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-min-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-min-01.ll @@ -1,6 +1,6 @@ ; Test strict vector minimum on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.minnum.f64(double, double, metadata, metadata) declare <2 x double> @llvm.experimental.constrained.minnum.v2f64(<2 x double>, <2 x double>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-mul-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-mul-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-mul-01.ll @@ -1,6 +1,6 @@ ; Test strict vector multiplication. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.fmul.f64(double, double, metadata, metadata) declare <2 x double> @llvm.experimental.constrained.fmul.v2f64(<2 x double>, <2 x double>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-mul-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-mul-02.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-mul-02.ll @@ -1,6 +1,6 @@ ; Test strict vector multiply-and-add. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare <2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double>, <2 x double>, <2 x double>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-mul-03.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-mul-03.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-mul-03.ll @@ -1,6 +1,6 @@ ; Test strict vector multiplication on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.fmul.f32(float, float, metadata, metadata) declare <4 x float> @llvm.experimental.constrained.fmul.v4f32(<4 x float>, <4 x float>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-mul-04.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-mul-04.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-mul-04.ll @@ -1,6 +1,6 @@ ; Test strict vector multiply-and-add on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare <4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float>, <4 x float>, <4 x float>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-mul-05.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-mul-05.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-mul-05.ll @@ -1,6 +1,6 @@ ; Test vector negative multiply-and-add on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare <2 x double> @llvm.experimental.constrained.fma.v2f64(<2 x double>, <2 x double>, <2 x double>, metadata, metadata) declare <4 x float> @llvm.experimental.constrained.fma.v4f32(<4 x float>, <4 x float>, <4 x float>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-round-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-round-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-round-01.ll @@ -1,6 +1,6 @@ ; Test strict v2f64 rounding. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.rint.f64(double, metadata, metadata) declare double @llvm.experimental.constrained.nearbyint.f64(double, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-round-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-round-02.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-round-02.ll @@ -1,6 +1,6 @@ ; Test strict v4f32 rounding on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.rint.f32(float, metadata, metadata) declare float @llvm.experimental.constrained.nearbyint.f32(float, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-sqrt-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-sqrt-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-sqrt-01.ll @@ -1,6 +1,6 @@ ; Test f64 and v2f64 square root. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.sqrt.f64(double, metadata, metadata) declare <2 x double> @llvm.experimental.constrained.sqrt.v2f64(<2 x double>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-sqrt-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-sqrt-02.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-sqrt-02.ll @@ -1,6 +1,6 @@ ; Test strict f32 and v4f32 square root on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.sqrt.f32(float, metadata, metadata) declare <4 x float> @llvm.experimental.constrained.sqrt.v4f32(<4 x float>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-sub-01.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-sub-01.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-sub-01.ll @@ -1,6 +1,6 @@ ; Test strict vector subtraction. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -disable-strictnode-mutation | FileCheck %s declare double @llvm.experimental.constrained.fsub.f64(double, double, metadata, metadata) declare <2 x double> @llvm.experimental.constrained.fsub.v2f64(<2 x double>, <2 x double>, metadata, metadata) Index: llvm/test/CodeGen/SystemZ/vec-strict-sub-02.ll =================================================================== --- llvm/test/CodeGen/SystemZ/vec-strict-sub-02.ll +++ llvm/test/CodeGen/SystemZ/vec-strict-sub-02.ll @@ -1,6 +1,6 @@ ; Test strict vector subtraction on z14. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -disable-strictnode-mutation | FileCheck %s declare float @llvm.experimental.constrained.fsub.f32(float, float, metadata, metadata) declare <4 x float> @llvm.experimental.constrained.fsub.v4f32(<4 x float>, <4 x float>, metadata, metadata)