1; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
2
3; CHECK: shift_parts_left_128
4define void @shift_parts_left_128(i128* %val, i128* %amtptr) {
5; CHECK: shl.b64
6; CHECK: mov.u32
7; CHECK: sub.s32
8; CHECK: shr.u64
9; CHECK: or.b64
10; CHECK: add.s32
11; CHECK: shl.b64
12; CHECK: setp.gt.s32
13; CHECK: selp.b64
14; CHECK: shl.b64
15  %amt = load i128* %amtptr
16  %a = load i128* %val
17  %val0 = shl i128 %a, %amt
18  store i128 %val0, i128* %val
19  ret void
20}
21
22; CHECK: shift_parts_right_128
23define void @shift_parts_right_128(i128* %val, i128* %amtptr) {
24; CHECK: shr.u64
25; CHECK: sub.s32
26; CHECK: shl.b64
27; CHECK: or.b64
28; CHECK: add.s32
29; CHECK: shr.s64
30; CHECK: setp.gt.s32
31; CHECK: selp.b64
32; CHECK: shr.s64
33  %amt = load i128* %amtptr
34  %a = load i128* %val
35  %val0 = ashr i128 %a, %amt
36  store i128 %val0, i128* %val
37  ret void
38}
39