| ; RUN: llc -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s |
| |
| define half @getConstantFP16() { |
| ret half 0x3ff1340000000000 ; 0x3c4d represented as double. |
| } |
| |
| define float @getConstantFP32() { |
| ret float 0x3fd27c8be0000000 ; 0x3e93e45f represented as double |
| } |
| |
| define double @getConstantFP64() { |
| ret double 0x4f2de42b8c68f3f1 |
| } |
| |
| ;; Capabilities |
| ; CHECK-DAG: OpCapability Float16 |
| ; CHECK-DAG: OpCapability Float64 |
| |
| ; CHECK-NOT: DAG-FENCE |
| |
| ;; Names: |
| ; CHECK-DAG: OpName %[[#GET_FP16:]] "getConstantFP16" |
| ; CHECK-DAG: OpName %[[#GET_FP32:]] "getConstantFP32" |
| ; CHECK-DAG: OpName %[[#GET_FP64:]] "getConstantFP64" |
| |
| ; CHECK-NOT: DAG-FENCE |
| |
| ;; Types and Constants: |
| ;; NOTE: These tests don't actually check the values of the constants because |
| ;; their representation isn't defined for textual output. |
| ;; TODO: Test constant representation using binary output. |
| ; CHECK-DAG: %[[#FP16:]] = OpTypeFloat 16 |
| ; CHECK-DAG: %[[#FP32:]] = OpTypeFloat 32 |
| ; CHECK-DAG: %[[#FP64:]] = OpTypeFloat 64 |
| ; CHECK-DAG: %[[#CST_FP16:]] = OpConstant %[[#FP16]] |
| ; CHECK-DAG: %[[#CST_FP32:]] = OpConstant %[[#FP32]] |
| ; CHECK-DAG: %[[#CST_FP64:]] = OpConstant %[[#FP64]] |
| |
| ; CHECK: %[[#GET_FP16]] = OpFunction %[[#FP16]] |
| ; CHECK: OpReturnValue %[[#CST_FP16]] |
| ; CHECK: OpFunctionEnd |
| |
| ; CHECK: %[[#GET_FP32]] = OpFunction %[[#FP32]] |
| ; CHECK: OpReturnValue %[[#CST_FP32]] |
| ; CHECK: OpFunctionEnd |
| |
| ; CHECK: %[[#GET_FP64]] = OpFunction %[[#FP64]] |
| ; CHECK: OpReturnValue %[[#CST_FP64]] |
| ; CHECK: OpFunctionEnd |