|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 |
| -; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefix=GCN %s |
| 2 | +; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefixes=GCN,SDAG %s |
| 3 | +; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefixes=GCN,GISEL %s |
3 | 4 |
|
4 | 5 | define i32 @range_metadata_sext_i8_signed_range_i32(ptr addrspace(1) %ptr) {
|
5 | 6 | ; GCN-LABEL: range_metadata_sext_i8_signed_range_i32:
|
@@ -43,13 +44,21 @@ define i32 @range_metadata_sext_lower_range_limited_i32(ptr addrspace(1) %ptr) {
|
43 | 44 | }
|
44 | 45 |
|
45 | 46 | define i32 @range_metadata_sext_i8_neg_neg_range_i32(ptr addrspace(1) %ptr) {
|
46 |
| -; GCN-LABEL: range_metadata_sext_i8_neg_neg_range_i32: |
47 |
| -; GCN: ; %bb.0: |
48 |
| -; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
49 |
| -; GCN-NEXT: global_load_dword v0, v[0:1], off glc |
50 |
| -; GCN-NEXT: s_waitcnt vmcnt(0) |
51 |
| -; GCN-NEXT: v_and_b32_e32 v0, 63, v0 |
52 |
| -; GCN-NEXT: s_setpc_b64 s[30:31] |
| 47 | +; SDAG-LABEL: range_metadata_sext_i8_neg_neg_range_i32: |
| 48 | +; SDAG: ; %bb.0: |
| 49 | +; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 50 | +; SDAG-NEXT: global_load_dword v0, v[0:1], off glc |
| 51 | +; SDAG-NEXT: s_waitcnt vmcnt(0) |
| 52 | +; SDAG-NEXT: v_and_b32_e32 v0, 63, v0 |
| 53 | +; SDAG-NEXT: s_setpc_b64 s[30:31] |
| 54 | +; |
| 55 | +; GISEL-LABEL: range_metadata_sext_i8_neg_neg_range_i32: |
| 56 | +; GISEL: ; %bb.0: |
| 57 | +; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 58 | +; GISEL-NEXT: global_load_dword v0, v[0:1], off glc |
| 59 | +; GISEL-NEXT: s_waitcnt vmcnt(0) |
| 60 | +; GISEL-NEXT: v_and_b32_e32 v0, 0x7f, v0 |
| 61 | +; GISEL-NEXT: s_setpc_b64 s[30:31] |
53 | 62 | %val = load volatile i32, ptr addrspace(1) %ptr, align 4, !range !3, !noundef !{}
|
54 | 63 | %shl = shl i32 %val, 25
|
55 | 64 | %ashr = ashr i32 %shl, 25
|
@@ -98,14 +107,23 @@ define i32 @range_metadata_i32_neg1_to_1(ptr addrspace(1) %ptr) {
|
98 | 107 | }
|
99 | 108 |
|
100 | 109 | define i64 @range_metadata_sext_i8_signed_range_i64(ptr addrspace(1) %ptr) {
|
101 |
| -; GCN-LABEL: range_metadata_sext_i8_signed_range_i64: |
102 |
| -; GCN: ; %bb.0: |
103 |
| -; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
104 |
| -; GCN-NEXT: global_load_dwordx2 v[0:1], v[0:1], off glc |
105 |
| -; GCN-NEXT: s_waitcnt vmcnt(0) |
106 |
| -; GCN-NEXT: v_lshlrev_b32_e32 v1, 23, v0 |
107 |
| -; GCN-NEXT: v_ashrrev_i64 v[0:1], 55, v[0:1] |
108 |
| -; GCN-NEXT: s_setpc_b64 s[30:31] |
| 110 | +; SDAG-LABEL: range_metadata_sext_i8_signed_range_i64: |
| 111 | +; SDAG: ; %bb.0: |
| 112 | +; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 113 | +; SDAG-NEXT: global_load_dwordx2 v[0:1], v[0:1], off glc |
| 114 | +; SDAG-NEXT: s_waitcnt vmcnt(0) |
| 115 | +; SDAG-NEXT: v_lshlrev_b32_e32 v1, 23, v0 |
| 116 | +; SDAG-NEXT: v_ashrrev_i64 v[0:1], 55, v[0:1] |
| 117 | +; SDAG-NEXT: s_setpc_b64 s[30:31] |
| 118 | +; |
| 119 | +; GISEL-LABEL: range_metadata_sext_i8_signed_range_i64: |
| 120 | +; GISEL: ; %bb.0: |
| 121 | +; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 122 | +; GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off glc |
| 123 | +; GISEL-NEXT: s_waitcnt vmcnt(0) |
| 124 | +; GISEL-NEXT: v_bfe_i32 v0, v0, 0, 9 |
| 125 | +; GISEL-NEXT: v_ashrrev_i32_e32 v1, 31, v0 |
| 126 | +; GISEL-NEXT: s_setpc_b64 s[30:31] |
109 | 127 | %val = load volatile i64, ptr addrspace(1) %ptr, align 4, !range !7, !noundef !{}
|
110 | 128 | %shl = shl i64 %val, 55
|
111 | 129 | %ashr = ashr i64 %shl, 55
|
|
0 commit comments