@@ -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+
69120define amdgpu_ps i32 @and32 (i32 inreg %val0 , i32 inreg %val1 ) {
70121; CHECK-LABEL: and32:
71122; CHECK: ; %bb.0:
0 commit comments