Files
clang-p2996/llvm/test/CodeGen/SPIRV/literals.ll
Natalie Chouinard 47a377d5e0 [SPIRV] Fix OpConstant float and double printing
Print OpConstant floats as formatted decimal floating points, with
special case exceptions to print infinity and NaN as hexfloats.

This change follows from the fixes in
https://github.com/llvm/llvm-project/pull/66686 to correct how
constant values are printed generally.

Differential Revision: https://reviews.llvm.org/D159376
2023-09-20 15:26:41 +00:00

37 lines
1.0 KiB
LLVM

; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
; RUN: llc -O0 -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s
; CHECK: %[[#F32:]] = OpTypeFloat 32
; CHECK: %[[#F64:]] = OpTypeFloat 64
define void @main() {
entry:
; CHECK: OpConstant %[[#F32]] 0.5
%f = alloca float, align 4
store float 5.000000e-01, ptr %f, align 4
; CHECK: OpConstant %[[#F64]] 0.5
%d = alloca double, align 8
store double 5.000000e-01, ptr %d, align 8
; CHECK: OpConstant %[[#F32]] 1.0000016166037976e-39
%hexf = alloca float, align 4
store float 0x37D5C73200000000, ptr %hexf, align 4
; CHECK: OpConstant %[[#F32]] 0x1p+128
%inf = alloca float, align 4
store float 0x7FF0000000000000, ptr %inf, align 4
; CHECK: OpConstant %[[#F32]] -0x1p+128
%ninf = alloca float, align 4
store float 0xFFF0000000000000, ptr %ninf, align 4
; CHECK: OpConstant %[[#F32]] 0x1.8p+128
%nan = alloca float, align 4
store float 0x7FF8000000000000, ptr %nan, align 4
ret void
}