Skip to content
This repository was archived by the owner on Sep 2, 2018. It is now read-only.

Commit a66e032

Browse files
committed
[AMDGPU] Expand vector mulhu/mulhs
Differential revision: https://reviews.llvm.org/D26077 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@285684 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 790687f commit a66e032

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

lib/Target/AMDGPU/AMDGPUISelLowering.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,8 @@ AMDGPUTargetLowering::AMDGPUTargetLowering(const TargetMachine &TM,
359359
setOperationAction(ISD::FP_TO_SINT, VT, Expand);
360360
setOperationAction(ISD::FP_TO_UINT, VT, Expand);
361361
setOperationAction(ISD::MUL, VT, Expand);
362+
setOperationAction(ISD::MULHU, VT, Expand);
363+
setOperationAction(ISD::MULHS, VT, Expand);
362364
setOperationAction(ISD::OR, VT, Expand);
363365
setOperationAction(ISD::SHL, VT, Expand);
364366
setOperationAction(ISD::SRA, VT, Expand);

test/CodeGen/AMDGPU/sdiv.ll

+13
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,16 @@ define void @v_sdiv_i25(i32 addrspace(1)* %out, i25 addrspace(1)* %in) {
156156
; store i64 %result, i64 addrspace(1)* %out, align 8
157157
; ret void
158158
; }
159+
160+
; FUNC-LABEL: @scalarize_mulhs_4xi32
161+
; SI: v_mul_hi_i32
162+
; SI: v_mul_hi_i32
163+
; SI: v_mul_hi_i32
164+
; SI: v_mul_hi_i32
165+
166+
define void @scalarize_mulhs_4xi32(<4 x i32> addrspace(1)* nocapture readonly %in, <4 x i32> addrspace(1)* nocapture %out) {
167+
%1 = load <4 x i32>, <4 x i32> addrspace(1)* %in, align 16
168+
%2 = sdiv <4 x i32> %1, <i32 53668, i32 53668, i32 53668, i32 53668>
169+
store <4 x i32> %2, <4 x i32> addrspace(1)* %out, align 16
170+
ret void
171+
}

test/CodeGen/AMDGPU/udiv.ll

+13
Original file line numberDiff line numberDiff line change
@@ -145,3 +145,16 @@ define void @v_udiv_i24(i32 addrspace(1)* %out, i24 addrspace(1)* %in) {
145145
store i32 %result.ext, i32 addrspace(1)* %out
146146
ret void
147147
}
148+
149+
; FUNC-LABEL: @scalarize_mulhu_4xi32
150+
; SI: v_mul_hi_u32
151+
; SI: v_mul_hi_u32
152+
; SI: v_mul_hi_u32
153+
; SI: v_mul_hi_u32
154+
155+
define void @scalarize_mulhu_4xi32(<4 x i32> addrspace(1)* nocapture readonly %in, <4 x i32> addrspace(1)* nocapture %out) {
156+
%1 = load <4 x i32>, <4 x i32> addrspace(1)* %in, align 16
157+
%2 = udiv <4 x i32> %1, <i32 53668, i32 53668, i32 53668, i32 53668>
158+
store <4 x i32> %2, <4 x i32> addrspace(1)* %out, align 16
159+
ret void
160+
}

0 commit comments

Comments
 (0)