1; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck --check-prefix=EG-CHECK %s 2; RUN: llc < %s -march=r600 -mcpu=verde -verify-machineinstrs | FileCheck --check-prefix=SI-CHECK %s 3 4;EG-CHECK-LABEL: @test1: 5;EG-CHECK: ADD_INT {{[* ]*}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 6 7;SI-CHECK-LABEL: @test1: 8;SI-CHECK: V_ADD_I32_e32 [[REG:v[0-9]+]], {{v[0-9]+, v[0-9]+}} 9;SI-CHECK-NOT: [[REG]] 10;SI-CHECK: BUFFER_STORE_DWORD [[REG]], 11define void @test1(i32 addrspace(1)* %out, i32 addrspace(1)* %in) { 12 %b_ptr = getelementptr i32 addrspace(1)* %in, i32 1 13 %a = load i32 addrspace(1)* %in 14 %b = load i32 addrspace(1)* %b_ptr 15 %result = add i32 %a, %b 16 store i32 %result, i32 addrspace(1)* %out 17 ret void 18} 19 20;EG-CHECK-LABEL: @test2: 21;EG-CHECK: ADD_INT {{[* ]*}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 22;EG-CHECK: ADD_INT {{[* ]*}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 23 24;SI-CHECK-LABEL: @test2: 25;SI-CHECK: V_ADD_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}} 26;SI-CHECK: V_ADD_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}} 27 28define void @test2(<2 x i32> addrspace(1)* %out, <2 x i32> addrspace(1)* %in) { 29 %b_ptr = getelementptr <2 x i32> addrspace(1)* %in, i32 1 30 %a = load <2 x i32> addrspace(1)* %in 31 %b = load <2 x i32> addrspace(1)* %b_ptr 32 %result = add <2 x i32> %a, %b 33 store <2 x i32> %result, <2 x i32> addrspace(1)* %out 34 ret void 35} 36 37;EG-CHECK-LABEL: @test4: 38;EG-CHECK: ADD_INT {{[* ]*}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 39;EG-CHECK: ADD_INT {{[* ]*}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 40;EG-CHECK: ADD_INT {{[* ]*}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 41;EG-CHECK: ADD_INT {{[* ]*}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 42 43;SI-CHECK-LABEL: @test4: 44;SI-CHECK: V_ADD_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}} 45;SI-CHECK: V_ADD_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}} 46;SI-CHECK: V_ADD_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}} 47;SI-CHECK: V_ADD_I32_e32 v{{[0-9]+, v[0-9]+, v[0-9]+}} 48 49define void @test4(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) { 50 %b_ptr = getelementptr <4 x i32> addrspace(1)* %in, i32 1 51 %a = load <4 x i32> addrspace(1)* %in 52 %b = load <4 x i32> addrspace(1)* %b_ptr 53 %result = add <4 x i32> %a, %b 54 store <4 x i32> %result, <4 x i32> addrspace(1)* %out 55 ret void 56} 57