Skip to content

[AMDGPU] Add illegal type convertion #135729

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Apr 17, 2025

Conversation

Shoreshen
Copy link
Contributor

@Shoreshen Shoreshen commented Apr 15, 2025

Add more bit-convert tests for illegal types conversion

@llvmbot
Copy link
Member

llvmbot commented Apr 15, 2025

@llvm/pr-subscribers-backend-amdgpu

Author: None (Shoreshen)

Changes

Add more bit-convert tests for:

  1. Conversion for illegal types
  2. Inreg (spgr) input and output

Patch is 59.45 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/135729.diff

49 Files Affected:

  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll (+31815-32326)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.128bit.ll (+1248-1269)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.160bit.ll (+1469-5)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.16bit.ll (+9-11)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.192bit.ll (+3045-209)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.224bit.ll (+1762-5)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll (+2595-2606)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.288bit.ll (+2050-5)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.320bit.ll (+7990-3845)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.32bit.ll (+80-86)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.352bit.ll (+2344-1)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.384bit.ll (+4674-282)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.448bit.ll (+5869-229)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.48bit.ll (+29-29)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll (+9799-9824)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.576bit.ll (+13632-76)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.640bit.ll (+15367-82)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.64bit.ll (+444-468)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.704bit.ll (+17100-89)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.768bit.ll (+18939-95)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll (+20912-102)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll (+22810-108)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll (+24898-215)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.96bit.ll (+568-569)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.1024bit.ll (+165047)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.128bit.ll (+12410)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.160bit.ll (+1862)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.16bit.ll (+584)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.192bit.ll (+4596)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.224bit.ll (+2239)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.256bit.ll (+20081)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.288bit.ll (+2690)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.320bit.ll (+17571)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.32bit.ll (+4881)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.352bit.ll (+3045)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.384bit.ll (+7077)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.448bit.ll (+7888)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.48bit.ll (+827)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.512bit.ll (+70234)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.576bit.ll (+45723)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.640bit.ll (+49327)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.64bit.ll (+8278)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.704bit.ll (+50916)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.768bit.ll (+53000)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.832bit.ll (+54870)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.896bit.ll (+59327)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.960bit.ll (+62406)
  • (added) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.inreg.96bit.ll (+6419)
  • (modified) llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.ptr.ll (+1-1)
diff --git a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
index 56edb29281944..3751be86cd82e 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
@@ -1,6 +1,6 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
 
-; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefix=GCN %s
+; RUN: llc -mtriple=amdgcn -mcpu=tahiti < %s | FileCheck -check-prefix=GCN %s
 ; RUN: llc -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=VI %s
 ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9 %s
 ; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX11 %s
@@ -9,10 +9,10 @@ define <32 x float> @bitcast_v32i32_to_v32f32(<32 x i32> %a, i32 %b) {
 ; GCN-LABEL: bitcast_v32i32_to_v32f32:
 ; GCN:       ; %bb.0:
 ; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:4
+; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
+; GCN-NEXT:    s_waitcnt vmcnt(0)
+; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
 ; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32
-; GCN-NEXT:    s_waitcnt vmcnt(1)
-; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v32
 ; GCN-NEXT:    s_and_saveexec_b64 s[4:5], vcc
 ; GCN-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]
 ; GCN-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]
@@ -228,10 +228,10 @@ define <32 x i32> @bitcast_v32f32_to_v32i32(<32 x float> %a, i32 %b) {
 ; GCN-LABEL: bitcast_v32f32_to_v32i32:
 ; GCN:       ; %bb.0:
 ; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:4
+; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
+; GCN-NEXT:    s_waitcnt vmcnt(0)
+; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
 ; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32
-; GCN-NEXT:    s_waitcnt vmcnt(1)
-; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v32
 ; GCN-NEXT:    s_and_saveexec_b64 s[4:5], vcc
 ; GCN-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]
 ; GCN-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]
@@ -431,10 +431,10 @@ define <16 x i64> @bitcast_v32i32_to_v16i64(<32 x i32> %a, i32 %b) {
 ; GCN-LABEL: bitcast_v32i32_to_v16i64:
 ; GCN:       ; %bb.0:
 ; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:4
+; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
+; GCN-NEXT:    s_waitcnt vmcnt(0)
+; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
 ; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32
-; GCN-NEXT:    s_waitcnt vmcnt(1)
-; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v32
 ; GCN-NEXT:    s_and_saveexec_b64 s[4:5], vcc
 ; GCN-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]
 ; GCN-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]
