brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · 1823b4f Raw
108 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s2 3; CHECK-DAG: OpName [[VECTOR_FNEG:%.+]] "vector_fneg"4; CHECK-DAG: OpName [[VECTOR_FADD:%.+]] "vector_fadd"5; CHECK-DAG: OpName [[VECTOR_FSUB:%.+]] "vector_fsub"6; CHECK-DAG: OpName [[VECTOR_FMUL:%.+]] "vector_fmul"7; CHECK-DAG: OpName [[VECTOR_FDIV:%.+]] "vector_fdiv"8; CHECK-DAG: OpName [[VECTOR_FREM:%.+]] "vector_frem"9;; TODO: add test for OpFMod10 11; CHECK-NOT: DAG-FENCE12 13; CHECK-DAG: [[FP16:%.+]] = OpTypeFloat 1614; CHECK-DAG: [[VECTOR:%.+]] = OpTypeVector [[FP16]]15; CHECK-DAG: [[VECTOR_FN:%.+]] = OpTypeFunction [[VECTOR]] [[VECTOR]] [[VECTOR]]16 17; CHECK-NOT: DAG-FENCE18 19 20;; Test fneg on vector:21define <2 x half> @vector_fneg(<2 x half> %a, <2 x half> %unused) {22    %c = fneg <2 x half> %a23    ret <2 x half> %c24}25 26; CHECK:      [[VECTOR_FNEG]] = OpFunction [[VECTOR]] None [[VECTOR_FN]]27; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[VECTOR]]28; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[VECTOR]]29; CHECK:      OpLabel30; CHECK:      [[C:%.+]] = OpFNegate [[VECTOR]] [[A]]31; CHECK:      OpReturnValue [[C]]32; CHECK-NEXT: OpFunctionEnd33 34 35;; Test fadd on vector:36define <2 x half> @vector_fadd(<2 x half> %a, <2 x half> %b) {37    %c = fadd <2 x half> %a, %b38    ret <2 x half> %c39}40 41; CHECK:      [[VECTOR_FADD]] = OpFunction [[VECTOR]] None [[VECTOR_FN]]42; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[VECTOR]]43; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[VECTOR]]44; CHECK:      OpLabel45; CHECK:      [[C:%.+]] = OpFAdd [[VECTOR]] [[A]] [[B]]46; CHECK:      OpReturnValue [[C]]47; CHECK-NEXT: OpFunctionEnd48 49 50;; Test fsub on vector:51define <2 x half> @vector_fsub(<2 x half> %a, <2 x half> %b) {52    %c = fsub <2 x half> %a, %b53    ret <2 x half> %c54}55 56; CHECK:      [[VECTOR_FSUB]] = OpFunction [[VECTOR]] None [[VECTOR_FN]]57; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[VECTOR]]58; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[VECTOR]]59; CHECK:      OpLabel60; CHECK:      [[C:%.+]] = OpFSub [[VECTOR]] [[A]] [[B]]61; CHECK:      OpReturnValue [[C]]62; CHECK-NEXT: OpFunctionEnd63 64 65;; Test fmul on vector:66define <2 x half> @vector_fmul(<2 x half> %a, <2 x half> %b) {67    %c = fmul <2 x half> %a, %b68    ret <2 x half> %c69}70 71; CHECK:      [[VECTOR_FMUL]] = OpFunction [[VECTOR]] None [[VECTOR_FN]]72; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[VECTOR]]73; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[VECTOR]]74; CHECK:      OpLabel75; CHECK:      [[C:%.+]] = OpFMul [[VECTOR]] [[A]] [[B]]76; CHECK:      OpReturnValue [[C]]77; CHECK-NEXT: OpFunctionEnd78 79 80;; Test fdiv on vector:81define <2 x half> @vector_fdiv(<2 x half> %a, <2 x half> %b) {82    %c = fdiv <2 x half> %a, %b83    ret <2 x half> %c84}85 86; CHECK:      [[VECTOR_FDIV]] = OpFunction [[VECTOR]] None [[VECTOR_FN]]87; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[VECTOR]]88; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[VECTOR]]89; CHECK:      OpLabel90; CHECK:      [[C:%.+]] = OpFDiv [[VECTOR]] [[A]] [[B]]91; CHECK:      OpReturnValue [[C]]92; CHECK-NEXT: OpFunctionEnd93 94 95;; Test frem on vector:96define <2 x half> @vector_frem(<2 x half> %a, <2 x half> %b) {97    %c = frem <2 x half> %a, %b98    ret <2 x half> %c99}100 101; CHECK:      [[VECTOR_FREM]] = OpFunction [[VECTOR]] None [[VECTOR_FN]]102; CHECK-NEXT: [[A:%.+]] = OpFunctionParameter [[VECTOR]]103; CHECK-NEXT: [[B:%.+]] = OpFunctionParameter [[VECTOR]]104; CHECK:      OpLabel105; CHECK:      [[C:%.+]] = OpFRem [[VECTOR]] [[A]] [[B]]106; CHECK:      OpReturnValue [[C]]107; CHECK-NEXT: OpFunctionEnd108