brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · ef4fdcd Raw
82 lines · plain
1; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_35 | FileCheck %s2; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_35 | %ptxas-verify %}3 4; 64-bit divides and rems should be split into a fast and slow path where5; the fast path uses a 32-bit operation.6 7define void @sdiv64(i64 %a, i64 %b, ptr %retptr) {8; CHECK-LABEL: sdiv64(9; CHECK:        div.s6410; CHECK:        div.u3211; CHECK:        ret12  %d = sdiv i64 %a, %b13  store i64 %d, ptr %retptr14  ret void15}16 17define void @udiv64(i64 %a, i64 %b, ptr %retptr) {18; CHECK-LABEL: udiv64(19; CHECK:        div.u6420; CHECK:        div.u3221; CHECK:        ret22  %d = udiv i64 %a, %b23  store i64 %d, ptr %retptr24  ret void25}26 27define void @srem64(i64 %a, i64 %b, ptr %retptr) {28; CHECK-LABEL: srem64(29; CHECK:        rem.s6430; CHECK:        rem.u3231; CHECK:        ret32  %d = srem i64 %a, %b33  store i64 %d, ptr %retptr34  ret void35}36 37define void @urem64(i64 %a, i64 %b, ptr %retptr) {38; CHECK-LABEL: urem64(39; CHECK:        rem.u6440; CHECK:        rem.u3241; CHECK:        ret42  %d = urem i64 %a, %b43  store i64 %d, ptr %retptr44  ret void45}46 47define void @sdiv32(i32 %a, i32 %b, ptr %retptr) {48; CHECK-LABEL: sdiv32(49; CHECK: div.s3250; CHECK-NOT: div.51  %d = sdiv i32 %a, %b52  store i32 %d, ptr %retptr53  ret void54}55 56define void @udiv32(i32 %a, i32 %b, ptr %retptr) {57; CHECK-LABEL: udiv32(58; CHECK: div.u3259; CHECK-NOT: div.60  %d = udiv i32 %a, %b61  store i32 %d, ptr %retptr62  ret void63}64 65define void @srem32(i32 %a, i32 %b, ptr %retptr) {66; CHECK-LABEL: srem32(67; CHECK: rem.s3268; CHECK-NOT: rem.69  %d = srem i32 %a, %b70  store i32 %d, ptr %retptr71  ret void72}73 74define void @urem32(i32 %a, i32 %b, ptr %retptr) {75; CHECK-LABEL: urem32(76; CHECK: rem.u3277; CHECK-NOT: rem.78  %d = urem i32 %a, %b79  store i32 %d, ptr %retptr80  ret void81}82