SjoerdMeijer added a comment.

I know very little about SPIR, and Initially didn't understand this:

> The SPIR target currently allows for half precision floating point types to 
> use the LLVM intrinsic functions to convert to floats and doubles. This is 
> illegal in SPIR as the only intrinsic allowed by SPIR is memcpy ...

until I looked at the implementation what you're trying to achieve here. 
Perhaps you can make the commit message a bit more descriptive and specific.



================
Comment at: lib/Basic/Targets/SPIR.h:50
     UseAddrSpaceMapMangling = true;
+    HasLegalHalfType = true;
     // Define available target features
----------------
It doesn't hurt to set this, but you're not using it so you could omit it. I 
had to introduce this to deal differently with half types depending on 
architecture extensions, but don't you think have this problem.


================
Comment at: lib/Basic/Targets/SPIR.h:65
+  // memcpy as per section 3 of the SPIR spec.
+  bool useFP16ConversionIntrinsics() const override { return false; }
+
----------------
just a note: this is the only functional change, but you're testing a lot more 
in test/CodeGen/spir-half-type.cpp


================
Comment at: test/CodeGen/spir-half-type.cpp:3
+// RUN: %clang_cc1 -O0 -triple spir64 -emit-llvm %s -o - | FileCheck %s
+
+// This file tests that using the _Float16 type with the spir target will not 
use the llvm intrinsics but instead will use the half arithmetic instructions 
directly.
----------------
I think you need one reproducer to test:

// CHECK-NOT: llvm.convert.from.fp16

The other tests, like all the compares are valid tests, but not related to this 
change, and also not specific to SPIR. I put my _Float16 "smoke tests" in 
test/CodeGenCXX/float16-declarations.cpp, perhaps you can move some of these 
generic tests there because I for example see I didn't add any compares there. 


================
Comment at: test/CodeGen/spir-half-type.cpp:4
+
+// This file tests that using the _Float16 type with the spir target will not 
use the llvm intrinsics but instead will use the half arithmetic instructions 
directly.
+
----------------
nit: this comment exceeds 80 columns, same for the other comment below.


Repository:
  rC Clang

https://reviews.llvm.org/D48188



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to