summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SpeculativeExecution/spec-fp.ll
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2016-10-28 20:00:33 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2016-10-28 20:00:33 +0000
commitef00283425e40d9e78129d28e0c8ad965c3ea66b (patch)
treeec5d2693b651e20afa6c6607110eac0dead048d0 /llvm/test/Transforms/SpeculativeExecution/spec-fp.ll
parente0ab873a843b5f1320d376d67c9c5683c89a9921 (diff)
downloadbcm5719-llvm-ef00283425e40d9e78129d28e0c8ad965c3ea66b.tar.gz
bcm5719-llvm-ef00283425e40d9e78129d28e0c8ad965c3ea66b.zip
SpeculativeExecution: Allow speculating more inst types
Partial step towards removing the whitelist and only using TTI's cost. llvm-svn: 285438
Diffstat (limited to 'llvm/test/Transforms/SpeculativeExecution/spec-fp.ll')
-rw-r--r--llvm/test/Transforms/SpeculativeExecution/spec-fp.ll87
1 files changed, 87 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SpeculativeExecution/spec-fp.ll b/llvm/test/Transforms/SpeculativeExecution/spec-fp.ll
new file mode 100644
index 00000000000..efab8ab704c
--- /dev/null
+++ b/llvm/test/Transforms/SpeculativeExecution/spec-fp.ll
@@ -0,0 +1,87 @@
+; RUN: opt < %s -S -speculative-execution \
+; RUN: -spec-exec-max-speculation-cost 4 -spec-exec-max-not-hoisted 3 \
+; RUN: | FileCheck %s
+
+; CHECK-LABEL: @ifThen_fadd(
+; CHECK: fadd
+; CHECK: br i1 true
+define void @ifThen_fadd() {
+ br i1 true, label %a, label %b
+
+a:
+ %x = fadd float undef, undef
+ br label %b
+
+b:
+ ret void
+}
+
+; CHECK-LABEL: @ifThen_fsub(
+; CHECK: fsub
+; CHECK: br i1 true
+define void @ifThen_fsub() {
+ br i1 true, label %a, label %b
+
+a:
+ %x = fsub float undef, undef
+ br label %b
+
+b:
+ ret void
+}
+
+; CHECK-LABEL: @ifThen_fneg(
+; CHECK: fsub float -0.0
+; CHECK: br i1 true
+define void @ifThen_fneg() {
+ br i1 true, label %a, label %b
+
+a:
+ %x = fsub float -0.0, undef
+ br label %b
+
+b:
+ ret void
+}
+
+; CHECK-LABEL: @ifThen_fmul(
+; CHECK: fmul
+; CHECK: br i1 true
+define void @ifThen_fmul() {
+ br i1 true, label %a, label %b
+
+a:
+ %x = fmul float undef, undef
+ br label %b
+
+b:
+ ret void
+}
+
+; CHECK-LABEL: @ifThen_fdiv(
+; CHECK: fdiv
+; CHECK: br i1 true
+define void @ifThen_fdiv() {
+ br i1 true, label %a, label %b
+
+a:
+ %x = fdiv float undef, undef
+ br label %b
+
+b:
+ ret void
+}
+
+; CHECK-LABEL: @ifThen_frem(
+; CHECK: frem
+; CHECK: br i1 true
+define void @ifThen_frem() {
+ br i1 true, label %a, label %b
+
+a:
+ %x = frem float undef, undef
+ br label %b
+
+b:
+ ret void
+}
OpenPOWER on IntegriCloud