1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; CHECK: {{^}}test: 5*9880d681SAndroid Build Coastguard Worker; CHECK: BIT_ALIGN_INT T{{[0-9]}}.X 6*9880d681SAndroid Build Coastguard Worker; CHECK: BIT_ALIGN_INT T{{[0-9]}}.Y 7*9880d681SAndroid Build Coastguard Worker; CHECK: BIT_ALIGN_INT T{{[0-9]}}.Z 8*9880d681SAndroid Build Coastguard Worker; CHECK: BIT_ALIGN_INT * T{{[0-9]}}.W 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine void @test(i32 addrspace(1)* %out, i32 %x_arg, i32 %y_arg, i32 %z_arg, i32 %w_arg, i32 %e) { 11*9880d681SAndroid Build Coastguard Workerentry: 12*9880d681SAndroid Build Coastguard Worker %shl = sub i32 32, %e 13*9880d681SAndroid Build Coastguard Worker %x = add i32 %x_arg, 1 14*9880d681SAndroid Build Coastguard Worker %x.0 = shl i32 %x, %shl 15*9880d681SAndroid Build Coastguard Worker %x.1 = lshr i32 %x, %e 16*9880d681SAndroid Build Coastguard Worker %x.2 = or i32 %x.0, %x.1 17*9880d681SAndroid Build Coastguard Worker %y = add i32 %y_arg, 1 18*9880d681SAndroid Build Coastguard Worker %y.0 = shl i32 %y, %shl 19*9880d681SAndroid Build Coastguard Worker %y.1 = lshr i32 %y, %e 20*9880d681SAndroid Build Coastguard Worker %y.2 = or i32 %y.0, %y.1 21*9880d681SAndroid Build Coastguard Worker %z = add i32 %z_arg, 1 22*9880d681SAndroid Build Coastguard Worker %z.0 = shl i32 %z, %shl 23*9880d681SAndroid Build Coastguard Worker %z.1 = lshr i32 %z, %e 24*9880d681SAndroid Build Coastguard Worker %z.2 = or i32 %z.0, %z.1 25*9880d681SAndroid Build Coastguard Worker %w = add i32 %w_arg, 1 26*9880d681SAndroid Build Coastguard Worker %w.0 = shl i32 %w, %shl 27*9880d681SAndroid Build Coastguard Worker %w.1 = lshr i32 %w, %e 28*9880d681SAndroid Build Coastguard Worker %w.2 = or i32 %w.0, %w.1 29*9880d681SAndroid Build Coastguard Worker %xy = or i32 %x.2, %y.2 30*9880d681SAndroid Build Coastguard Worker %zw = or i32 %z.2, %w.2 31*9880d681SAndroid Build Coastguard Worker %xyzw = or i32 %xy, %zw 32*9880d681SAndroid Build Coastguard Worker store i32 %xyzw, i32 addrspace(1)* %out 33*9880d681SAndroid Build Coastguard Worker ret void 34*9880d681SAndroid Build Coastguard Worker} 35