|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 | 2 | ; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve < %s | FileCheck %s
|
3 |
| -; RUN: llc -mtriple=aarch64--linux-gnu -mattr=+sve -force-streaming-compatible-sve < %s | FileCheck %s |
| 3 | + |
| 4 | +; |
| 5 | +; FADDA |
| 6 | +; |
| 7 | + |
| 8 | +define half @fadda_f16(<vscale x 8 x i1> %pg, half %init, <vscale x 8 x half> %a) { |
| 9 | +; CHECK-LABEL: fadda_f16: |
| 10 | +; CHECK: // %bb.0: |
| 11 | +; CHECK-NEXT: // kill: def $h0 killed $h0 def $z0 |
| 12 | +; CHECK-NEXT: fadda h0, p0, h0, z1.h |
| 13 | +; CHECK-NEXT: // kill: def $h0 killed $h0 killed $z0 |
| 14 | +; CHECK-NEXT: ret |
| 15 | + %res = call half @llvm.aarch64.sve.fadda.nxv8f16(<vscale x 8 x i1> %pg, |
| 16 | + half %init, |
| 17 | + <vscale x 8 x half> %a) |
| 18 | + ret half %res |
| 19 | +} |
| 20 | + |
| 21 | +define float @fadda_f32(<vscale x 4 x i1> %pg, float %init, <vscale x 4 x float> %a) { |
| 22 | +; CHECK-LABEL: fadda_f32: |
| 23 | +; CHECK: // %bb.0: |
| 24 | +; CHECK-NEXT: // kill: def $s0 killed $s0 def $z0 |
| 25 | +; CHECK-NEXT: fadda s0, p0, s0, z1.s |
| 26 | +; CHECK-NEXT: // kill: def $s0 killed $s0 killed $z0 |
| 27 | +; CHECK-NEXT: ret |
| 28 | + %res = call float @llvm.aarch64.sve.fadda.nxv4f32(<vscale x 4 x i1> %pg, |
| 29 | + float %init, |
| 30 | + <vscale x 4 x float> %a) |
| 31 | + ret float %res |
| 32 | +} |
| 33 | + |
| 34 | +define double @fadda_f64(<vscale x 2 x i1> %pg, double %init, <vscale x 2 x double> %a) { |
| 35 | +; CHECK-LABEL: fadda_f64: |
| 36 | +; CHECK: // %bb.0: |
| 37 | +; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0 |
| 38 | +; CHECK-NEXT: fadda d0, p0, d0, z1.d |
| 39 | +; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0 |
| 40 | +; CHECK-NEXT: ret |
| 41 | + %res = call double @llvm.aarch64.sve.fadda.nxv2f64(<vscale x 2 x i1> %pg, |
| 42 | + double %init, |
| 43 | + <vscale x 2 x double> %a) |
| 44 | + ret double %res |
| 45 | +} |
4 | 46 |
|
5 | 47 | ;
|
6 | 48 | ; FADDV
|
@@ -187,6 +229,10 @@ define double @fminv_f64(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a) {
|
187 | 229 | ret double %res
|
188 | 230 | }
|
189 | 231 |
|
| 232 | +declare half @llvm.aarch64.sve.fadda.nxv8f16(<vscale x 8 x i1>, half, <vscale x 8 x half>) |
| 233 | +declare float @llvm.aarch64.sve.fadda.nxv4f32(<vscale x 4 x i1>, float, <vscale x 4 x float>) |
| 234 | +declare double @llvm.aarch64.sve.fadda.nxv2f64(<vscale x 2 x i1>, double, <vscale x 2 x double>) |
| 235 | + |
190 | 236 | declare half @llvm.aarch64.sve.faddv.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>)
|
191 | 237 | declare float @llvm.aarch64.sve.faddv.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>)
|
192 | 238 | declare double @llvm.aarch64.sve.faddv.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>)
|
|
0 commit comments