1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/test/CodeGen/SystemZ/fp-const-12.ll
Jonas Paulsson bd7c60edbb [SystemZ] Bugfix in SystemZVectorConstantInfo
In order to correctly load an all-ones FP NaN value into a floating point
register with a VGBM, the analyzed 32/64 FP bits must first be shifted left
(into element 0 of the vector register).

SystemZVectorConstantInfo has so far relied on element replication which has
bypassed the need to do this shift, but now it is clear that this must be
done in order to handle NaNs.

Review: Ulrich Weigand

Differential Revision: https://reviews.llvm.org/D89389
2020-10-14 15:34:40 +02:00

76 lines
1.1 KiB
LLVM

; Test loads of FP constants with VGM and VGBM.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
define double @f1() {
; CHECK-LABEL: f1:
; CHECK: vgmg %v0, 2, 11
ret double 1.0
}
define double @f2() {
; CHECK-LABEL: f2:
; CHECK: vgmg %v0, 1, 1
ret double 2.0
}
define double @f3() {
; CHECK-LABEL: f3:
; CHECK: vgmg %v0, 0, 1
ret double -2.0
}
define double @f4() {
; CHECK-LABEL: f4:
; CHECK: vgmg %v0, 2, 10
ret double 0.5
}
define double @f5() {
; CHECK-LABEL: f5:
; CHECK: vgmg %v0, 2, 9
ret double 0.125
}
define float @f6() {
; CHECK-LABEL: f6:
; CHECK: vgmf %v0, 2, 8
ret float 1.0
}
define float @f7() {
; CHECK-LABEL: f7:
; CHECK: vgmf %v0, 1, 1
ret float 2.0
}
define float @f8() {
; CHECK-LABEL: f8:
; CHECK: vgmf %v0, 0, 1
ret float -2.0
}
define float @f9() {
; CHECK-LABEL: f9:
; CHECK: vgmf %v0, 2, 7
ret float 0.5
}
define float @f10() {
; CHECK-LABEL: f10:
; CHECK: vgmf %v0, 2, 6
ret float 0.125
}
define float @f11() {
; CHECK-LABEL: f11:
; CHECK: vgbm %v0, 61440
ret float 0xFFFFFFFFE0000000
}
define double @f12() {
; CHECK-LABEL: f12:
; CHECK: vgbm %v0, 61440
ret double 0xFFFFFFFF00000000
}