66 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -O0 -march=nvptx64 -mcpu=sm_20 | FileCheck %s3 4define [2 x i128] @foo(i64 %a, i32 %b) {5; CHECK-LABEL: foo(6; CHECK: {7; CHECK-NEXT: .reg .b32 %r<2>;8; CHECK-NEXT: .reg .b64 %rd<5>;9; CHECK-EMPTY:10; CHECK-NEXT: // %bb.0:11; CHECK-NEXT: ld.param.b32 %r1, [foo_param_1];12; CHECK-NEXT: ld.param.b64 %rd1, [foo_param_0];13; CHECK-NEXT: shr.s64 %rd2, %rd1, 63;14; CHECK-NEXT: cvt.s64.s32 %rd3, %r1;15; CHECK-NEXT: shr.s64 %rd4, %rd3, 63;16; CHECK-NEXT: st.param.v2.b64 [func_retval0], {%rd1, %rd2};17; CHECK-NEXT: st.param.v2.b64 [func_retval0+16], {%rd3, %rd4};18; CHECK-NEXT: ret;19 %1 = sext i64 %a to i12820 %2 = sext i32 %b to i12821 %3 = insertvalue [2 x i128] undef, i128 %1, 022 %4 = insertvalue [2 x i128] %3, i128 %2, 123 24 ret [2 x i128] %425}26 27define [2 x i128] @foo2(ptr byval([2 x i128]) %a) {28; CHECK-LABEL: foo2(29; CHECK: {30; CHECK-NEXT: .reg .b64 %rd<5>;31; CHECK-EMPTY:32; CHECK-NEXT: // %bb.0:33; CHECK-NEXT: ld.param.v2.b64 {%rd1, %rd2}, [foo2_param_0];34; CHECK-NEXT: ld.param.v2.b64 {%rd3, %rd4}, [foo2_param_0+16];35; CHECK-NEXT: st.param.v2.b64 [func_retval0], {%rd1, %rd2};36; CHECK-NEXT: st.param.v2.b64 [func_retval0+16], {%rd3, %rd4};37; CHECK-NEXT: ret;38 %ptr0 = getelementptr [2 x i128], ptr %a, i64 0, i32 039 %1 = load i128, i128* %ptr040 %ptr1 = getelementptr [2 x i128], ptr %a, i64 0, i32 141 %2 = load i128, i128* %ptr142 %3 = insertvalue [2 x i128] undef, i128 %1, 043 %4 = insertvalue [2 x i128] %3, i128 %2, 144 45 ret [2 x i128] %446}47 48define [2 x i128] @foo3([2 x i128] %a) {49; CHECK-LABEL: foo3(50; CHECK: {51; CHECK-NEXT: .reg .b64 %rd<5>;52; CHECK-EMPTY:53; CHECK-NEXT: // %bb.0:54; CHECK-NEXT: ld.param.v2.b64 {%rd3, %rd4}, [foo3_param_0+16];55; CHECK-NEXT: ld.param.v2.b64 {%rd1, %rd2}, [foo3_param_0];56; CHECK-NEXT: st.param.v2.b64 [func_retval0], {%rd1, %rd2};57; CHECK-NEXT: st.param.v2.b64 [func_retval0+16], {%rd3, %rd4};58; CHECK-NEXT: ret;59 %1 = extractvalue [2 x i128] %a, 060 %2 = extractvalue [2 x i128] %a, 161 %3 = insertvalue [2 x i128] undef, i128 %1, 062 %4 = insertvalue [2 x i128] %3, i128 %2, 163 64 ret [2 x i128] %465}66