]> granicus.if.org Git - llvm/commitdiff
AMDGPU/GlobalISel: Legalize s32->s16 G_SITOFP/G_UITOFP
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 13 Sep 2019 04:04:55 +0000 (04:04 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 13 Sep 2019 04:04:55 +0000 (04:04 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371811 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
test/CodeGen/AMDGPU/GlobalISel/legalize-sitofp.mir
test/CodeGen/AMDGPU/GlobalISel/legalize-uitofp.mir

index 565a12be07254caa24d7a605a15f6a81e401d192..0c7ab7ae32e965c3b0763bed8147de266bc14df9 100644 (file)
@@ -416,7 +416,7 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo(const GCNSubtarget &ST_,
     .scalarize(0);
 
   getActionDefinitionsBuilder({G_SITOFP, G_UITOFP})
-    .legalFor({{S32, S32}, {S64, S32}})
+    .legalFor({{S32, S32}, {S64, S32}, {S16, S32}})
     .lowerFor({{S32, S64}})
     .customFor({{S64, S64}})
     .scalarize(0);
index 33a0733a5d2699285441c4bc5318acfba3b863a1..8c4d9d0a69aa6edf33afaabef8e703f1de5120b5 100644 (file)
@@ -141,3 +141,20 @@ body: |
     %1:_(s64) = G_SITOFP %0
     $vgpr0_vgpr1 = COPY %1
 ...
+
+---
+name: test_sitofp_s32_to_s16
+body: |
+  bb.0:
+    liveins: $vgpr0
+
+    ; CHECK-LABEL: name: test_sitofp_s32_to_s16
+    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
+    ; CHECK: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[COPY]](s32)
+    ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16)
+    ; CHECK: $vgpr0 = COPY [[ANYEXT]](s32)
+    %0:_(s32) = COPY $vgpr0
+    %1:_(s16) = G_SITOFP %0
+    %2:_(s32) = G_ANYEXT %1
+    $vgpr0 = COPY %2
+...
index 3573630dffd67b25004f6c1b0a642133e55343e4..2ac828763893dc88c9f7bddbe48775d0dd565c8b 100644 (file)
@@ -110,3 +110,20 @@ body: |
     %1:_(s64) = G_UITOFP %0
     $vgpr0_vgpr1 = COPY %1
 ...
+
+---
+name: test_uitofp_s32_to_s16
+body: |
+  bb.0:
+    liveins: $vgpr0
+
+    ; CHECK-LABEL: name: test_uitofp_s32_to_s16
+    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
+    ; CHECK: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[COPY]](s32)
+    ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)
+    ; CHECK: $vgpr0 = COPY [[ANYEXT]](s32)
+    %0:_(s32) = COPY $vgpr0
+    %1:_(s16) = G_UITOFP %0
+    %2:_(s32) = G_ANYEXT %1
+    $vgpr0 = COPY %2
+...