[llvm] [SystemZ] Modify tests for constrained rounding functions (PR #116952)
Serge Pavlov via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 20 02:44:50 PST 2024
https://github.com/spavloff created https://github.com/llvm/llvm-project/pull/116952
The existing tests for constrained functions often use constant arguments. If constant evaluation is enhanced, such tests will not check code generation of the tested functions. To avoid it, the tests are modified to use loaded value instead of constants. Now only the tests for rounding functions are changed.
>From 41abc11c947c2bbe310be6c44ee8e4dff023bf8b Mon Sep 17 00:00:00 2001
From: Serge Pavlov <sepavloff at gmail.com>
Date: Wed, 20 Nov 2024 11:39:49 +0700
Subject: [PATCH] [SystemZ] Modify tests for constrained rounding functions
The existing tests for constrained functions often use constant
arguments. If constant evaluation is enhanced, such tests will not check
code generation of the tested functions. To avoid it, the tests are
modified to use loaded value instead of constants. Now only the tests
for rounding functions are changed.
---
.../vector-constrained-fp-intrinsics.ll | 491 +++---------------
1 file changed, 59 insertions(+), 432 deletions(-)
diff --git a/llvm/test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll b/llvm/test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll
index edf818ab95131c..6c0353a9b37ded 100644
--- a/llvm/test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll
+++ b/llvm/test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll
@@ -4156,7 +4156,7 @@ entry:
ret <4 x double> %log2
}
-define <1 x float> @constrained_vector_rint_v1f32() #0 {
+define <1 x float> @constrained_vector_rint_v1f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_rint_v1f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: larl %r1, .LCPI75_0
@@ -4172,14 +4172,15 @@ define <1 x float> @constrained_vector_rint_v1f32() #0 {
; SZ13-NEXT: vlr %v24, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <1 x float>, ptr %a
%rint = call <1 x float> @llvm.experimental.constrained.rint.v1f32(
- <1 x float> <float 42.0>,
+ <1 x float> %b,
metadata !"round.dynamic",
metadata !"fpexcept.strict") #0
ret <1 x float> %rint
}
-define <2 x double> @constrained_vector_rint_v2f64() #0 {
+define <2 x double> @constrained_vector_rint_v2f64(ptr %a) #0 {
; S390X-LABEL: constrained_vector_rint_v2f64:
; S390X: # %bb.0: # %entry
; S390X-NEXT: larl %r1, .LCPI76_0
@@ -4197,14 +4198,15 @@ define <2 x double> @constrained_vector_rint_v2f64() #0 {
; SZ13-NEXT: vfidb %v24, %v0, 0, 0
; SZ13-NEXT: br %r14
entry:
+ %b = load <2 x double>, ptr %a
%rint = call <2 x double> @llvm.experimental.constrained.rint.v2f64(
- <2 x double> <double 42.1, double 42.0>,
+ <2 x double> %b,
metadata !"round.dynamic",
metadata !"fpexcept.strict") #0
ret <2 x double> %rint
}
-define <3 x float> @constrained_vector_rint_v3f32() #0 {
+define <3 x float> @constrained_vector_rint_v3f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_rint_v3f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: larl %r1, .LCPI77_0
@@ -4234,8 +4236,9 @@ define <3 x float> @constrained_vector_rint_v3f32() #0 {
; SZ13-NEXT: vmrhg %v24, %v1, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <3 x float>, ptr %a
%rint = call <3 x float> @llvm.experimental.constrained.rint.v3f32(
- <3 x float> <float 42.0, float 43.0, float 44.0>,
+ <3 x float> %b,
metadata !"round.dynamic",
metadata !"fpexcept.strict") #0
ret <3 x float> %rint
@@ -4274,7 +4277,7 @@ entry:
ret void
}
-define <4 x double> @constrained_vector_rint_v4f64() #0 {
+define <4 x double> @constrained_vector_rint_v4f64(ptr %a) #0 {
; S390X-LABEL: constrained_vector_rint_v4f64:
; S390X: # %bb.0: # %entry
; S390X-NEXT: larl %r1, .LCPI79_0
@@ -4301,15 +4304,15 @@ define <4 x double> @constrained_vector_rint_v4f64() #0 {
; SZ13-NEXT: vfidb %v26, %v0, 0, 0
; SZ13-NEXT: br %r14
entry:
+ %b = load <4 x double>, ptr %a
%rint = call <4 x double> @llvm.experimental.constrained.rint.v4f64(
- <4 x double> <double 42.1, double 42.2,
- double 42.3, double 42.4>,
+ <4 x double> %b,
metadata !"round.dynamic",
metadata !"fpexcept.strict") #0
ret <4 x double> %rint
}
-define <1 x float> @constrained_vector_nearbyint_v1f32() #0 {
+define <1 x float> @constrained_vector_nearbyint_v1f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_nearbyint_v1f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -4331,14 +4334,15 @@ define <1 x float> @constrained_vector_nearbyint_v1f32() #0 {
; SZ13-NEXT: vlr %v24, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <1 x float>, ptr %a
%nearby = call <1 x float> @llvm.experimental.constrained.nearbyint.v1f32(
- <1 x float> <float 42.0>,
+ <1 x float> %b,
metadata !"round.dynamic",
metadata !"fpexcept.strict") #0
ret <1 x float> %nearby
}
-define <2 x double> @constrained_vector_nearbyint_v2f64() #0 {
+define <2 x double> @constrained_vector_nearbyint_v2f64(ptr %a) #0 {
; S390X-LABEL: constrained_vector_nearbyint_v2f64:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -4368,14 +4372,15 @@ define <2 x double> @constrained_vector_nearbyint_v2f64() #0 {
; SZ13-NEXT: vfidb %v24, %v0, 4, 0
; SZ13-NEXT: br %r14
entry:
+ %b = load <2 x double>, ptr %a
%nearby = call <2 x double> @llvm.experimental.constrained.nearbyint.v2f64(
- <2 x double> <double 42.1, double 42.0>,
+ <2 x double> %b,
metadata !"round.dynamic",
metadata !"fpexcept.strict") #0
ret <2 x double> %nearby
}
-define <3 x float> @constrained_vector_nearbyint_v3f32() #0 {
+define <3 x float> @constrained_vector_nearbyint_v3f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_nearbyint_v3f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -4423,8 +4428,9 @@ define <3 x float> @constrained_vector_nearbyint_v3f32() #0 {
; SZ13-NEXT: vmrhg %v24, %v1, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <3 x double>, ptr %a
%nearby = call <3 x float> @llvm.experimental.constrained.nearbyint.v3f32(
- <3 x float> <float 42.0, float 43.0, float 44.0>,
+ <3 x float> %b,
metadata !"round.dynamic",
metadata !"fpexcept.strict") #0
ret <3 x float> %nearby
@@ -4484,7 +4490,7 @@ entry:
ret void
}
-define <4 x double> @constrained_vector_nearbyint_v4f64() #0 {
+define <4 x double> @constrained_vector_nearbyint_v4f64(ptr %a) #0 {
; S390X-LABEL: constrained_vector_nearbyint_v4f64:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -4535,9 +4541,9 @@ define <4 x double> @constrained_vector_nearbyint_v4f64() #0 {
; SZ13-NEXT: vfidb %v26, %v0, 4, 0
; SZ13-NEXT: br %r14
entry:
+ %b = load <4 x double>, ptr %a
%nearby = call <4 x double> @llvm.experimental.constrained.nearbyint.v4f64(
- <4 x double> <double 42.1, double 42.2,
- double 42.3, double 42.4>,
+ <4 x double> %b,
metadata !"round.dynamic",
metadata !"fpexcept.strict") #0
ret <4 x double> %nearby
@@ -5544,7 +5550,7 @@ entry:
ret <4 x double> %result
}
-define <1 x float> @constrained_vector_ceil_v1f32() #0 {
+define <1 x float> @constrained_vector_ceil_v1f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_ceil_v1f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5565,13 +5571,14 @@ define <1 x float> @constrained_vector_ceil_v1f32() #0 {
; SZ13-NEXT: vlr %v24, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <1 x float>, ptr %a
%ceil = call <1 x float> @llvm.experimental.constrained.ceil.v1f32(
<1 x float> <float 1.5>,
metadata !"fpexcept.strict") #0
ret <1 x float> %ceil
}
-define <2 x double> @constrained_vector_ceil_v2f64() #0 {
+define <2 x double> @constrained_vector_ceil_v2f64(ptr %a) #0 {
; S390X-LABEL: constrained_vector_ceil_v2f64:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5601,13 +5608,14 @@ define <2 x double> @constrained_vector_ceil_v2f64() #0 {
; SZ13-NEXT: vfidb %v24, %v0, 4, 6
; SZ13-NEXT: br %r14
entry:
+ %b = load <2 x double>, ptr %a
%ceil = call <2 x double> @llvm.experimental.constrained.ceil.v2f64(
- <2 x double> <double 1.1, double 1.9>,
+ <2 x double> %b,
metadata !"fpexcept.strict") #0
ret <2 x double> %ceil
}
-define <3 x float> @constrained_vector_ceil_v3f32() #0 {
+define <3 x float> @constrained_vector_ceil_v3f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_ceil_v3f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5654,8 +5662,9 @@ define <3 x float> @constrained_vector_ceil_v3f32() #0 {
; SZ13-NEXT: vmrhg %v24, %v1, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <3 x float>, ptr %a
%ceil = call <3 x float> @llvm.experimental.constrained.ceil.v3f32(
- <3 x float> <float 1.5, float 2.5, float 3.5>,
+ <3 x float> %b,
metadata !"fpexcept.strict") #0
ret <3 x float> %ceil
}
@@ -5713,7 +5722,7 @@ entry:
ret void
}
-define <1 x float> @constrained_vector_floor_v1f32() #0 {
+define <1 x float> @constrained_vector_floor_v1f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_floor_v1f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5734,14 +5743,15 @@ define <1 x float> @constrained_vector_floor_v1f32() #0 {
; SZ13-NEXT: vlr %v24, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <1 x float>, ptr %a
%floor = call <1 x float> @llvm.experimental.constrained.floor.v1f32(
- <1 x float> <float 1.5>,
+ <1 x float> %и,
metadata !"fpexcept.strict") #0
ret <1 x float> %floor
}
-define <2 x double> @constrained_vector_floor_v2f64() #0 {
+define <2 x double> @constrained_vector_floor_v2f64(ptr %a) #0 {
; S390X-LABEL: constrained_vector_floor_v2f64:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5771,13 +5781,14 @@ define <2 x double> @constrained_vector_floor_v2f64() #0 {
; SZ13-NEXT: vfidb %v24, %v0, 4, 7
; SZ13-NEXT: br %r14
entry:
+ %b = load <2 x double>, ptr %a
%floor = call <2 x double> @llvm.experimental.constrained.floor.v2f64(
- <2 x double> <double 1.1, double 1.9>,
+ <2 x double> %b,
metadata !"fpexcept.strict") #0
ret <2 x double> %floor
}
-define <3 x float> @constrained_vector_floor_v3f32() #0 {
+define <3 x float> @constrained_vector_floor_v3f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_floor_v3f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5824,8 +5835,9 @@ define <3 x float> @constrained_vector_floor_v3f32() #0 {
; SZ13-NEXT: vmrhg %v24, %v1, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <3 x float>, ptr %a
%floor = call <3 x float> @llvm.experimental.constrained.floor.v3f32(
- <3 x float> <float 1.5, float 2.5, float 3.5>,
+ <3 x float> %b,
metadata !"fpexcept.strict") #0
ret <3 x float> %floor
}
@@ -5883,7 +5895,7 @@ entry:
ret void
}
-define <1 x float> @constrained_vector_round_v1f32() #0 {
+define <1 x float> @constrained_vector_round_v1f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_round_v1f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5904,13 +5916,14 @@ define <1 x float> @constrained_vector_round_v1f32() #0 {
; SZ13-NEXT: vlr %v24, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <1 x float>, ptr %a
%round = call <1 x float> @llvm.experimental.constrained.round.v1f32(
- <1 x float> <float 1.5>,
+ <1 x float> %b,
metadata !"fpexcept.strict") #0
ret <1 x float> %round
}
-define <2 x double> @constrained_vector_round_v2f64() #0 {
+define <2 x double> @constrained_vector_round_v2f64(ptr %a) #0 {
; S390X-LABEL: constrained_vector_round_v2f64:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5940,13 +5953,14 @@ define <2 x double> @constrained_vector_round_v2f64() #0 {
; SZ13-NEXT: vfidb %v24, %v0, 4, 1
; SZ13-NEXT: br %r14
entry:
+ %b = load <2 x double>, ptr %a
%round = call <2 x double> @llvm.experimental.constrained.round.v2f64(
- <2 x double> <double 1.1, double 1.9>,
+ <2 x double> %b,
metadata !"fpexcept.strict") #0
ret <2 x double> %round
}
-define <3 x float> @constrained_vector_round_v3f32() #0 {
+define <3 x float> @constrained_vector_round_v3f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_round_v3f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -5993,8 +6007,9 @@ define <3 x float> @constrained_vector_round_v3f32() #0 {
; SZ13-NEXT: vmrhg %v24, %v1, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <3 x float>, ptr %a
%round = call <3 x float> @llvm.experimental.constrained.round.v3f32(
- <3 x float> <float 1.5, float 2.5, float 3.5>,
+ <3 x float> %b,
metadata !"fpexcept.strict") #0
ret <3 x float> %round
}
@@ -6053,7 +6068,7 @@ entry:
ret void
}
-define <1 x float> @constrained_vector_trunc_v1f32() #0 {
+define <1 x float> @constrained_vector_trunc_v1f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_trunc_v1f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -6074,13 +6089,14 @@ define <1 x float> @constrained_vector_trunc_v1f32() #0 {
; SZ13-NEXT: vlr %v24, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <1 x float>, ptr %a
%trunc = call <1 x float> @llvm.experimental.constrained.trunc.v1f32(
- <1 x float> <float 1.5>,
+ <1 x float> %x,
metadata !"fpexcept.strict") #0
ret <1 x float> %trunc
}
-define <2 x double> @constrained_vector_trunc_v2f64() #0 {
+define <2 x double> @constrained_vector_trunc_v2f64(ptr %a) #0 {
; S390X-LABEL: constrained_vector_trunc_v2f64:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -6110,13 +6126,14 @@ define <2 x double> @constrained_vector_trunc_v2f64() #0 {
; SZ13-NEXT: vfidb %v24, %v0, 4, 5
; SZ13-NEXT: br %r14
entry:
+ %b = load <2 x double>, ptr %a
%trunc = call <2 x double> @llvm.experimental.constrained.trunc.v2f64(
- <2 x double> <double 1.1, double 1.9>,
+ <2 x double> %b,
metadata !"fpexcept.strict") #0
ret <2 x double> %trunc
}
-define <3 x float> @constrained_vector_trunc_v3f32() #0 {
+define <3 x float> @constrained_vector_trunc_v3f32(ptr %a) #0 {
; S390X-LABEL: constrained_vector_trunc_v3f32:
; S390X: # %bb.0: # %entry
; S390X-NEXT: stmg %r14, %r15, 112(%r15)
@@ -6163,8 +6180,9 @@ define <3 x float> @constrained_vector_trunc_v3f32() #0 {
; SZ13-NEXT: vmrhg %v24, %v1, %v0
; SZ13-NEXT: br %r14
entry:
+ %b = load <3 x float>, ptr %a
%trunc = call <3 x float> @llvm.experimental.constrained.trunc.v3f32(
- <3 x float> <float 1.5, float 2.5, float 3.5>,
+ <3 x float> %b,
metadata !"fpexcept.strict") #0
ret <3 x float> %trunc
}
@@ -6539,392 +6557,6 @@ entry:
ret <4 x double> %tan
}
-define <1 x float> @constrained_vector_atan2_v1f32() #0 {
-; S390X-LABEL: constrained_vector_atan2_v1f32:
-; S390X: # %bb.0: # %entry
-; S390X-NEXT: stmg %r14, %r15, 112(%r15)
-; S390X-NEXT: .cfi_offset %r14, -48
-; S390X-NEXT: .cfi_offset %r15, -40
-; S390X-NEXT: aghi %r15, -160
-; S390X-NEXT: .cfi_def_cfa_offset 320
-; S390X-NEXT: larl %r1, .LCPI124_0
-; S390X-NEXT: le %f0, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI124_1
-; S390X-NEXT: le %f2, 0(%r1)
-; S390X-NEXT: brasl %r14, atan2f at PLT
-; S390X-NEXT: lmg %r14, %r15, 272(%r15)
-; S390X-NEXT: br %r14
-;
-; SZ13-LABEL: constrained_vector_atan2_v1f32:
-; SZ13: # %bb.0: # %entry
-; SZ13-NEXT: stmg %r14, %r15, 112(%r15)
-; SZ13-NEXT: .cfi_offset %r14, -48
-; SZ13-NEXT: .cfi_offset %r15, -40
-; SZ13-NEXT: aghi %r15, -160
-; SZ13-NEXT: .cfi_def_cfa_offset 320
-; SZ13-NEXT: larl %r1, .LCPI124_0
-; SZ13-NEXT: lde %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI124_1
-; SZ13-NEXT: lde %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2f at PLT
-; SZ13-NEXT: # kill: def $f0s killed $f0s def $v0
-; SZ13-NEXT: vlr %v24, %v0
-; SZ13-NEXT: lmg %r14, %r15, 272(%r15)
-; SZ13-NEXT: br %r14
-entry:
- %atan2 = call <1 x float> @llvm.experimental.constrained.atan2.v1f32(
- <1 x float> <float 42.0>,
- <1 x float> <float 43.0>,
- metadata !"round.dynamic",
- metadata !"fpexcept.strict") #0
- ret <1 x float> %atan2
-}
-
-define <2 x double> @constrained_vector_atan2_v2f64() #0 {
-; S390X-LABEL: constrained_vector_atan2_v2f64:
-; S390X: # %bb.0: # %entry
-; S390X-NEXT: stmg %r14, %r15, 112(%r15)
-; S390X-NEXT: .cfi_offset %r14, -48
-; S390X-NEXT: .cfi_offset %r15, -40
-; S390X-NEXT: aghi %r15, -168
-; S390X-NEXT: .cfi_def_cfa_offset 328
-; S390X-NEXT: std %f8, 160(%r15) # 8-byte Folded Spill
-; S390X-NEXT: .cfi_offset %f8, -168
-; S390X-NEXT: larl %r1, .LCPI125_0
-; S390X-NEXT: ld %f0, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI125_1
-; S390X-NEXT: ld %f2, 0(%r1)
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: larl %r1, .LCPI125_2
-; S390X-NEXT: ld %f1, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI125_3
-; S390X-NEXT: ld %f2, 0(%r1)
-; S390X-NEXT: ldr %f8, %f0
-; S390X-NEXT: ldr %f0, %f1
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: ldr %f2, %f8
-; S390X-NEXT: ld %f8, 160(%r15) # 8-byte Folded Reload
-; S390X-NEXT: lmg %r14, %r15, 280(%r15)
-; S390X-NEXT: br %r14
-;
-; SZ13-LABEL: constrained_vector_atan2_v2f64:
-; SZ13: # %bb.0: # %entry
-; SZ13-NEXT: stmg %r14, %r15, 112(%r15)
-; SZ13-NEXT: .cfi_offset %r14, -48
-; SZ13-NEXT: .cfi_offset %r15, -40
-; SZ13-NEXT: aghi %r15, -176
-; SZ13-NEXT: .cfi_def_cfa_offset 336
-; SZ13-NEXT: larl %r1, .LCPI125_0
-; SZ13-NEXT: ld %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI125_1
-; SZ13-NEXT: ld %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: larl %r1, .LCPI125_2
-; SZ13-NEXT: # kill: def $f0d killed $f0d def $v0
-; SZ13-NEXT: vst %v0, 160(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: ld %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI125_3
-; SZ13-NEXT: ld %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: vl %v1, 160(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: # kill: def $f0d killed $f0d def $v0
-; SZ13-NEXT: vmrhg %v24, %v0, %v1
-; SZ13-NEXT: lmg %r14, %r15, 288(%r15)
-; SZ13-NEXT: br %r14
-entry:
- %atan2 = call <2 x double> @llvm.experimental.constrained.atan2.v2f64(
- <2 x double> <double 42.0, double 42.1>,
- <2 x double> <double 43.0, double 43.1>,
- metadata !"round.dynamic",
- metadata !"fpexcept.strict") #0
- ret <2 x double> %atan2
-}
-
-define <3 x float> @constrained_vector_atan2_v3f32() #0 {
-; S390X-LABEL: constrained_vector_atan2_v3f32:
-; S390X: # %bb.0: # %entry
-; S390X-NEXT: stmg %r14, %r15, 112(%r15)
-; S390X-NEXT: .cfi_offset %r14, -48
-; S390X-NEXT: .cfi_offset %r15, -40
-; S390X-NEXT: aghi %r15, -176
-; S390X-NEXT: .cfi_def_cfa_offset 336
-; S390X-NEXT: std %f8, 168(%r15) # 8-byte Folded Spill
-; S390X-NEXT: std %f9, 160(%r15) # 8-byte Folded Spill
-; S390X-NEXT: .cfi_offset %f8, -168
-; S390X-NEXT: .cfi_offset %f9, -176
-; S390X-NEXT: larl %r1, .LCPI126_0
-; S390X-NEXT: le %f0, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI126_1
-; S390X-NEXT: le %f2, 0(%r1)
-; S390X-NEXT: brasl %r14, atan2f at PLT
-; S390X-NEXT: larl %r1, .LCPI126_2
-; S390X-NEXT: le %f1, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI126_3
-; S390X-NEXT: le %f2, 0(%r1)
-; S390X-NEXT: ler %f8, %f0
-; S390X-NEXT: ler %f0, %f1
-; S390X-NEXT: brasl %r14, atan2f at PLT
-; S390X-NEXT: larl %r1, .LCPI126_4
-; S390X-NEXT: le %f1, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI126_5
-; S390X-NEXT: le %f2, 0(%r1)
-; S390X-NEXT: ler %f9, %f0
-; S390X-NEXT: ler %f0, %f1
-; S390X-NEXT: brasl %r14, atan2f at PLT
-; S390X-NEXT: ler %f2, %f9
-; S390X-NEXT: ler %f4, %f8
-; S390X-NEXT: ld %f8, 168(%r15) # 8-byte Folded Reload
-; S390X-NEXT: ld %f9, 160(%r15) # 8-byte Folded Reload
-; S390X-NEXT: lmg %r14, %r15, 288(%r15)
-; S390X-NEXT: br %r14
-;
-; SZ13-LABEL: constrained_vector_atan2_v3f32:
-; SZ13: # %bb.0: # %entry
-; SZ13-NEXT: stmg %r14, %r15, 112(%r15)
-; SZ13-NEXT: .cfi_offset %r14, -48
-; SZ13-NEXT: .cfi_offset %r15, -40
-; SZ13-NEXT: aghi %r15, -192
-; SZ13-NEXT: .cfi_def_cfa_offset 352
-; SZ13-NEXT: larl %r1, .LCPI126_0
-; SZ13-NEXT: lde %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI126_1
-; SZ13-NEXT: lde %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2f at PLT
-; SZ13-NEXT: larl %r1, .LCPI126_2
-; SZ13-NEXT: # kill: def $f0s killed $f0s def $v0
-; SZ13-NEXT: vst %v0, 176(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: lde %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI126_3
-; SZ13-NEXT: lde %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2f at PLT
-; SZ13-NEXT: larl %r1, .LCPI126_4
-; SZ13-NEXT: # kill: def $f0s killed $f0s def $v0
-; SZ13-NEXT: vst %v0, 160(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: lde %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI126_5
-; SZ13-NEXT: lde %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2f at PLT
-; SZ13-NEXT: vl %v1, 160(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: # kill: def $f0s killed $f0s def $v0
-; SZ13-NEXT: vmrhf %v0, %v1, %v0
-; SZ13-NEXT: vl %v1, 176(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: vrepf %v1, %v1, 0
-; SZ13-NEXT: vmrhg %v24, %v0, %v1
-; SZ13-NEXT: lmg %r14, %r15, 304(%r15)
-; SZ13-NEXT: br %r14
-entry:
- %atan2 = call <3 x float> @llvm.experimental.constrained.atan2.v3f32(
- <3 x float> <float 42.0, float 43.0, float 44.0>,
- <3 x float> <float 42.125, float 43.25, float 44.375>,
- metadata !"round.dynamic",
- metadata !"fpexcept.strict") #0
- ret <3 x float> %atan2
-}
-
-define void @constrained_vector_atan2_v3f64(ptr %a, ptr %b) #0 {
-; S390X-LABEL: constrained_vector_atan2_v3f64:
-; S390X: # %bb.0: # %entry
-; S390X-NEXT: stmg %r13, %r15, 104(%r15)
-; S390X-NEXT: .cfi_offset %r13, -56
-; S390X-NEXT: .cfi_offset %r14, -48
-; S390X-NEXT: .cfi_offset %r15, -40
-; S390X-NEXT: aghi %r15, -200
-; S390X-NEXT: .cfi_def_cfa_offset 360
-; S390X-NEXT: std %f8, 192(%r15) # 8-byte Folded Spill
-; S390X-NEXT: std %f9, 184(%r15) # 8-byte Folded Spill
-; S390X-NEXT: std %f10, 176(%r15) # 8-byte Folded Spill
-; S390X-NEXT: std %f11, 168(%r15) # 8-byte Folded Spill
-; S390X-NEXT: std %f12, 160(%r15) # 8-byte Folded Spill
-; S390X-NEXT: .cfi_offset %f8, -168
-; S390X-NEXT: .cfi_offset %f9, -176
-; S390X-NEXT: .cfi_offset %f10, -184
-; S390X-NEXT: .cfi_offset %f11, -192
-; S390X-NEXT: .cfi_offset %f12, -200
-; S390X-NEXT: lgr %r13, %r2
-; S390X-NEXT: ld %f8, 0(%r2)
-; S390X-NEXT: ld %f9, 8(%r2)
-; S390X-NEXT: ld %f0, 16(%r2)
-; S390X-NEXT: ld %f10, 0(%r3)
-; S390X-NEXT: ld %f2, 16(%r3)
-; S390X-NEXT: ld %f11, 8(%r3)
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: ldr %f12, %f0
-; S390X-NEXT: ldr %f0, %f9
-; S390X-NEXT: ldr %f2, %f11
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: ldr %f9, %f0
-; S390X-NEXT: ldr %f0, %f8
-; S390X-NEXT: ldr %f2, %f10
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: std %f0, 0(%r13)
-; S390X-NEXT: std %f9, 8(%r13)
-; S390X-NEXT: std %f12, 16(%r13)
-; S390X-NEXT: ld %f8, 192(%r15) # 8-byte Folded Reload
-; S390X-NEXT: ld %f9, 184(%r15) # 8-byte Folded Reload
-; S390X-NEXT: ld %f10, 176(%r15) # 8-byte Folded Reload
-; S390X-NEXT: ld %f11, 168(%r15) # 8-byte Folded Reload
-; S390X-NEXT: ld %f12, 160(%r15) # 8-byte Folded Reload
-; S390X-NEXT: lmg %r13, %r15, 304(%r15)
-; S390X-NEXT: br %r14
-;
-; SZ13-LABEL: constrained_vector_atan2_v3f64:
-; SZ13: # %bb.0: # %entry
-; SZ13-NEXT: stmg %r13, %r15, 104(%r15)
-; SZ13-NEXT: .cfi_offset %r13, -56
-; SZ13-NEXT: .cfi_offset %r14, -48
-; SZ13-NEXT: .cfi_offset %r15, -40
-; SZ13-NEXT: aghi %r15, -224
-; SZ13-NEXT: .cfi_def_cfa_offset 384
-; SZ13-NEXT: std %f8, 216(%r15) # 8-byte Folded Spill
-; SZ13-NEXT: std %f9, 208(%r15) # 8-byte Folded Spill
-; SZ13-NEXT: .cfi_offset %f8, -168
-; SZ13-NEXT: .cfi_offset %f9, -176
-; SZ13-NEXT: vl %v0, 0(%r2), 4
-; SZ13-NEXT: vl %v2, 0(%r3), 4
-; SZ13-NEXT: ld %f8, 16(%r2)
-; SZ13-NEXT: ld %f9, 16(%r3)
-; SZ13-NEXT: lgr %r13, %r2
-; SZ13-NEXT: vst %v0, 176(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: vst %v2, 192(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: # kill: def $f0d killed $f0d killed $v0
-; SZ13-NEXT: # kill: def $f2d killed $f2d killed $v2
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: # kill: def $f0d killed $f0d def $v0
-; SZ13-NEXT: vst %v0, 160(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: vl %v0, 176(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: vl %v1, 192(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: vrepg %v0, %v0, 1
-; SZ13-NEXT: vrepg %v2, %v1, 1
-; SZ13-NEXT: # kill: def $f0d killed $f0d killed $v0
-; SZ13-NEXT: # kill: def $f2d killed $f2d killed $v2
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: vl %v1, 160(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: # kill: def $f0d killed $f0d def $v0
-; SZ13-NEXT: vmrhg %v0, %v1, %v0
-; SZ13-NEXT: vst %v0, 160(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: ldr %f0, %f8
-; SZ13-NEXT: ldr %f2, %f9
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: std %f0, 16(%r13)
-; SZ13-NEXT: vl %v0, 160(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: ld %f8, 216(%r15) # 8-byte Folded Reload
-; SZ13-NEXT: ld %f9, 208(%r15) # 8-byte Folded Reload
-; SZ13-NEXT: vst %v0, 0(%r13), 4
-; SZ13-NEXT: lmg %r13, %r15, 328(%r15)
-; SZ13-NEXT: br %r14
-entry:
- %c = load <3 x double>, ptr %a
- %d = load <3 x double>, ptr %b
- %atan2 = call <3 x double> @llvm.experimental.constrained.atan2.v3f64(
- <3 x double> %c,
- <3 x double> %d,
- metadata !"round.dynamic",
- metadata !"fpexcept.strict") #0
- store <3 x double> %atan2, ptr %a
- ret void
-}
-
-define <4 x double> @constrained_vector_atan2_v4f64() #0 {
-; S390X-LABEL: constrained_vector_atan2_v4f64:
-; S390X: # %bb.0: # %entry
-; S390X-NEXT: stmg %r14, %r15, 112(%r15)
-; S390X-NEXT: .cfi_offset %r14, -48
-; S390X-NEXT: .cfi_offset %r15, -40
-; S390X-NEXT: aghi %r15, -184
-; S390X-NEXT: .cfi_def_cfa_offset 344
-; S390X-NEXT: std %f8, 176(%r15) # 8-byte Folded Spill
-; S390X-NEXT: std %f9, 168(%r15) # 8-byte Folded Spill
-; S390X-NEXT: std %f10, 160(%r15) # 8-byte Folded Spill
-; S390X-NEXT: .cfi_offset %f8, -168
-; S390X-NEXT: .cfi_offset %f9, -176
-; S390X-NEXT: .cfi_offset %f10, -184
-; S390X-NEXT: larl %r1, .LCPI128_0
-; S390X-NEXT: ld %f0, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI128_1
-; S390X-NEXT: ld %f2, 0(%r1)
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: larl %r1, .LCPI128_2
-; S390X-NEXT: ld %f1, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI128_3
-; S390X-NEXT: ld %f2, 0(%r1)
-; S390X-NEXT: ldr %f8, %f0
-; S390X-NEXT: ldr %f0, %f1
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: larl %r1, .LCPI128_4
-; S390X-NEXT: ld %f1, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI128_5
-; S390X-NEXT: ld %f2, 0(%r1)
-; S390X-NEXT: ldr %f9, %f0
-; S390X-NEXT: ldr %f0, %f1
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: larl %r1, .LCPI128_6
-; S390X-NEXT: ld %f1, 0(%r1)
-; S390X-NEXT: larl %r1, .LCPI128_7
-; S390X-NEXT: ld %f2, 0(%r1)
-; S390X-NEXT: ldr %f10, %f0
-; S390X-NEXT: ldr %f0, %f1
-; S390X-NEXT: brasl %r14, atan2 at PLT
-; S390X-NEXT: ldr %f2, %f10
-; S390X-NEXT: ldr %f4, %f9
-; S390X-NEXT: ldr %f6, %f8
-; S390X-NEXT: ld %f8, 176(%r15) # 8-byte Folded Reload
-; S390X-NEXT: ld %f9, 168(%r15) # 8-byte Folded Reload
-; S390X-NEXT: ld %f10, 160(%r15) # 8-byte Folded Reload
-; S390X-NEXT: lmg %r14, %r15, 296(%r15)
-; S390X-NEXT: br %r14
-;
-; SZ13-LABEL: constrained_vector_atan2_v4f64:
-; SZ13: # %bb.0: # %entry
-; SZ13-NEXT: stmg %r14, %r15, 112(%r15)
-; SZ13-NEXT: .cfi_offset %r14, -48
-; SZ13-NEXT: .cfi_offset %r15, -40
-; SZ13-NEXT: aghi %r15, -192
-; SZ13-NEXT: .cfi_def_cfa_offset 352
-; SZ13-NEXT: larl %r1, .LCPI128_0
-; SZ13-NEXT: ld %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI128_1
-; SZ13-NEXT: ld %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: larl %r1, .LCPI128_2
-; SZ13-NEXT: # kill: def $f0d killed $f0d def $v0
-; SZ13-NEXT: vst %v0, 160(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: ld %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI128_3
-; SZ13-NEXT: ld %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: vl %v1, 160(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: # kill: def $f0d killed $f0d def $v0
-; SZ13-NEXT: vmrhg %v0, %v0, %v1
-; SZ13-NEXT: larl %r1, .LCPI128_4
-; SZ13-NEXT: vst %v0, 160(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: ld %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI128_5
-; SZ13-NEXT: ld %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: larl %r1, .LCPI128_6
-; SZ13-NEXT: # kill: def $f0d killed $f0d def $v0
-; SZ13-NEXT: vst %v0, 176(%r15), 3 # 16-byte Folded Spill
-; SZ13-NEXT: ld %f0, 0(%r1)
-; SZ13-NEXT: larl %r1, .LCPI128_7
-; SZ13-NEXT: ld %f2, 0(%r1)
-; SZ13-NEXT: brasl %r14, atan2 at PLT
-; SZ13-NEXT: vl %v1, 176(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: vl %v24, 160(%r15), 3 # 16-byte Folded Reload
-; SZ13-NEXT: # kill: def $f0d killed $f0d def $v0
-; SZ13-NEXT: vmrhg %v26, %v0, %v1
-; SZ13-NEXT: lmg %r14, %r15, 304(%r15)
-; SZ13-NEXT: br %r14
-entry:
- %atan2 = call <4 x double> @llvm.experimental.constrained.atan2.v4f64(
- <4 x double> <double 42.0, double 42.1,
- double 42.2, double 42.3>,
- <4 x double> <double 43.0, double 43.1,
- double 43.2, double 43.3>,
- metadata !"round.dynamic",
- metadata !"fpexcept.strict") #0
- ret <4 x double> %atan2
-}
-
attributes #0 = { strictfp }
declare <2 x double> @llvm.experimental.constrained.fadd.v2f64(<2 x double>, <2 x double>, metadata, metadata)
@@ -6938,7 +6570,6 @@ declare <2 x double> @llvm.experimental.constrained.powi.v2f64(<2 x double>, i32
declare <2 x double> @llvm.experimental.constrained.sin.v2f64(<2 x double>, metadata, metadata)
declare <2 x double> @llvm.experimental.constrained.cos.v2f64(<2 x double>, metadata, metadata)
declare <2 x double> @llvm.experimental.constrained.tan.v2f64(<2 x double>, metadata, metadata)
-declare <2 x double> @llvm.experimental.constrained.atan2.v2f64(<2 x double>, <2 x double>, metadata, metadata)
declare <2 x double> @llvm.experimental.constrained.exp.v2f64(<2 x double>, metadata, metadata)
declare <2 x double> @llvm.experimental.constrained.exp2.v2f64(<2 x double>, metadata, metadata)
declare <2 x double> @llvm.experimental.constrained.log.v2f64(<2 x double>, metadata, metadata)
@@ -6966,7 +6597,6 @@ declare <1 x float> @llvm.experimental.constrained.powi.v1f32(<1 x float>, i32,
declare <1 x float> @llvm.experimental.constrained.sin.v1f32(<1 x float>, metadata, metadata)
declare <1 x float> @llvm.experimental.constrained.cos.v1f32(<1 x float>, metadata, metadata)
declare <1 x float> @llvm.experimental.constrained.tan.v1f32(<1 x float>, metadata, metadata)
-declare <1 x float> @llvm.experimental.constrained.atan2.v1f32(<1 x float>, <1 x float>, metadata, metadata)
declare <1 x float> @llvm.experimental.constrained.exp.v1f32(<1 x float>, metadata, metadata)
declare <1 x float> @llvm.experimental.constrained.exp2.v1f32(<1 x float>, metadata, metadata)
declare <1 x float> @llvm.experimental.constrained.log.v1f32(<1 x float>, metadata, metadata)
@@ -7005,8 +6635,6 @@ declare <3 x float> @llvm.experimental.constrained.cos.v3f32(<3 x float>, metada
declare <3 x double> @llvm.experimental.constrained.cos.v3f64(<3 x double>, metadata, metadata)
declare <3 x float> @llvm.experimental.constrained.tan.v3f32(<3 x float>, metadata, metadata)
declare <3 x double> @llvm.experimental.constrained.tan.v3f64(<3 x double>, metadata, metadata)
-declare <3 x float> @llvm.experimental.constrained.atan2.v3f32(<3 x float>, <3 x float>, metadata, metadata)
-declare <3 x double> @llvm.experimental.constrained.atan2.v3f64(<3 x double>, <3 x double>, metadata, metadata)
declare <3 x float> @llvm.experimental.constrained.exp.v3f32(<3 x float>, metadata, metadata)
declare <3 x double> @llvm.experimental.constrained.exp.v3f64(<3 x double>, metadata, metadata)
declare <3 x float> @llvm.experimental.constrained.exp2.v3f32(<3 x float>, metadata, metadata)
@@ -7047,7 +6675,6 @@ declare <4 x double> @llvm.experimental.constrained.powi.v4f64(<4 x double>, i32
declare <4 x double> @llvm.experimental.constrained.sin.v4f64(<4 x double>, metadata, metadata)
declare <4 x double> @llvm.experimental.constrained.cos.v4f64(<4 x double>, metadata, metadata)
declare <4 x double> @llvm.experimental.constrained.tan.v4f64(<4 x double>, metadata, metadata)
-declare <4 x double> @llvm.experimental.constrained.atan2.v4f64(<4 x double>, <4 x double>, metadata, metadata)
declare <4 x double> @llvm.experimental.constrained.exp.v4f64(<4 x double>, metadata, metadata)
declare <4 x double> @llvm.experimental.constrained.exp2.v4f64(<4 x double>, metadata, metadata)
declare <4 x double> @llvm.experimental.constrained.log.v4f64(<4 x double>, metadata, metadata)
More information about the llvm-commits
mailing list