1 ; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s 2 3 ; CHECK: shift_parts_left_128 4 define 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, i128* %amtptr 16 %a = load i128, 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 23 define 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, i128* %amtptr 34 %a = load i128, i128* %val 35 %val0 = ashr i128 %a, %amt 36 store i128 %val0, i128* %val 37 ret void 38 } 39