Skip to content

Commit a7bf92a

Browse files
committed
ValueTracking: Add baseline tests for fma computeKnownFPClass
1 parent b789ae0 commit a7bf92a

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
2+
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -S < %s | FileCheck %s --check-prefixes=CHECK,TUNIT
3+
4+
declare float @llvm.fma.f32(float, float, float)
5+
declare float @llvm.fmuladd.f32(float, float, float)
6+
7+
define float @ret_fma_same_mul_arg(float %arg0, float %arg1) {
8+
; CHECK-LABEL: define float @ret_fma_same_mul_arg
9+
; CHECK-SAME: (float [[ARG0:%.*]], float [[ARG1:%.*]]) #[[ATTR1:[0-9]+]] {
10+
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.fma.f32(float [[ARG0]], float [[ARG0]], float [[ARG1]]) #[[ATTR2:[0-9]+]]
11+
; CHECK-NEXT: ret float [[CALL]]
12+
;
13+
%call = call float @llvm.fma.f32(float %arg0, float %arg0, float %arg1)
14+
ret float %call
15+
}
16+
17+
define float @ret_fma_same_mul_arg_positive_addend(float %arg0, float nofpclass(ninf nsub nnorm) %arg1) {
18+
; CHECK-LABEL: define float @ret_fma_same_mul_arg_positive_addend
19+
; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(ninf nsub nnorm) [[ARG1:%.*]]) #[[ATTR1]] {
20+
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.fma.f32(float [[ARG0]], float [[ARG0]], float [[ARG1]]) #[[ATTR2]]
21+
; CHECK-NEXT: ret float [[CALL]]
22+
;
23+
%call = call float @llvm.fma.f32(float %arg0, float %arg0, float %arg1)
24+
ret float %call
25+
}
26+
27+
define float @ret_fma_different_mul_arg_positive_addend(float %arg0, float %arg1, float nofpclass(ninf nsub nnorm) %arg2) {
28+
; CHECK-LABEL: define float @ret_fma_different_mul_arg_positive_addend
29+
; CHECK-SAME: (float [[ARG0:%.*]], float [[ARG1:%.*]], float nofpclass(ninf nsub nnorm) [[ARG2:%.*]]) #[[ATTR1]] {
30+
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.fma.f32(float [[ARG0]], float [[ARG1]], float [[ARG2]]) #[[ATTR2]]
31+
; CHECK-NEXT: ret float [[CALL]]
32+
;
33+
%call = call float @llvm.fma.f32(float %arg0, float %arg1, float %arg2)
34+
ret float %call
35+
}
36+
37+
define float @ret_fmuladd_different_same_arg_positive_addend(float %arg0, float nofpclass(ninf nsub nnorm) %arg1) {
38+
; CHECK-LABEL: define float @ret_fmuladd_different_same_arg_positive_addend
39+
; CHECK-SAME: (float [[ARG0:%.*]], float nofpclass(ninf nsub nnorm) [[ARG1:%.*]]) #[[ATTR1]] {
40+
; CHECK-NEXT: [[CALL:%.*]] = call float @llvm.fmuladd.f32(float [[ARG0]], float [[ARG0]], float [[ARG1]]) #[[ATTR2]]
41+
; CHECK-NEXT: ret float [[CALL]]
42+
;
43+
%call = call float @llvm.fmuladd.f32(float %arg0, float %arg0, float %arg1)
44+
ret float %call
45+
}
46+
47+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
48+
; TUNIT: {{.*}}

0 commit comments

Comments
 (0)