brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 74023c4 Raw
180 lines · plain
1; RUN: llc -mtriple=nvptx64 -stop-before=nvptx-proxyreg-erasure < %s 2>&1 \2; RUN: | llc -x mir -mtriple=nvptx64 -start-before=nvptx-proxyreg-erasure 2>&1 \3; RUN:   | FileCheck %s --check-prefix=PTX --check-prefix=PTX-WITH4 5; RUN: llc -mtriple=nvptx64 -stop-before=nvptx-proxyreg-erasure < %s 2>&1 \6; RUN: | llc -x mir -mtriple=nvptx64 -start-after=nvptx-proxyreg-erasure 2>&1 \7; RUN:   | FileCheck %s --check-prefix=PTX --check-prefix=PTX-WITHOUT8 9; Thorough testing of ProxyRegErasure: PTX assembly with and without the pass.10 11declare i1 @callee_i1()12define i1 @check_i1() {13  ; PTX-LABEL: check_i114  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}15  ; PTX-DAG: ld.param.b32 [[LD:%r[0-9]+]], [retval0];16  ; PTX-DAG: } // callseq {{[0-9]+}}17 18  ; PTX-WITHOUT-DAG: mov.b32 [[RES:%r[0-9]+]], [[LD]];19  ; PTX-WITHOUT-DAG: st.param.b32 [func_retval0], [[RES]];20  ; PTX-WITH-DAG: st.param.b32 [func_retval0], [[LD]];21 22  %ret = call i1 @callee_i1()23  ret i1 %ret24}25 26declare i16 @callee_i16()27define  i16 @check_i16() {28  ; PTX-LABEL: check_i1629  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}30  ; PTX-DAG: ld.param.b32 [[LD:%r[0-9]+]], [retval0];31  ; PTX-DAG: } // callseq {{[0-9]+}}32 33  ; PTX-WITHOUT-DAG: mov.b32 [[RES:%r[0-9]+]], [[LD]];34  ; PTX-WITHOUT-DAG: st.param.b32 [func_retval0], [[RES]];35  ; PTX-WITH-DAG: st.param.b32 [func_retval0], [[LD]];36 37  %ret = call i16 @callee_i16()38  ret i16 %ret39}40 41declare i32 @callee_i32()42define  i32 @check_i32() {43  ; PTX-LABEL: check_i3244  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}45  ; PTX-DAG: ld.param.b32 [[LD:%r[0-9]+]], [retval0];46  ; PTX-DAG: } // callseq {{[0-9]+}}47 48  ; PTX-WITHOUT-DAG: mov.b32 [[PROXY:%r[0-9]+]], [[LD]];49  ; PTX-WITHOUT-DAG: st.param.b32 [func_retval0], [[PROXY]];50  ; PTX-WITH-DAG:    st.param.b32 [func_retval0], [[LD]];51 52  %ret = call i32 @callee_i32()53  ret i32 %ret54}55 56declare i64 @callee_i64()57define  i64 @check_i64() {58  ; PTX-LABEL: check_i6459  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}60  ; PTX-DAG: ld.param.b64 [[LD:%rd[0-9]+]], [retval0];61  ; PTX-DAG: } // callseq {{[0-9]+}}62 63  ; PTX-WITHOUT-DAG: mov.b64 [[PROXY:%rd[0-9]+]], [[LD]];64  ; PTX-WITHOUT-DAG: st.param.b64 [func_retval0], [[PROXY]];65  ; PTX-WITH-DAG:    st.param.b64 [func_retval0], [[LD]];66 67  %ret = call i64 @callee_i64()68  ret i64 %ret69}70 71declare i128 @callee_i128()72define  i128 @check_i128() {73  ; PTX-LABEL: check_i12874  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}75  ; PTX-DAG: ld.param.v2.b64 {[[LD0:%rd[0-9]+]], [[LD1:%rd[0-9]+]]}, [retval0];76  ; PTX-DAG: } // callseq {{[0-9]+}}77 78  ; PTX-WITHOUT-DAG: mov.b64 [[PROXY0:%rd[0-9]+]], [[LD0]];79  ; PTX-WITHOUT-DAG: mov.b64 [[PROXY1:%rd[0-9]+]], [[LD1]];80  ; PTX-WITHOUT-DAG: st.param.v2.b64 [func_retval0], {[[PROXY0]], [[PROXY1]]};81  ; PTX-WITH-DAG:    st.param.v2.b64 [func_retval0], {[[LD0]], [[LD1]]};82 83  %ret = call i128 @callee_i128()84  ret i128 %ret85}86 87declare half @callee_f16()88define  half @check_f16() {89  ; PTX-LABEL: check_f1690  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}91  ; PTX-DAG: ld.param.b16 [[LD:%rs[0-9]+]], [retval0];92  ; PTX-DAG: } // callseq {{[0-9]+}}93 94  ; PTX-WITHOUT-DAG: mov.b16 [[PROXY:%rs[0-9]+]], [[LD]];95  ; PTX-WITHOUT-DAG: st.param.b16 [func_retval0], [[PROXY]];96  ; PTX-WITH-DAG:    st.param.b16 [func_retval0], [[LD]];97 98  %ret = call half @callee_f16()99  ret half %ret100}101 102declare float @callee_f32()103define  float @check_f32() {104  ; PTX-LABEL: check_f32105  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}106  ; PTX-DAG: ld.param.b32 [[LD:%r[0-9]+]], [retval0];107  ; PTX-DAG: } // callseq {{[0-9]+}}108 109  ; PTX-WITHOUT-DAG: mov.b32 [[PROXY:%r[0-9]+]], [[LD]];110  ; PTX-WITHOUT-DAG: st.param.b32 [func_retval0], [[PROXY]];111  ; PTX-WITH-DAG:    st.param.b32 [func_retval0], [[LD]];112 113  %ret = call float @callee_f32()114  ret float %ret115}116 117declare double @callee_f64()118define  double @check_f64() {119  ; PTX-LABEL: check_f64120  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}121  ; PTX-DAG: ld.param.b64 [[LD:%rd[0-9]+]], [retval0];122  ; PTX-DAG: } // callseq {{[0-9]+}}123 124  ; PTX-WITHOUT-DAG: mov.b64 [[PROXY:%rd[0-9]+]], [[LD]];125  ; PTX-WITHOUT-DAG: st.param.b64 [func_retval0], [[PROXY]];126  ; PTX-WITH-DAG:    st.param.b64 [func_retval0], [[LD]];127 128  %ret = call double @callee_f64()129  ret double %ret130}131 132declare <4 x i32> @callee_vec_i32()133define  <4 x i32> @check_vec_i32() {134  ; PTX-LABEL: check_vec_i32135  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}136  ; PTX-DAG: ld.param.v4.b32 {[[LD0:%r[0-9]+]], [[LD1:%r[0-9]+]], [[LD2:%r[0-9]+]], [[LD3:%r[0-9]+]]}, [retval0];137  ; PTX-DAG: } // callseq {{[0-9]+}}138 139  ; PTX-WITHOUT-DAG: mov.b32 [[PROXY0:%r[0-9]+]], [[LD0]];140  ; PTX-WITHOUT-DAG: mov.b32 [[PROXY1:%r[0-9]+]], [[LD1]];141  ; PTX-WITHOUT-DAG: mov.b32 [[PROXY2:%r[0-9]+]], [[LD2]];142  ; PTX-WITHOUT-DAG: mov.b32 [[PROXY3:%r[0-9]+]], [[LD3]];143  ; PTX-WITHOUT-DAG: st.param.v4.b32 [func_retval0], {[[PROXY0]], [[PROXY1]], [[PROXY2]], [[PROXY3]]};144  ; PTX-WITH-DAG:    st.param.v4.b32 [func_retval0], {[[LD0]], [[LD1]], [[LD2]], [[LD3]]};145 146  %ret = call <4 x i32> @callee_vec_i32()147  ret <4 x i32> %ret148}149 150declare <2 x half> @callee_vec_f16()151define  <2 x half> @check_vec_f16() {152  ; PTX-LABEL: check_vec_f16153  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}154  ; PTX-DAG: ld.param.b32 [[LD:%r[0-9]+]], [retval0];155  ; PTX-DAG: } // callseq {{[0-9]+}}156 157  ; PTX-WITHOUT-DAG: mov.b32 [[PROXY:%r[0-9]+]], [[LD]];158  ; PTX-WITHOUT-DAG: st.param.b32 [func_retval0], [[PROXY]];159  ; PTX-WITH-DAG:    st.param.b32 [func_retval0], [[LD]];160 161  %ret = call <2 x half> @callee_vec_f16()162  ret <2 x half> %ret163}164 165declare <2 x double> @callee_vec_f64()166define  <2 x double> @check_vec_f64() {167  ; PTX-LABEL: check_vec_f64168  ; PTX-DAG: { // callseq {{[0-9]+}}, {{[0-9]+}}169  ; PTX-DAG: ld.param.v2.b64 {[[LD0:%rd[0-9]+]], [[LD1:%rd[0-9]+]]}, [retval0];170  ; PTX-DAG: } // callseq {{[0-9]+}}171 172  ; PTX-WITHOUT-DAG: mov.b64 [[PROXY0:%rd[0-9]+]], [[LD0]];173  ; PTX-WITHOUT-DAG: mov.b64 [[PROXY1:%rd[0-9]+]], [[LD1]];174  ; PTX-WITHOUT-DAG: st.param.v2.b64 [func_retval0], {[[PROXY0]], [[PROXY1]]};175  ; PTX-WITH-DAG:    st.param.v2.b64 [func_retval0], {[[LD0]], [[LD1]]};176 177  %ret = call <2 x double> @callee_vec_f64()178  ret <2 x double> %ret179}180