1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc -O3 -mtriple=x86_64-pc-linux < %s | FileCheck %s --check-prefix =COMMON --check-prefix=SSE
3
- ; RUN: llc -O3 -mtriple=x86_64-pc-linux -mattr=+fma < %s | FileCheck %s --check-prefix =COMMON --check-prefix=AVX
4
- ; RUN: llc -O3 -mtriple=x86_64-pc-linux -mattr=+avx512f < %s | FileCheck %s --check-prefix =COMMON --check-prefix=AVX
2
+ ; RUN: llc -O3 -mtriple=x86_64-pc-linux < %s | FileCheck %s --check-prefixes =COMMON,NOFMA
3
+ ; RUN: llc -O3 -mtriple=x86_64-pc-linux -mattr=+fma < %s | FileCheck %s --check-prefixes =COMMON,FMA
4
+ ; RUN: llc -O3 -mtriple=x86_64-pc-linux -mattr=+avx512f < %s | FileCheck %s --check-prefixes =COMMON,FMA
5
5
6
6
; Verify that fma(3.5) isn't simplified when the rounding mode is
7
7
; unknown.
8
8
define float @f17 () #0 {
9
- ; SSE-LABEL: f17:
10
- ; SSE: # %bb.0: # %entry
11
- ; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
12
- ; SSE-NEXT: movaps %xmm0, %xmm1
13
- ; SSE-NEXT: movaps %xmm0, %xmm2
14
- ; SSE-NEXT: jmp fmaf # TAILCALL
15
- ;
16
- ; AVX-LABEL: f17:
17
- ; AVX: # %bb.0: # %entry
18
- ; AVX-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
19
- ; AVX-NEXT: vfmadd213ss {{.*#+}} xmm0 = (xmm0 * xmm0) + xmm0
20
- ; AVX-NEXT: retq
21
9
; NOFMA-LABEL: f17:
22
10
; NOFMA: # %bb.0: # %entry
23
- ; NOFMA-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
24
- ; NOFMA-NEXT: vmovaps %xmm0, %xmm1
25
- ; NOFMA-NEXT: vmovaps %xmm0, %xmm2
11
+ ; NOFMA-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
12
+ ; NOFMA-NEXT: movaps %xmm0, %xmm1
13
+ ; NOFMA-NEXT: movaps %xmm0, %xmm2
26
14
; NOFMA-NEXT: jmp fmaf # TAILCALL
15
+ ;
27
16
; FMA-LABEL: f17:
28
17
; FMA: # %bb.0: # %entry
29
18
; FMA-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
30
19
; FMA-NEXT: vfmadd213ss {{.*#+}} xmm0 = (xmm0 * xmm0) + xmm0
31
20
; FMA-NEXT: retq
32
- ; AVX512-LABEL: f17:
33
- ; AVX512: # %bb.0: # %entry
34
- ; AVX512-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
35
- ; AVX512-NEXT: vfmadd213ss {{.*#+}} xmm0 = (xmm0 * xmm0) + xmm0
36
- ; AVX512-NEXT: retq
37
21
entry:
38
22
%result = call float @llvm.experimental.constrained.fma.f32 (
39
23
float 3 .5 ,
@@ -47,34 +31,18 @@ entry:
47
31
; Verify that fma(42.1) isn't simplified when the rounding mode is
48
32
; unknown.
49
33
define double @f18 () #0 {
50
- ; SSE-LABEL: f18:
51
- ; SSE: # %bb.0: # %entry
52
- ; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
53
- ; SSE-NEXT: movaps %xmm0, %xmm1
54
- ; SSE-NEXT: movaps %xmm0, %xmm2
55
- ; SSE-NEXT: jmp fma # TAILCALL
56
- ;
57
- ; AVX-LABEL: f18:
58
- ; AVX: # %bb.0: # %entry
59
- ; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
60
- ; AVX-NEXT: vfmadd213sd {{.*#+}} xmm0 = (xmm0 * xmm0) + xmm0
61
- ; AVX-NEXT: retq
62
34
; NOFMA-LABEL: f18:
63
35
; NOFMA: # %bb.0: # %entry
64
- ; NOFMA-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
65
- ; NOFMA-NEXT: vmovaps %xmm0, %xmm1
66
- ; NOFMA-NEXT: vmovaps %xmm0, %xmm2
36
+ ; NOFMA-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
37
+ ; NOFMA-NEXT: movaps %xmm0, %xmm1
38
+ ; NOFMA-NEXT: movaps %xmm0, %xmm2
67
39
; NOFMA-NEXT: jmp fma # TAILCALL
40
+ ;
68
41
; FMA-LABEL: f18:
69
42
; FMA: # %bb.0: # %entry
70
43
; FMA-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
71
44
; FMA-NEXT: vfmadd213sd {{.*#+}} xmm0 = (xmm0 * xmm0) + xmm0
72
45
; FMA-NEXT: retq
73
- ; AVX512-LABEL: f18:
74
- ; AVX512: # %bb.0: # %entry
75
- ; AVX512-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
76
- ; AVX512-NEXT: vfmadd213sd {{.*#+}} xmm0 = (xmm0 * xmm0) + xmm0
77
- ; AVX512-NEXT: retq
78
46
entry:
79
47
%result = call double @llvm.experimental.constrained.fma.f64 (
80
48
double 42 .1 ,
0 commit comments