@@ -650,10 +650,10 @@ define <32 x i32> @bitcast_v16i64_to_v32i32(<16 x i64> %a, i32 %b) {
 ; GCN-LABEL: bitcast_v16i64_to_v32i32:
 ; GCN:       ; %bb.0:
 ; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:4
+; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
+; GCN-NEXT:    s_waitcnt vmcnt(0)
+; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
 ; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32
-; GCN-NEXT:    s_waitcnt vmcnt(1)
-; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v32
 ; GCN-NEXT:    s_and_saveexec_b64 s[4:5], vcc
 ; GCN-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]
 ; GCN-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]
@@ -877,10 +877,10 @@ define <16 x double> @bitcast_v32i32_to_v16f64(<32 x i32> %a, i32 %b) {
 ; GCN-LABEL: bitcast_v32i32_to_v16f64:
 ; GCN:       ; %bb.0:
 ; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:4
+; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
+; GCN-NEXT:    s_waitcnt vmcnt(0)
+; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
 ; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32
-; GCN-NEXT:    s_waitcnt vmcnt(1)
-; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v32
 ; GCN-NEXT:    s_and_saveexec_b64 s[4:5], vcc
 ; GCN-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]
 ; GCN-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]
@@ -1096,10 +1096,10 @@ define <32 x i32> @bitcast_v16f64_to_v32i32(<16 x double> %a, i32 %b) {
 ; GCN-LABEL: bitcast_v16f64_to_v32i32:
 ; GCN:       ; %bb.0:
 ; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:4
+; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
+; GCN-NEXT:    s_waitcnt vmcnt(0)
+; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
 ; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32
-; GCN-NEXT:    s_waitcnt vmcnt(1)
-; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v32
 ; GCN-NEXT:    s_and_saveexec_b64 s[4:5], vcc
 ; GCN-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]
 ; GCN-NEXT:    s_andn2_saveexec_b64 s[4:5], s[4:5]
@@ -1267,1190 +1267,1181 @@ define <128 x i8> @bitcast_v32i32_to_v128i8(<32 x i32> %a, i32 %b) {
 ; GCN-NEXT:    buffer_store_dword v61, off, s[0:3], s32 offset:20 ; 4-byte Folded Spill
 ; GCN-NEXT:    buffer_store_dword v62, off, s[0:3], s32 offset:16 ; 4-byte Folded Spill
 ; GCN-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill
-; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:8
-; GCN-NEXT:    s_waitcnt expcnt(5)
-; GCN-NEXT:    buffer_load_dword v58, off, s[0:3], s32 offset:4
-; GCN-NEXT:    s_waitcnt expcnt(4)
-; GCN-NEXT:    buffer_load_dword v59, off, s[0:3], s32
-; GCN-NEXT:    s_waitcnt vmcnt(2)
-; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31
-; GCN-NEXT:    ; implicit-def: $vgpr52
+; GCN-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:8
+; GCN-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
+; GCN-NEXT:    buffer_load_dword v32, off, s[0:3], s32
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr45
+; GCN-NEXT:    ; implicit-def: $vgpr43
+; GCN-NEXT:    ; implicit-def: $vgpr41
+; GCN-NEXT:    ; implicit-def: $vgpr35
+; GCN-NEXT:    ; implicit-def: $vgpr34
+; GCN-NEXT:    ; implicit-def: $vgpr55
+; GCN-NEXT:    ; implicit-def: $vgpr53
 ; GCN-NEXT:    ; implicit-def: $vgpr51
-; GCN-NEXT:    ; implicit-def: $vgpr50
-; GCN-NEXT:    ; implicit-def: $vgpr31
 ; GCN-NEXT:    ; implicit-def: $vgpr63
 ; GCN-NEXT:    ; implicit-def: $vgpr62
-; GCN-NEXT:    ; implicit-def: $vgpr49
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
 ; GCN-NEXT:    ; implicit-def: $vgpr61
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
 ; GCN-NEXT:    ; implicit-def: $vgpr48
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
+; GCN-NEXT:    ; implicit-def: $vgpr38
+; GCN-NEXT:    ; implicit-def: $vgpr37
 ; GCN-NEXT:    ; implicit-def: $vgpr60
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr39
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
+; GCN-NEXT:    ; implicit-def: $vgpr59
+; GCN-NEXT:    ; implicit-def: $vgpr58
 ; GCN-NEXT:    ; implicit-def: $vgpr57
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr38
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
 ; GCN-NEXT:    ; implicit-def: $vgpr56
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr37
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
 ; GCN-NEXT:    ; implicit-def: $vgpr47
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr36
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
 ; GCN-NEXT:    ; implicit-def: $vgpr46
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr35
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr45
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr34
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
 ; GCN-NEXT:    ; implicit-def: $vgpr44
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr33
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr43
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
 ; GCN-NEXT:    ; implicit-def: $vgpr42
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr41
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
 ; GCN-NEXT:    ; implicit-def: $vgpr40
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr55
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
 ; GCN-NEXT:    ; implicit-def: $vgpr54
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; kill: killed $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr53
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
-; GCN-NEXT:    ; kill: killed $vgpr32
-; GCN-NEXT:    ; implicit-def: $vgpr32
+; GCN-NEXT:    ; implicit-def: $vgpr52
+; GCN-NEXT:    ; implicit-def: $vgpr50
+; GCN-NEXT:    ; implicit-def: $vgpr49
+; GCN-NEXT:    ; implicit-def: $vgpr39
+; GCN-NEXT:    ; kill: killed $vgpr36
+; GCN-NEXT:    ; implicit-def: $vgpr36
+; GCN-NEXT:    s_waitcnt vmcnt(2)
+; GCN-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v33
+; GCN-NEXT:    ; implicit-def: $vgpr33
 ; GCN-NEXT:    s_and_saveexec_b64 s[4:5], vcc
 ; GCN-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]
 ; GCN-NEXT:    s_cbranch_execz .LBB6_2
 ; GCN-NEXT:  ; %bb.1: ; %cmp.false
 ; GCN-NEXT:    s_waitcnt vmcnt(0)
