R600/SI: Enable a lot of existing tests for VI (squashed commits)
This is a union of these commits:
* R600/SI: Enable more tests for VI which need no changes
* R600/SI: Enable V_BCNT tests for VI
Differences:
- v_bcnt_..._e32 -> _e64
- s_load_dword* inline offset is in bytes instead of dwords
* R600/SI: Enable all tests for VI which use S_LOAD_DWORD
The inline offset is changed from dwords to bytes.
* R600/SI: Enable LDS tests for VI
Differences:
- the s_load_dword inline offset changed from dwords to bytes
- the tests checked very little on CI, so they have been fixed to check all
instructions that "SI" checked
* R600/SI: Enable lshr tests for VI
* R600/SI: Fix divrem64 tests
- "v_lshl_64" was missing "b" before "64"
- added VI-NOT checks
* R600/SI: Enable the SI.tid test for VI
* R600/SI: Enable the frem test for VI
Also, the frem_f64 checking is added for CI-VI.
* R600/SI: Add VI tests for rsq.clamped
llvm-svn: 228830
diff --git a/llvm/test/CodeGen/R600/sdivrem64.ll b/llvm/test/CodeGen/R600/sdivrem64.ll
index 8dc4433..a9b2b7f 100644
--- a/llvm/test/CodeGen/R600/sdivrem64.ll
+++ b/llvm/test/CodeGen/R600/sdivrem64.ll
@@ -1,4 +1,5 @@
-;RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck --check-prefix=SI --check-prefix=FUNC %s
+;RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck --check-prefix=SI --check-prefix=GCN --check-prefix=FUNC %s
+;RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck --check-prefix=VI --check-prefix=GCN --check-prefix=FUNC %s
;RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck --check-prefix=EG --check-prefix=FUNC %s
;FUNC-LABEL: {{^}}test_sdiv:
@@ -35,39 +36,40 @@
;EG: BFE_UINT
;EG: BFE_UINT
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI: v_bfe_u32
-;SI-NOT: v_mad_f32
-;SI-NOT: v_lshr_64
-;SI: s_endpgm
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN: v_bfe_u32
+;GCN-NOT: v_mad_f32
+;SI-NOT: v_lshr_b64
+;VI-NOT: v_lshrrev_b64
+;GCN: s_endpgm
define void @test_sdiv(i64 addrspace(1)* %out, i64 %x, i64 %y) {
%result = sdiv i64 %x, %y
store i64 %result, i64 addrspace(1)* %out
@@ -108,39 +110,40 @@
;EG: BFE_UINT
;EG: AND_INT {{.*}}, 1,
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI: s_bfe_u32
-;SI-NOT: v_mad_f32
-;SI-NOT: v_lshr_64
-;SI: s_endpgm
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN: s_bfe_u32
+;GCN-NOT: v_mad_f32
+;SI-NOT: v_lshr_b64
+;VI-NOT: v_lshrrev_b64
+;GCN: s_endpgm
define void @test_srem(i64 addrspace(1)* %out, i64 %x, i64 %y) {
%result = urem i64 %x, %y
store i64 %result, i64 addrspace(1)* %out
@@ -151,10 +154,11 @@
;EG: RECIP_UINT
;EG-NOT: BFE_UINT
-;SI-NOT: s_bfe_u32
-;SI-NOT: v_mad_f32
-;SI-NOT: v_lshr_64
-;SI: s_endpgm
+;GCN-NOT: s_bfe_u32
+;GCN-NOT: v_mad_f32
+;SI-NOT: v_lshr_b64
+;VI-NOT: v_lshrrev_b64
+;GCN: s_endpgm
define void @test_sdiv3264(i64 addrspace(1)* %out, i64 %x, i64 %y) {
%1 = ashr i64 %x, 33
%2 = ashr i64 %y, 33
@@ -167,10 +171,11 @@
;EG: RECIP_UINT
;EG-NOT: BFE_UINT
-;SI-NOT: s_bfe_u32
-;SI-NOT: v_mad_f32
-;SI-NOT: v_lshr_64
-;SI: s_endpgm
+;GCN-NOT: s_bfe_u32
+;GCN-NOT: v_mad_f32
+;SI-NOT: v_lshr_b64
+;VI-NOT: v_lshrrev_b64
+;GCN: s_endpgm
define void @test_srem3264(i64 addrspace(1)* %out, i64 %x, i64 %y) {
%1 = ashr i64 %x, 33
%2 = ashr i64 %y, 33
@@ -186,10 +191,11 @@
;EG-NOT: RECIP_UINT
;EG-NOT: BFE_UINT
-;SI-NOT: s_bfe_u32
-;SI: v_mad_f32
-;SI-NOT: v_lshr_64
-;SI: s_endpgm
+;GCN-NOT: s_bfe_u32
+;GCN: v_mad_f32
+;SI-NOT: v_lshr_b64
+;VI-NOT: v_lshrrev_b64
+;GCN: s_endpgm
define void @test_sdiv2464(i64 addrspace(1)* %out, i64 %x, i64 %y) {
%1 = ashr i64 %x, 40
%2 = ashr i64 %y, 40
@@ -205,10 +211,11 @@
;EG-NOT: RECIP_UINT
;EG-NOT: BFE_UINT
-;SI-NOT: s_bfe_u32
-;SI: v_mad_f32
-;SI-NOT: v_lshr_64
-;SI: s_endpgm
+;GCN-NOT: s_bfe_u32
+;GCN: v_mad_f32
+;SI-NOT: v_lshr_b64
+;VI-NOT: v_lshrrev_b64
+;GCN: s_endpgm
define void @test_srem2464(i64 addrspace(1)* %out, i64 %x, i64 %y) {
%1 = ashr i64 %x, 40
%2 = ashr i64 %y, 40