1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=rv710 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=rv730 | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=rv770 | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=cedar | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s 6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=sumo | FileCheck %s 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=juniper | FileCheck %s 8*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=cypress | FileCheck %s 9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=barts | FileCheck %s 10*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=turks | FileCheck %s 11*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=caicos | FileCheck %s 12*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck %s 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; r700+ supports 16 fetches in a clause 15*9880d681SAndroid Build Coastguard Worker; CHECK: {{^}}fetch_limits_r700: 16*9880d681SAndroid Build Coastguard Worker; CHECK: Fetch clause 17*9880d681SAndroid Build Coastguard Worker; CHECK: Fetch clause 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @fetch_limits_r700() { 20*9880d681SAndroid Build Coastguard Workerentry: 21*9880d681SAndroid Build Coastguard Worker %0 = load <4 x float>, <4 x float> addrspace(8)* null 22*9880d681SAndroid Build Coastguard Worker %1 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 1) 23*9880d681SAndroid Build Coastguard Worker %2 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 2) 24*9880d681SAndroid Build Coastguard Worker %3 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 3) 25*9880d681SAndroid Build Coastguard Worker %4 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 4) 26*9880d681SAndroid Build Coastguard Worker %5 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 5) 27*9880d681SAndroid Build Coastguard Worker %6 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 6) 28*9880d681SAndroid Build Coastguard Worker %7 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 7) 29*9880d681SAndroid Build Coastguard Worker %8 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 8) 30*9880d681SAndroid Build Coastguard Worker %9 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 9) 31*9880d681SAndroid Build Coastguard Worker %10 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 10) 32*9880d681SAndroid Build Coastguard Worker %11 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 11) 33*9880d681SAndroid Build Coastguard Worker %12 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 12) 34*9880d681SAndroid Build Coastguard Worker %13 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 13) 35*9880d681SAndroid Build Coastguard Worker %14 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 14) 36*9880d681SAndroid Build Coastguard Worker %15 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 15) 37*9880d681SAndroid Build Coastguard Worker %16 = load <4 x float>, <4 x float> addrspace(8)* getelementptr ([1024 x <4 x float>], [1024 x <4 x float>] addrspace(8)* null, i64 0, i32 16) 38*9880d681SAndroid Build Coastguard Worker %17 = shufflevector <4 x float> %0, <4 x float> %0, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 39*9880d681SAndroid Build Coastguard Worker %18 = call <4 x float> @llvm.r600.tex(<4 x float> %17, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 40*9880d681SAndroid Build Coastguard Worker %19 = shufflevector <4 x float> %1, <4 x float> %1, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 41*9880d681SAndroid Build Coastguard Worker %20 = call <4 x float> @llvm.r600.tex(<4 x float> %19, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 42*9880d681SAndroid Build Coastguard Worker %21 = shufflevector <4 x float> %2, <4 x float> %2, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 43*9880d681SAndroid Build Coastguard Worker %22 = call <4 x float> @llvm.r600.tex(<4 x float> %21, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 44*9880d681SAndroid Build Coastguard Worker %23 = shufflevector <4 x float> %3, <4 x float> %3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 45*9880d681SAndroid Build Coastguard Worker %24 = call <4 x float> @llvm.r600.tex(<4 x float> %23, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 46*9880d681SAndroid Build Coastguard Worker %25 = shufflevector <4 x float> %4, <4 x float> %4, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 47*9880d681SAndroid Build Coastguard Worker %26 = call <4 x float> @llvm.r600.tex(<4 x float> %25, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 48*9880d681SAndroid Build Coastguard Worker %27 = shufflevector <4 x float> %5, <4 x float> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 49*9880d681SAndroid Build Coastguard Worker %28 = call <4 x float> @llvm.r600.tex(<4 x float> %27, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 50*9880d681SAndroid Build Coastguard Worker %29 = shufflevector <4 x float> %6, <4 x float> %6, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 51*9880d681SAndroid Build Coastguard Worker %30 = call <4 x float> @llvm.r600.tex(<4 x float> %29, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 52*9880d681SAndroid Build Coastguard Worker %31 = shufflevector <4 x float> %7, <4 x float> %7, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 53*9880d681SAndroid Build Coastguard Worker %32 = call <4 x float> @llvm.r600.tex(<4 x float> %31, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 54*9880d681SAndroid Build Coastguard Worker %33 = shufflevector <4 x float> %8, <4 x float> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 55*9880d681SAndroid Build Coastguard Worker %34 = call <4 x float> @llvm.r600.tex(<4 x float> %33, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 56*9880d681SAndroid Build Coastguard Worker %35 = shufflevector <4 x float> %9, <4 x float> %9, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 57*9880d681SAndroid Build Coastguard Worker %36 = call <4 x float> @llvm.r600.tex(<4 x float> %35, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 58*9880d681SAndroid Build Coastguard Worker %37 = shufflevector <4 x float> %10, <4 x float> %10, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 59*9880d681SAndroid Build Coastguard Worker %38 = call <4 x float> @llvm.r600.tex(<4 x float> %37, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 60*9880d681SAndroid Build Coastguard Worker %39 = shufflevector <4 x float> %11, <4 x float> %11, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 61*9880d681SAndroid Build Coastguard Worker %40 = call <4 x float> @llvm.r600.tex(<4 x float> %39, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 62*9880d681SAndroid Build Coastguard Worker %41 = shufflevector <4 x float> %12, <4 x float> %12, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 63*9880d681SAndroid Build Coastguard Worker %42 = call <4 x float> @llvm.r600.tex(<4 x float> %41, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 64*9880d681SAndroid Build Coastguard Worker %43 = shufflevector <4 x float> %13, <4 x float> %13, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 65*9880d681SAndroid Build Coastguard Worker %44 = call <4 x float> @llvm.r600.tex(<4 x float> %43, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 66*9880d681SAndroid Build Coastguard Worker %45 = shufflevector <4 x float> %14, <4 x float> %14, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 67*9880d681SAndroid Build Coastguard Worker %46 = call <4 x float> @llvm.r600.tex(<4 x float> %45, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 68*9880d681SAndroid Build Coastguard Worker %47 = shufflevector <4 x float> %15, <4 x float> %15, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 69*9880d681SAndroid Build Coastguard Worker %48 = call <4 x float> @llvm.r600.tex(<4 x float> %47, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 70*9880d681SAndroid Build Coastguard Worker %49 = shufflevector <4 x float> %16, <4 x float> %16, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 71*9880d681SAndroid Build Coastguard Worker %50 = call <4 x float> @llvm.r600.tex(<4 x float> %49, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1) 72*9880d681SAndroid Build Coastguard Worker %a = fadd <4 x float> %18, %20 73*9880d681SAndroid Build Coastguard Worker %b = fadd <4 x float> %22, %24 74*9880d681SAndroid Build Coastguard Worker %c = fadd <4 x float> %26, %28 75*9880d681SAndroid Build Coastguard Worker %d = fadd <4 x float> %30, %32 76*9880d681SAndroid Build Coastguard Worker %e = fadd <4 x float> %34, %36 77*9880d681SAndroid Build Coastguard Worker %f = fadd <4 x float> %38, %40 78*9880d681SAndroid Build Coastguard Worker %g = fadd <4 x float> %42, %44 79*9880d681SAndroid Build Coastguard Worker %h = fadd <4 x float> %46, %48 80*9880d681SAndroid Build Coastguard Worker %i = fadd <4 x float> %50, %a 81*9880d681SAndroid Build Coastguard Worker %bc = fadd <4 x float> %b, %c 82*9880d681SAndroid Build Coastguard Worker %de = fadd <4 x float> %d, %e 83*9880d681SAndroid Build Coastguard Worker %fg = fadd <4 x float> %f, %g 84*9880d681SAndroid Build Coastguard Worker %hi = fadd <4 x float> %h, %i 85*9880d681SAndroid Build Coastguard Worker %bcde = fadd <4 x float> %bc, %de 86*9880d681SAndroid Build Coastguard Worker %fghi = fadd <4 x float> %fg, %hi 87*9880d681SAndroid Build Coastguard Worker %bcdefghi = fadd <4 x float> %bcde, %fghi 88*9880d681SAndroid Build Coastguard Worker call void @llvm.R600.store.swizzle(<4 x float> %bcdefghi, i32 0, i32 1) 89*9880d681SAndroid Build Coastguard Worker ret void 90*9880d681SAndroid Build Coastguard Worker} 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.R600.store.swizzle(<4 x float>, i32, i32) 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker; Function Attrs: readnone 95*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.r600.tex(<4 x float>, i32, i32, i32, i32, i32, i32, i32, i32, i32) #0 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Workerattributes #0 = { readnone } 98