File: Float16-complex.c

package info (click to toggle)
llvm-toolchain-15 1%3A15.0.6-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,554,644 kB
  • sloc: cpp: 5,922,452; ansic: 1,012,136; asm: 674,362; python: 191,568; objc: 73,855; f90: 42,327; lisp: 31,913; pascal: 11,973; javascript: 10,144; sh: 9,421; perl: 7,447; ml: 5,527; awk: 3,523; makefile: 2,520; xml: 885; cs: 573; fortran: 567
file content (134 lines) | stat: -rw-r--r-- 3,284 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// RUN: %clang_cc1 %s -O0 -emit-llvm -triple x86_64-unknown-unknown -target-feature +avx512fp16 -o - | FileCheck %s --check-prefix=X86
// RUN: %clang_cc1 %s -O0 -emit-llvm -triple x86_64-unknown-unknown -o - | FileCheck %s --check-prefix=X86

_Float16 _Complex add_half_rr(_Float16 a, _Float16 b) {
  // X86-LABEL: @add_half_rr(
  // X86: fadd
  // X86-NOT: fadd
  // X86: ret
  return a + b;
}
_Float16 _Complex add_half_cr(_Float16 _Complex a, _Float16 b) {
  // X86-LABEL: @add_half_cr(
  // X86: fadd
  // X86-NOT: fadd
  // X86: ret
  return a + b;
}
_Float16 _Complex add_half_rc(_Float16 a, _Float16 _Complex b) {
  // X86-LABEL: @add_half_rc(
  // X86: fadd
  // X86-NOT: fadd
  // X86: ret
  return a + b;
}
_Float16 _Complex add_half_cc(_Float16 _Complex a, _Float16 _Complex b) {
  // X86-LABEL: @add_half_cc(
  // X86: fadd
  // X86: fadd
  // X86-NOT: fadd
  // X86: ret
  return a + b;
}

_Float16 _Complex sub_half_rr(_Float16 a, _Float16 b) {
  // X86-LABEL: @sub_half_rr(
  // X86: fsub
  // X86-NOT: fsub
  // X86: ret
  return a - b;
}
_Float16 _Complex sub_half_cr(_Float16 _Complex a, _Float16 b) {
  // X86-LABEL: @sub_half_cr(
  // X86: fsub
  // X86-NOT: fsub
  // X86: ret
  return a - b;
}
_Float16 _Complex sub_half_rc(_Float16 a, _Float16 _Complex b) {
  // X86-LABEL: @sub_half_rc(
  // X86: fsub
  // X86: fneg
  // X86-NOT: fsub
  // X86: ret
  return a - b;
}
_Float16 _Complex sub_half_cc(_Float16 _Complex a, _Float16 _Complex b) {
  // X86-LABEL: @sub_half_cc(
  // X86: fsub
  // X86: fsub
  // X86-NOT: fsub
  // X86: ret
  return a - b;
}

_Float16 _Complex mul_half_rr(_Float16 a, _Float16 b) {
  // X86-LABEL: @mul_half_rr(
  // X86: fmul
  // X86-NOT: fmul
  // X86: ret
  return a * b;
}
_Float16 _Complex mul_half_cr(_Float16 _Complex a, _Float16 b) {
  // X86-LABEL: @mul_half_cr(
  // X86: fmul
  // X86: fmul
  // X86-NOT: fmul
  // X86: ret
  return a * b;
}
_Float16 _Complex mul_half_rc(_Float16 a, _Float16 _Complex b) {
  // X86-LABEL: @mul_half_rc(
  // X86: fmul
  // X86: fmul
  // X86-NOT: fmul
  // X86: ret
  return a * b;
}
_Float16 _Complex mul_half_cc(_Float16 _Complex a, _Float16 _Complex b) {
  // X86-LABEL: @mul_half_cc(
  // X86: %[[AC:[^ ]+]] = fmul
  // X86: %[[BD:[^ ]+]] = fmul
  // X86: %[[AD:[^ ]+]] = fmul
  // X86: %[[BC:[^ ]+]] = fmul
  // X86: %[[RR:[^ ]+]] = fsub half %[[AC]], %[[BD]]
  // X86: %[[RI:[^ ]+]] = fadd half
  // X86-DAG: %[[AD]]
  // X86-DAG: ,
  // X86-DAG: %[[BC]]
  // X86: fcmp uno half %[[RR]]
  // X86: fcmp uno half %[[RI]]
  // X86: call {{.*}} @__mulhc3(
  // X86: ret
  return a * b;
}

_Float16 _Complex div_half_rr(_Float16 a, _Float16 b) {
  // X86-LABEL: @div_half_rr(
  // X86: fdiv
  // X86-NOT: fdiv
  // X86: ret
  return a / b;
}
_Float16 _Complex div_half_cr(_Float16 _Complex a, _Float16 b) {
  // X86-LABEL: @div_half_cr(
  // X86: fdiv
  // X86: fdiv
  // X86-NOT: fdiv
  // X86: ret
  return a / b;
}
_Float16 _Complex div_half_rc(_Float16 a, _Float16 _Complex b) {
  // X86-LABEL: @div_half_rc(
  // X86-NOT: fdiv
  // X86: call {{.*}} @__divhc3(
  // X86: ret
  return a / b;
}
_Float16 _Complex div_half_cc(_Float16 _Complex a, _Float16 _Complex b) {
  // X86-LABEL: @div_half_cc(
  // X86-NOT: fdiv
  // X86: call {{.*}} @__divhc3(
  // X86: ret
  return a / b;
}