Skip to content

Commit a2fb50e

Browse files
committed
Test more instructions
Signed-off-by: John Lu <[email protected]>
1 parent 1c9d4d3 commit a2fb50e

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

llvm/test/CodeGen/AMDGPU/s_cmp_0.ll

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,57 @@ define amdgpu_ps i32 @lshr64(i64 inreg %val0, i64 inreg %val1) {
6666
ret i32 %zext
6767
}
6868

69+
define amdgpu_ps i32 @ashr32(i32 inreg %val0, i32 inreg %val1) {
70+
; CHECK-LABEL: ashr32:
71+
; CHECK: ; %bb.0:
72+
; CHECK-NEXT: s_ashr_i32 s0, s0, s1
73+
; CHECK-NEXT: s_cmp_lg_u32 s0, 0
74+
; CHECK-NEXT: s_cselect_b64 s[0:1], -1, 0
75+
; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[0:1]
76+
; CHECK-NEXT: v_readfirstlane_b32 s0, v0
77+
; CHECK-NEXT: ; return to shader part epilog
78+
%result = ashr i32 %val0, %val1
79+
%cmp = icmp ne i32 %result, 0
80+
%zext = zext i1 %cmp to i32
81+
ret i32 %zext
82+
}
83+
84+
define amdgpu_ps i32 @ashr64(i64 inreg %val0, i64 inreg %val1) {
85+
; CHECK-LABEL: ashr64:
86+
; CHECK: ; %bb.0:
87+
; CHECK-NEXT: s_ashr_i64 s[0:1], s[0:1], s2
88+
; CHECK-NEXT: s_cmp_lg_u64 s[0:1], 0
89+
; CHECK-NEXT: s_cselect_b64 s[0:1], -1, 0
90+
; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[0:1]
91+
; CHECK-NEXT: v_readfirstlane_b32 s0, v0
92+
; CHECK-NEXT: ; return to shader part epilog
93+
%result = ashr i64 %val0, %val1
94+
%cmp = icmp ne i64 %result, 0
95+
%zext = zext i1 %cmp to i32
96+
ret i32 %zext
97+
}
98+
99+
define amdgpu_ps i32 @abs32(i32 inreg %val0, ptr addrspace(1) %ptr) {
100+
; CHECK-LABEL: abs32:
101+
; CHECK: ; %bb.0:
102+
; CHECK-NEXT: s_abs_i32 s0, s0
103+
; CHECK-NEXT: s_cmp_lg_u32 s0, 0
104+
; CHECK-NEXT: v_mov_b32_e32 v2, s0
105+
; CHECK-NEXT: s_cselect_b64 s[0:1], -1, 0
106+
; CHECK-NEXT: global_store_dword v[0:1], v2, off
107+
; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[0:1]
108+
; CHECK-NEXT: v_readfirstlane_b32 s0, v0
109+
; CHECK-NEXT: s_waitcnt vmcnt(0)
110+
; CHECK-NEXT: ; return to shader part epilog
111+
%neg = sub i32 0, %val0
112+
%cond = icmp sgt i32 %val0, %neg
113+
%result = select i1 %cond, i32 %val0, i32 %neg
114+
store i32 %result, ptr addrspace(1) %ptr
115+
%cmp = icmp ne i32 %result, 0
116+
%zext = zext i1 %cmp to i32
117+
ret i32 %zext
118+
}
119+
69120
define amdgpu_ps i32 @and32(i32 inreg %val0, i32 inreg %val1) {
70121
; CHECK-LABEL: and32:
71122
; CHECK: ; %bb.0:

0 commit comments

Comments
 (0)