1ccc31278SAlex MacLean; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2ccc31278SAlex MacLean; RUN: llc < %s | FileCheck %s 3ccc31278SAlex MacLean; RUN: %if ptxas %{ llc < %s | %ptxas-verify %} 4ccc31278SAlex MacLean 5ccc31278SAlex MacLeantarget triple = "nvptx64-nvidia-cuda" 6ccc31278SAlex MacLean 7ccc31278SAlex MacLean@out = addrspace(1) global i32 0, align 4 8ccc31278SAlex MacLean 9ccc31278SAlex MacLeandefine void @foo(i32 %i) { 10ccc31278SAlex MacLean; CHECK-LABEL: foo( 11ccc31278SAlex MacLean; CHECK: { 12ccc31278SAlex MacLean; CHECK-NEXT: .reg .pred %p<2>; 13ccc31278SAlex MacLean; CHECK-NEXT: .reg .b32 %r<7>; 14ccc31278SAlex MacLean; CHECK-EMPTY: 15ccc31278SAlex MacLean; CHECK-NEXT: // %bb.0: // %entry 16ccc31278SAlex MacLean; CHECK-NEXT: ld.param.u32 %r2, [foo_param_0]; 17ccc31278SAlex MacLean; CHECK-NEXT: setp.gt.u32 %p1, %r2, 3; 18ccc31278SAlex MacLean; CHECK-NEXT: @%p1 bra $L__BB0_6; 19ccc31278SAlex MacLean; CHECK-NEXT: // %bb.1: // %entry 20ccc31278SAlex MacLean; CHECK-NEXT: $L_brx_0: .branchtargets 21ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_2, 22ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_3, 23ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_4, 24ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_5; 25ccc31278SAlex MacLean; CHECK-NEXT: brx.idx %r2, $L_brx_0; 26ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_2: // %case0 27ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r6, 0; 28ccc31278SAlex MacLean; CHECK-NEXT: st.global.u32 [out], %r6; 29ccc31278SAlex MacLean; CHECK-NEXT: bra.uni $L__BB0_6; 30ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_4: // %case2 31ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r4, 2; 32ccc31278SAlex MacLean; CHECK-NEXT: st.global.u32 [out], %r4; 33ccc31278SAlex MacLean; CHECK-NEXT: bra.uni $L__BB0_6; 34ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_5: // %case3 35ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r3, 3; 36ccc31278SAlex MacLean; CHECK-NEXT: st.global.u32 [out], %r3; 37ccc31278SAlex MacLean; CHECK-NEXT: bra.uni $L__BB0_6; 38ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_3: // %case1 39ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r5, 1; 40ccc31278SAlex MacLean; CHECK-NEXT: st.global.u32 [out], %r5; 41ccc31278SAlex MacLean; CHECK-NEXT: $L__BB0_6: // %end 42ccc31278SAlex MacLean; CHECK-NEXT: ret; 43ccc31278SAlex MacLeanentry: 44ccc31278SAlex MacLean switch i32 %i, label %end [ 45ccc31278SAlex MacLean i32 0, label %case0 46ccc31278SAlex MacLean i32 1, label %case1 47ccc31278SAlex MacLean i32 2, label %case2 48ccc31278SAlex MacLean i32 3, label %case3 49ccc31278SAlex MacLean ] 50ccc31278SAlex MacLean 51ccc31278SAlex MacLeancase0: 52ccc31278SAlex MacLean store i32 0, ptr addrspace(1) @out, align 4 53ccc31278SAlex MacLean br label %end 54ccc31278SAlex MacLean 55ccc31278SAlex MacLeancase1: 56ccc31278SAlex MacLean store i32 1, ptr addrspace(1) @out, align 4 57ccc31278SAlex MacLean br label %end 58ccc31278SAlex MacLean 59ccc31278SAlex MacLeancase2: 60ccc31278SAlex MacLean store i32 2, ptr addrspace(1) @out, align 4 61ccc31278SAlex MacLean br label %end 62ccc31278SAlex MacLean 63ccc31278SAlex MacLeancase3: 64ccc31278SAlex MacLean store i32 3, ptr addrspace(1) @out, align 4 65ccc31278SAlex MacLean br label %end 66ccc31278SAlex MacLean 67ccc31278SAlex MacLeanend: 68ccc31278SAlex MacLean ret void 69ccc31278SAlex MacLean} 70ccc31278SAlex MacLean 71ccc31278SAlex MacLean 72ccc31278SAlex MacLeandefine i32 @test2(i32 %tmp158) { 73ccc31278SAlex MacLean; CHECK-LABEL: test2( 74ccc31278SAlex MacLean; CHECK: { 75ccc31278SAlex MacLean; CHECK-NEXT: .reg .pred %p<6>; 76ccc31278SAlex MacLean; CHECK-NEXT: .reg .b32 %r<10>; 77ccc31278SAlex MacLean; CHECK-EMPTY: 78ccc31278SAlex MacLean; CHECK-NEXT: // %bb.0: // %entry 79ccc31278SAlex MacLean; CHECK-NEXT: ld.param.u32 %r1, [test2_param_0]; 80ccc31278SAlex MacLean; CHECK-NEXT: setp.gt.s32 %p1, %r1, 119; 81ccc31278SAlex MacLean; CHECK-NEXT: @%p1 bra $L__BB1_4; 82ccc31278SAlex MacLean; CHECK-NEXT: // %bb.1: // %entry 83ccc31278SAlex MacLean; CHECK-NEXT: setp.lt.u32 %p4, %r1, 6; 84ccc31278SAlex MacLean; CHECK-NEXT: @%p4 bra $L__BB1_3; 85ccc31278SAlex MacLean; CHECK-NEXT: // %bb.2: // %entry 86ccc31278SAlex MacLean; CHECK-NEXT: setp.lt.s32 %p5, %r1, -2147483645; 87ccc31278SAlex MacLean; CHECK-NEXT: @%p5 bra $L__BB1_3; 88ccc31278SAlex MacLean; CHECK-NEXT: bra.uni $L__BB1_6; 89ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_4: // %entry 90ccc31278SAlex MacLean; CHECK-NEXT: add.s32 %r2, %r1, -120; 91ccc31278SAlex MacLean; CHECK-NEXT: setp.gt.u32 %p2, %r2, 5; 92ccc31278SAlex MacLean; CHECK-NEXT: @%p2 bra $L__BB1_5; 93ccc31278SAlex MacLean; CHECK-NEXT: // %bb.12: // %entry 94ccc31278SAlex MacLean; CHECK-NEXT: $L_brx_0: .branchtargets 95ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_3, 96ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_7, 97ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_8, 98ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_9, 99ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_10, 100ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_11; 101ccc31278SAlex MacLean; CHECK-NEXT: brx.idx %r2, $L_brx_0; 102ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_7: // %bb339 103ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r7, 12; 104*0f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b32 [func_retval0], %r7; 105ccc31278SAlex MacLean; CHECK-NEXT: ret; 106ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_5: // %entry 107ccc31278SAlex MacLean; CHECK-NEXT: setp.eq.s32 %p3, %r1, 1024; 108ccc31278SAlex MacLean; CHECK-NEXT: @%p3 bra $L__BB1_3; 109ccc31278SAlex MacLean; CHECK-NEXT: bra.uni $L__BB1_6; 110ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_3: // %bb338 111ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r8, 11; 112*0f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b32 [func_retval0], %r8; 113ccc31278SAlex MacLean; CHECK-NEXT: ret; 114ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_10: // %bb342 115ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r4, 15; 116*0f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b32 [func_retval0], %r4; 117ccc31278SAlex MacLean; CHECK-NEXT: ret; 118ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_6: // %bb336 119ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r9, 10; 120*0f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b32 [func_retval0], %r9; 121ccc31278SAlex MacLean; CHECK-NEXT: ret; 122ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_8: // %bb340 123ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r6, 13; 124*0f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b32 [func_retval0], %r6; 125ccc31278SAlex MacLean; CHECK-NEXT: ret; 126ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_9: // %bb341 127ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r5, 14; 128*0f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b32 [func_retval0], %r5; 129ccc31278SAlex MacLean; CHECK-NEXT: ret; 130ccc31278SAlex MacLean; CHECK-NEXT: $L__BB1_11: // %bb343 131ccc31278SAlex MacLean; CHECK-NEXT: mov.b32 %r3, 18; 132*0f0a96b8SYoungsuk Kim; CHECK-NEXT: st.param.b32 [func_retval0], %r3; 133ccc31278SAlex MacLean; CHECK-NEXT: ret; 134ccc31278SAlex MacLeanentry: 135ccc31278SAlex MacLean switch i32 %tmp158, label %bb336 [ 136ccc31278SAlex MacLean i32 -2147483648, label %bb338 137ccc31278SAlex MacLean i32 -2147483647, label %bb338 138ccc31278SAlex MacLean i32 -2147483646, label %bb338 139ccc31278SAlex MacLean i32 120, label %bb338 140ccc31278SAlex MacLean i32 121, label %bb339 141ccc31278SAlex MacLean i32 122, label %bb340 142ccc31278SAlex MacLean i32 123, label %bb341 143ccc31278SAlex MacLean i32 124, label %bb342 144ccc31278SAlex MacLean i32 125, label %bb343 145ccc31278SAlex MacLean i32 126, label %bb336 146ccc31278SAlex MacLean i32 1024, label %bb338 147ccc31278SAlex MacLean i32 0, label %bb338 148ccc31278SAlex MacLean i32 1, label %bb338 149ccc31278SAlex MacLean i32 2, label %bb338 150ccc31278SAlex MacLean i32 3, label %bb338 151ccc31278SAlex MacLean i32 4, label %bb338 152ccc31278SAlex MacLean i32 5, label %bb338 153ccc31278SAlex MacLean ] 154ccc31278SAlex MacLean 155ccc31278SAlex MacLeanbb336: 156ccc31278SAlex MacLean ret i32 10 157ccc31278SAlex MacLeanbb338: 158ccc31278SAlex MacLean ret i32 11 159ccc31278SAlex MacLeanbb339: 160ccc31278SAlex MacLean ret i32 12 161ccc31278SAlex MacLeanbb340: 162ccc31278SAlex MacLean ret i32 13 163ccc31278SAlex MacLeanbb341: 164ccc31278SAlex MacLean ret i32 14 165ccc31278SAlex MacLeanbb342: 166ccc31278SAlex MacLean ret i32 15 167ccc31278SAlex MacLeanbb343: 168ccc31278SAlex MacLean ret i32 18 169ccc31278SAlex MacLean 170ccc31278SAlex MacLean} 171