1;RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG %s 2 3;EG-LABEL: {{^}}test_udiv: 4;EG: RECIP_UINT 5;EG: LSHL {{.*}}, 1, 6;EG: BFE_UINT 7;EG: BFE_UINT 8;EG: BFE_UINT 9;EG: BFE_UINT 10;EG: BFE_UINT 11;EG: BFE_UINT 12;EG: BFE_UINT 13;EG: BFE_UINT 14;EG: BFE_UINT 15;EG: BFE_UINT 16;EG: BFE_UINT 17;EG: BFE_UINT 18;EG: BFE_UINT 19;EG: BFE_UINT 20;EG: BFE_UINT 21;EG: BFE_UINT 22;EG: BFE_UINT 23;EG: BFE_UINT 24;EG: BFE_UINT 25;EG: BFE_UINT 26;EG: BFE_UINT 27;EG: BFE_UINT 28;EG: BFE_UINT 29;EG: BFE_UINT 30;EG: BFE_UINT 31;EG: BFE_UINT 32;EG: BFE_UINT 33;EG: BFE_UINT 34;EG: BFE_UINT 35;EG: BFE_UINT 36define amdgpu_kernel void @test_udiv(i64 addrspace(1)* %out, i64 %x, i64 %y) { 37 %result = udiv i64 %x, %y 38 store i64 %result, i64 addrspace(1)* %out 39 ret void 40} 41 42;EG-LABEL: {{^}}test_urem: 43;EG: RECIP_UINT 44;EG: BFE_UINT 45;EG: BFE_UINT 46;EG: BFE_UINT 47;EG: BFE_UINT 48;EG: BFE_UINT 49;EG: BFE_UINT 50;EG: BFE_UINT 51;EG: BFE_UINT 52;EG: BFE_UINT 53;EG: BFE_UINT 54;EG: BFE_UINT 55;EG: BFE_UINT 56;EG: BFE_UINT 57;EG: BFE_UINT 58;EG: BFE_UINT 59;EG: BFE_UINT 60;EG: BFE_UINT 61;EG: BFE_UINT 62;EG: BFE_UINT 63;EG: BFE_UINT 64;EG: BFE_UINT 65;EG: BFE_UINT 66;EG: BFE_UINT 67;EG: BFE_UINT 68;EG: BFE_UINT 69;EG: BFE_UINT 70;EG: BFE_UINT 71;EG: BFE_UINT 72;EG: BFE_UINT 73;EG: BFE_UINT 74;EG: AND_INT {{.*}}, 1, 75define amdgpu_kernel void @test_urem(i64 addrspace(1)* %out, i64 %x, i64 %y) { 76 %result = urem i64 %x, %y 77 store i64 %result, i64 addrspace(1)* %out 78 ret void 79} 80 81;EG-LABEL: {{^}}test_udiv3264: 82;EG: RECIP_UINT 83;EG-NOT: BFE_UINT 84define amdgpu_kernel void @test_udiv3264(i64 addrspace(1)* %out, i64 %x, i64 %y) { 85 %1 = lshr i64 %x, 33 86 %2 = lshr i64 %y, 33 87 %result = udiv i64 %1, %2 88 store i64 %result, i64 addrspace(1)* %out 89 ret void 90} 91 92;EG-LABEL: {{^}}test_urem3264: 93;EG: RECIP_UINT 94;EG-NOT: BFE_UINT 95define amdgpu_kernel void @test_urem3264(i64 addrspace(1)* %out, i64 %x, i64 %y) { 96 %1 = lshr i64 %x, 33 97 %2 = lshr i64 %y, 33 98 %result = urem i64 %1, %2 99 store i64 %result, i64 addrspace(1)* %out 100 ret void 101} 102 103;EG-LABEL: {{^}}test_udiv2364: 104;EG: UINT_TO_FLT 105;EG: UINT_TO_FLT 106;EG: FLT_TO_UINT 107;EG-NOT: RECIP_UINT 108;EG-NOT: BFE_UINT 109define amdgpu_kernel void @test_udiv2364(i64 addrspace(1)* %out, i64 %x, i64 %y) { 110 %1 = lshr i64 %x, 41 111 %2 = lshr i64 %y, 41 112 %result = udiv i64 %1, %2 113 store i64 %result, i64 addrspace(1)* %out 114 ret void 115} 116 117;EG-LABEL: {{^}}test_urem2364: 118;EG: UINT_TO_FLT 119;EG: UINT_TO_FLT 120;EG: FLT_TO_UINT 121;EG-NOT: RECIP_UINT 122;EG-NOT: BFE_UINT 123define amdgpu_kernel void @test_urem2364(i64 addrspace(1)* %out, i64 %x, i64 %y) { 124 %1 = lshr i64 %x, 41 125 %2 = lshr i64 %y, 41 126 %result = urem i64 %1, %2 127 store i64 %result, i64 addrspace(1)* %out 128 ret void 129} 130 131;EG-LABEL: {{^}}test_udiv_k: 132define amdgpu_kernel void @test_udiv_k(i64 addrspace(1)* %out, i64 %x) { 133 %result = udiv i64 24, %x 134 store i64 %result, i64 addrspace(1)* %out 135 ret void 136} 137