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