brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 43336db Raw
96 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s2 3; DISABLED-CHECK-DAG: OpName [[FNEG:%.+]] "scalar_fneg"4; CHECK-DAG: OpName [[FADD:%.+]] "test_fadd"5; CHECK-DAG: OpName [[FSUB:%.+]] "test_fsub"6; CHECK-DAG: OpName [[FMUL:%.+]] "test_fmul"7; CHECK-DAG: OpName [[FDIV:%.+]] "test_fdiv"8; CHECK-DAG: OpName [[FREM:%.+]] "test_frem"9; CHECK-DAG: OpName [[FMA:%.+]] "test_fma"10 11; CHECK-DAG: [[F32Ty:%.+]] = OpTypeFloat 3212; CHECK-DAG: [[FNTy:%.+]] = OpTypeFunction [[F32Ty]] [[F32Ty]] [[F32Ty]]13 14 15; CHECK:      [[FADD]] = OpFunction [[F32Ty]] None [[FNTy]]16; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[F32Ty]]17; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[F32Ty]]18; CHECK-NEXT: OpLabel19; CHECK-NEXT: [[C:%.+]] = OpFAdd [[F32Ty]] [[A]] [[B]]20;; TODO: OpDecorate checks21; CHECK-NEXT: OpReturnValue [[C]]22; CHECK-NEXT: OpFunctionEnd23define float @test_fadd(float %a, float %b) {24    %c = fadd nnan ninf float %a, %b25    ret float %c26}27 28; CHECK:      [[FSUB]] = OpFunction [[F32Ty]] None [[FNTy]]29; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[F32Ty]]30; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[F32Ty]]31; CHECK-NEXT: OpLabel32; CHECK-NEXT: [[C:%.+]] = OpFSub [[F32Ty]] [[A]] [[B]]33;; TODO: OpDecorate checks34; CHECK-NEXT: OpReturnValue [[C]]35; CHECK-NEXT: OpFunctionEnd36define float @test_fsub(float %a, float %b) {37    %c = fsub fast float %a, %b38    ret float %c39}40 41; CHECK:      [[FMUL]] = OpFunction [[F32Ty]] None [[FNTy]]42; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[F32Ty]]43; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[F32Ty]]44; CHECK-NEXT: OpLabel45; CHECK-NEXT: [[C:%.+]] = OpFMul [[F32Ty]] [[A]] [[B]]46;; TODO: OpDecorate checks]47; CHECK-NEXT: OpReturnValue [[C]]48; CHECK-NEXT: OpFunctionEnd49define float @test_fmul(float %a, float %b) {50    %c = fmul contract float %a, %b51    ret float %c52}53 54; CHECK:      [[FDIV]] = OpFunction [[F32Ty]] None [[FNTy]]55; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[F32Ty]]56; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[F32Ty]]57; CHECK-NEXT: OpLabel58; CHECK-NEXT: [[C:%.+]] = OpFDiv [[F32Ty]] [[A]] [[B]]59;; TODO: OpDecorate checks60; CHECK-NEXT: OpReturnValue [[C]]61; CHECK-NEXT: OpFunctionEnd62define float @test_fdiv(float %a, float %b) {63    %c = fdiv arcp nsz float %a, %b64    ret float %c65}66 67; CHECK:      [[FREM]] = OpFunction [[F32Ty]] None [[FNTy]]68; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[F32Ty]]69; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[F32Ty]]70; CHECK-NEXT: OpLabel71; CHECK-NEXT: [[C:%.+]] = OpFRem [[F32Ty]] [[A]] [[B]]72;; TODO: OpDecorate checks73; CHECK-NEXT: OpReturnValue [[C]]74; CHECK-NEXT: OpFunctionEnd75define float @test_frem(float %a, float %b) {76    %c = frem nsz float %a, %b77    ret float %c78}79 80 81declare float @llvm.fma.f32(float, float, float)82 83; CHECK:      [[FMA]] = OpFunction84; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[F32Ty]]85; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[F32Ty]]86; CHECK-NEXT: [[C:%.+]] = OpFunctionParameter [[F32Ty]]87; CHECK-NEXT: OpLabel88; CHECK-NEXT: [[R:%.+]] = OpExtInst [[F32Ty]] {{%.+}} fma [[A]] [[B]] [[C]]89;; TODO: OpDecorate checks90; CHECK-NEXT: OpReturnValue [[R]]91; CHECK-NEXT: OpFunctionEnd92define float @test_fma(float %a, float %b, float %c) {93    %r = call float @llvm.fma.f32(float %a, float %b, float %c)94    ret float %r95}96