OSDN Git Service

AMDGPU: Use getTargetConstant
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 17 Jul 2019 15:35:36 +0000 (15:35 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 17 Jul 2019 15:35:36 +0000 (15:35 +0000)
Avoids creating an extra intermediate mov.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@366340 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
test/CodeGen/AMDGPU/shift-i128.ll

index 9af01a7..ea73053 100644 (file)
@@ -620,10 +620,10 @@ MachineSDNode *AMDGPUDAGToDAGISel::buildSMovImm64(SDLoc &DL, uint64_t Imm,
                                                   EVT VT) const {
   SDNode *Lo = CurDAG->getMachineNode(
       AMDGPU::S_MOV_B32, DL, MVT::i32,
-      CurDAG->getConstant(Imm & 0xFFFFFFFF, DL, MVT::i32));
+      CurDAG->getTargetConstant(Imm & 0xFFFFFFFF, DL, MVT::i32));
   SDNode *Hi =
       CurDAG->getMachineNode(AMDGPU::S_MOV_B32, DL, MVT::i32,
-                             CurDAG->getConstant(Imm >> 32, DL, MVT::i32));
+                             CurDAG->getTargetConstant(Imm >> 32, DL, MVT::i32));
   const SDValue Ops[] = {
       CurDAG->getTargetConstant(AMDGPU::SReg_64RegClassID, DL, MVT::i32),
       SDValue(Lo, 0), CurDAG->getTargetConstant(AMDGPU::sub0, DL, MVT::i32),
index dbf2da6..9fb3ede 100644 (file)
@@ -147,13 +147,13 @@ define i128 @v_lshr_i128_kv(i128 %rhs) {
 ; GCN-LABEL: v_lshr_i128_kv:
 ; GCN:       ; %bb.0:
 ; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GCN-NEXT:    s_mov_b32 s5, 0
-; GCN-NEXT:    s_movk_i32 s4, 0x41
-; GCN-NEXT:    v_lshr_b64 v[2:3], s[4:5], v0
+; GCN-NEXT:    s_mov_b32 s7, 0
+; GCN-NEXT:    s_movk_i32 s6, 0x41
+; GCN-NEXT:    v_lshr_b64 v[2:3], s[6:7], v0
 ; GCN-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v0
 ; GCN-NEXT:    v_cmp_ne_u32_e64 s[4:5], 0, v0
 ; GCN-NEXT:    v_cndmask_b32_e32 v0, 0, v2, vcc
-; GCN-NEXT:    v_mov_b32_e32 v2, 0x41
+; GCN-NEXT:    v_mov_b32_e32 v2, s6
 ; GCN-NEXT:    v_cndmask_b32_e32 v1, 0, v3, vcc
 ; GCN-NEXT:    v_cndmask_b32_e64 v0, v2, v0, s[4:5]
 ; GCN-NEXT:    v_mov_b32_e32 v2, 0