-; GCN-NEXT:    v_alignbit_b32 v31, v58, v59, 24
-; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
+; GCN-NEXT:    v_alignbit_b32 v33, v31, v32, 24
+; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
 ; GCN-NEXT:    s_waitcnt expcnt(0)
-; GCN-NEXT:    v_alignbit_b32 v31, v58, v59, 16
-; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
+; GCN-NEXT:    v_alignbit_b32 v33, v31, v32, 16
+; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:148 ; 4-byte Folded Spill
 ; GCN-NEXT:    s_waitcnt expcnt(0)
-; GCN-NEXT:    v_alignbit_b32 v31, v58, v59, 8
-; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:312 ; 4-byte Folded Spill
+; GCN-NEXT:    v_alignbit_b32 v33, v31, v32, 8
+; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
 ; GCN-NEXT:    s_waitcnt expcnt(0)
-; GCN-NEXT:    v_alignbit_b32 v31, v30, v29, 24
-; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
+; GCN-NEXT:    v_alignbit_b32 v33, v30, v29, 24
+; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
 ; GCN-NEXT:    s_waitcnt expcnt(0)
-; GCN-NEXT:    v_alignbit_b32 v31, v30, v29, 16
-; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
+; GCN-NEXT:    v_alignbit_b32 v33, v30, v29, 16
+; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
 ; GCN-NEXT:    s_waitcnt expcnt(0)
-; GCN-NEXT:    v_alignbit_b32 v31, v30, v29, 8
-; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:316 ; 4-byte Folded Spill
+; GCN-NEXT:    v_alignbit_b32 v33, v30, v29, 8
+; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
 ; GCN-NEXT:    s_waitcnt expcnt(0)
-; GCN-NEXT:    v_alignbit_b32 v31, v28, v27, 24
-; GCN-NEXT:    buffer_store_dword v31, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
+; GCN-NEXT:    v_alignbit_b32 v33, v28, v27, 24
+; GCN-NEXT:    buffer_store_dword v33, off, s[0:3], s32 ...
[truncated]

@Shoreshen Shoreshen requested a review from arsenm April 15, 2025 02:05
@shiltian
Copy link
Contributor

I'd split this PR into several ones for faster and easier review: 1) those that add -mcpu=tahiti 2) and 3) would be the two you mentioned in the description.

@Shoreshen Shoreshen changed the title add inreg tests, add illegal type convertion [AMDGPU] Add illegal type convertion Apr 16, 2025
@Shoreshen
Copy link
Contributor Author

Shoreshen commented Apr 16, 2025

Hi @shiltian , I updated this PR for only adding illegal type conversion tests. I'll put up the following 2 after this is merged. Thanks

@Shoreshen Shoreshen requested a review from shiltian April 17, 2025 03:03
@Shoreshen Shoreshen merged commit d647d66 into llvm:main Apr 17, 2025
9 of 11 checks passed
var-const pushed a commit to ldionne/llvm-project that referenced this pull request Apr 17, 2025
Add more bit-convert tests for illegal types conversion
Shoreshen added a commit that referenced this pull request May 14, 2025
Add inreg test for sgpr purpose

This is the second PR after
#135729.

To test sgpr inputs and outputs, using inreg cases for bit-conversions

---------

Co-authored-by: Matt Arsenault <[email protected]>
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request May 14, 2025
Add inreg test for sgpr purpose

This is the second PR after
llvm/llvm-project#135729.

To test sgpr inputs and outputs, using inreg cases for bit-conversions

---------

Co-authored-by: Matt Arsenault <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants