1; RUN: llvm-as %s -o %t.bc 2; RUN: llvm-spirv -spirv-text %t.bc -o - | FileCheck %s --check-prefix=CHECK-SPIRV 3; RUN: llvm-spirv %t.bc -o %t.spv 4; RUN: spirv-val %t.spv 5; RUN: llvm-spirv -r %t.spv -o - | llvm-dis -o - | FileCheck %s --check-prefix=CHECK-LLVM 6 7; CHECK-SPIRV: 3 Name [[#r1:]] "r1" 8; CHECK-SPIRV: 3 Name [[#r2:]] "r2" 9; CHECK-SPIRV: 3 Name [[#r3:]] "r3" 10; CHECK-SPIRV: 3 Name [[#r4:]] "r4" 11; CHECK-SPIRV: 3 Name [[#r5:]] "r5" 12; CHECK-SPIRV: 3 Name [[#r6:]] "r6" 13; CHECK-SPIRV: 3 Name [[#r7:]] "r7" 14; CHECK-SPIRV-NOT: 4 Decorate [[#r1]] FPFastMathMode 15; CHECK-SPIRV-DAG: 4 Decorate [[#r2]] FPFastMathMode 1 16; CHECK-SPIRV-DAG: 4 Decorate [[#r3]] FPFastMathMode 2 17; CHECK-SPIRV-DAG: 4 Decorate [[#r4]] FPFastMathMode 4 18; CHECK-SPIRV-DAG: 4 Decorate [[#r5]] FPFastMathMode 8 19; CHECK-SPIRV-DAG: 4 Decorate [[#r6]] FPFastMathMode 16 20; CHECK-SPIRV-DAG: 4 Decorate [[#r7]] FPFastMathMode 3 21; CHECK-SPIRV: 3 TypeFloat [[float:[0-9]+]] 32 22; CHECK-SPIRV: 5 FAdd [[float]] [[#r1]] 23; CHECK-SPIRV: 5 FAdd [[float]] [[#r2]] 24; CHECK-SPIRV: 5 FAdd [[float]] [[#r3]] 25; CHECK-SPIRV: 5 FAdd [[float]] [[#r4]] 26; CHECK-SPIRV: 5 FAdd [[float]] [[#r5]] 27; CHECK-SPIRV: 5 FAdd [[float]] [[#r6]] 28; CHECK-SPIRV: 5 FAdd [[float]] [[#r7]] 29 30; CHECK-LLVM: %r1 = fadd float %a, %b 31; CHECK-LLVM: %r2 = fadd nnan float %a, %b 32; CHECK-LLVM: %r3 = fadd ninf float %a, %b 33; CHECK-LLVM: %r4 = fadd nsz float %a, %b 34; CHECK-LLVM: %r5 = fadd arcp float %a, %b 35; CHECK-LLVM: %r6 = fadd fast float %a, %b 36; CHECK-LLVM: %r7 = fadd nnan ninf float %a, %b 37 38target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" 39target triple = "spir-unknown-unknown" 40 41; Function Attrs: nounwind 42define spir_kernel void @testFAdd(float %a, float %b) local_unnamed_addr #0 !kernel_arg_addr_space !2 !kernel_arg_access_qual !3 !kernel_arg_type !4 !kernel_arg_base_type !4 !kernel_arg_type_qual !5 { 43entry: 44 %r1 = fadd float %a, %b 45 %r2 = fadd nnan float %a, %b 46 %r3 = fadd ninf float %a, %b 47 %r4 = fadd nsz float %a, %b 48 %r5 = fadd arcp float %a, %b 49 %r6 = fadd fast float %a, %b 50 %r7 = fadd nnan ninf float %a, %b 51 ret void 52} 53 54attributes #0 = { convergent nounwind writeonly "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } 55 56!llvm.module.flags = !{!0} 57!opencl.ocl.version = !{!1} 58!opencl.spir.version = !{!1} 59 60!0 = !{i32 1, !"wchar_size", i32 4} 61!1 = !{i32 2, i32 0} 62!2 = !{i32 0, i32 0} 63!3 = !{!"none", !"none"} 64!4 = !{!"float", !"float"} 65!5 = !{!"", !""} 66