Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / NVPTX / shift-parts.ll
blob2eadad27438d3fd76fe73b5ffb5eb5d1b828133e
1 ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s
2 ; RUN: %if ptxas %{ llc < %s -march=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
4 ; CHECK: shift_parts_left_128
5 define void @shift_parts_left_128(ptr %val, ptr %amtptr) {
6 ; CHECK: shl.b64
7 ; CHECK: mov.b32
8 ; CHECK: sub.s32
9 ; CHECK: shr.u64
10 ; CHECK: or.b64
11 ; CHECK: add.s32
12 ; CHECK: shl.b64
13 ; CHECK: setp.gt.s32
14 ; CHECK: selp.b64
15 ; CHECK: shl.b64
16   %amt = load i128, ptr %amtptr
17   %a = load i128, ptr %val
18   %val0 = shl i128 %a, %amt
19   store i128 %val0, ptr %val
20   ret void
23 ; CHECK: shift_parts_right_128
24 define void @shift_parts_right_128(ptr %val, ptr %amtptr) {
25 ; CHECK: shr.u64
26 ; CHECK: sub.s32
27 ; CHECK: shl.b64
28 ; CHECK: or.b64
29 ; CHECK: add.s32
30 ; CHECK: shr.s64
31 ; CHECK: setp.gt.s32
32 ; CHECK: selp.b64
33 ; CHECK: shr.s64
34   %amt = load i128, ptr %amtptr
35   %a = load i128, ptr %val
36   %val0 = ashr i128 %a, %amt
37   store i128 %val0, ptr %val
38   ret void