1;RUN: llc -march=r600 -mcpu=redwood -amdgpu-bypass-slow-div=0 < %s | FileCheck -check-prefix=EG %s 2 3;EG-LABEL: {{^}}s_test_sdiv: 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 @s_test_sdiv(i64 addrspace(1)* %out, i64 %x, i64 %y) { 37 %result = sdiv i64 %x, %y 38 store i64 %result, i64 addrspace(1)* %out 39 ret void 40} 41 42;EG-LABEL: {{^}}s_test_srem: 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 @s_test_srem(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_sdiv3264: 82;EG: RECIP_UINT 83;EG-NOT: BFE_UINT 84define amdgpu_kernel void @test_sdiv3264(i64 addrspace(1)* %out, i64 %x, i64 %y) { 85 %1 = ashr i64 %x, 33 86 %2 = ashr i64 %y, 33 87 %result = sdiv i64 %1, %2 88 store i64 %result, i64 addrspace(1)* %out 89 ret void 90} 91 92;EG-LABEL: {{^}}test_srem3264: 93;EG: RECIP_UINT 94;EG-NOT: BFE_UINT 95define amdgpu_kernel void @test_srem3264(i64 addrspace(1)* %out, i64 %x, i64 %y) { 96 %1 = ashr i64 %x, 33 97 %2 = ashr i64 %y, 33 98 %result = srem i64 %1, %2 99 store i64 %result, i64 addrspace(1)* %out 100 ret void 101} 102 103;EG-LABEL: {{^}}test_sdiv2464: 104;EG: INT_TO_FLT 105;EG: INT_TO_FLT 106;EG: FLT_TO_INT 107;EG-NOT: RECIP_UINT 108;EG-NOT: BFE_UINT 109define amdgpu_kernel void @test_sdiv2464(i64 addrspace(1)* %out, i64 %x, i64 %y) { 110 %1 = ashr i64 %x, 40 111 %2 = ashr i64 %y, 40 112 %result = sdiv i64 %1, %2 113 store i64 %result, i64 addrspace(1)* %out 114 ret void 115} 116 117;EG-LABEL: {{^}}test_srem2464: 118;EG: INT_TO_FLT 119;EG: INT_TO_FLT 120;EG: FLT_TO_INT 121;EG-NOT: RECIP_UINT 122;EG-NOT: BFE_UINT 123define amdgpu_kernel void @test_srem2464(i64 addrspace(1)* %out, i64 %x, i64 %y) { 124 %1 = ashr i64 %x, 40 125 %2 = ashr i64 %y, 40 126 %result = srem i64 %1, %2 127 store i64 %result, i64 addrspace(1)* %out 128 ret void 129} 130