[llvm] f287bb8 - [ARM] FP16 bitcast test. NFC

David Green via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 24 04:33:18 PST 2020


Author: David Green
Date: 2020-02-24T12:32:53Z
New Revision: f287bb8cf5e48a22b5d1be47da803f73c5aa8186

URL: https://github.com/llvm/llvm-project/commit/f287bb8cf5e48a22b5d1be47da803f73c5aa8186
DIFF: https://github.com/llvm/llvm-project/commit/f287bb8cf5e48a22b5d1be47da803f73c5aa8186.diff

LOG: [ARM] FP16 bitcast test. NFC

Added: 
    llvm/test/CodeGen/ARM/fp16-bitcast.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/ARM/fp16-bitcast.ll b/llvm/test/CodeGen/ARM/fp16-bitcast.ll
new file mode 100644
index 000000000000..450e534d7a51
--- /dev/null
+++ b/llvm/test/CodeGen/ARM/fp16-bitcast.ll
@@ -0,0 +1,60 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -mtriple thumbv8m.main-arm-unknown-eabi -mattr=+vfp4d16sp < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-VFPV4
+; RUN: llc -mtriple thumbv8.1m.main-arm-unknown-eabi -mattr=+fullfp16 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-FP16
+
+target triple = "thumbv8.1m.main-arm-unknown-eabi"
+
+define float @add(float %a, float %b) {
+; CHECK-VFPV4-LABEL: add:
+; CHECK-VFPV4:       @ %bb.0: @ %entry
+; CHECK-VFPV4-NEXT:    vmov s0, r1
+; CHECK-VFPV4-NEXT:    vmov s2, r0
+; CHECK-VFPV4-NEXT:    vadd.f32 s0, s2, s0
+; CHECK-VFPV4-NEXT:    vmov r0, s0
+; CHECK-VFPV4-NEXT:    bx lr
+;
+; CHECK-FP16-LABEL: add:
+; CHECK-FP16:       @ %bb.0: @ %entry
+; CHECK-FP16-NEXT:    .pad #4
+; CHECK-FP16-NEXT:    sub sp, #4
+; CHECK-FP16-NEXT:    vmov s0, r1
+; CHECK-FP16-NEXT:    vmov s2, r0
+; CHECK-FP16-NEXT:    vadd.f32 s0, s2, s0
+; CHECK-FP16-NEXT:    vstr s0, [sp]
+; CHECK-FP16-NEXT:    ldr r0, [sp], #4
+; CHECK-FP16-NEXT:    bx lr
+entry:
+  %add = fadd float %a, %b
+  ret float %add
+}
+
+define i32 @addf16(i32 %a.coerce, i32 %b.coerce) {
+; CHECK-VFPV4-LABEL: addf16:
+; CHECK-VFPV4:       @ %bb.0: @ %entry
+; CHECK-VFPV4-NEXT:    vmov s2, r1
+; CHECK-VFPV4-NEXT:    vmov s0, r0
+; CHECK-VFPV4-NEXT:    vcvtb.f32.f16 s2, s2
+; CHECK-VFPV4-NEXT:    vcvtb.f32.f16 s0, s0
+; CHECK-VFPV4-NEXT:    vadd.f32 s0, s0, s2
+; CHECK-VFPV4-NEXT:    vcvtb.f16.f32 s0, s0
+; CHECK-VFPV4-NEXT:    vmov r0, s0
+; CHECK-VFPV4-NEXT:    uxth r0, r0
+; CHECK-VFPV4-NEXT:    bx lr
+;
+; CHECK-FP16-LABEL: addf16:
+; CHECK-FP16:       @ %bb.0: @ %entry
+; CHECK-FP16-NEXT:    vmov.f16 s0, r1
+; CHECK-FP16-NEXT:    vmov.f16 s2, r0
+; CHECK-FP16-NEXT:    vadd.f16 s0, s2, s0
+; CHECK-FP16-NEXT:    vmov.f16 r0, s0
+; CHECK-FP16-NEXT:    bx lr
+entry:
+  %tmp.0.extract.trunc = trunc i32 %a.coerce to i16
+  %0 = bitcast i16 %tmp.0.extract.trunc to half
+  %tmp1.0.extract.trunc = trunc i32 %b.coerce to i16
+  %1 = bitcast i16 %tmp1.0.extract.trunc to half
+  %add = fadd half %0, %1
+  %2 = bitcast half %add to i16
+  %tmp4.0.insert.ext = zext i16 %2 to i32
+  ret i32 %tmp4.0.insert.ext
+}


        


More information about the llvm-commits mailing list