1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=amdgcn -verify-machineinstrs | FileCheck %s --check-prefix=SI 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s --check-prefix=SI 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s --check-prefix=R600 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; R600: {{^}}test: 6*9880d681SAndroid Build Coastguard Worker; R600: MEM_RAT_CACHELESS STORE_RAW 7*9880d681SAndroid Build Coastguard Worker; R600: MEM_RAT_CACHELESS STORE_RAW 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker; SI: {{^}}test: 10*9880d681SAndroid Build Coastguard Worker; SI: v_mov_b32_e32 v[[V_ZERO:[0-9]]], 0{{$}} 11*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_dwordx2 v[0:[[V_ZERO]]{{\]}} 12*9880d681SAndroid Build Coastguard Workerdefine void @test(i64 addrspace(1)* %out, i32 %a, i32 %b, i32 %c) { 13*9880d681SAndroid Build Coastguard Workerentry: 14*9880d681SAndroid Build Coastguard Worker %0 = mul i32 %a, %b 15*9880d681SAndroid Build Coastguard Worker %1 = add i32 %0, %c 16*9880d681SAndroid Build Coastguard Worker %2 = zext i32 %1 to i64 17*9880d681SAndroid Build Coastguard Worker store i64 %2, i64 addrspace(1)* %out 18*9880d681SAndroid Build Coastguard Worker ret void 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}testi1toi32: 22*9880d681SAndroid Build Coastguard Worker; SI: v_cndmask_b32 23*9880d681SAndroid Build Coastguard Workerdefine void @testi1toi32(i32 addrspace(1)* %out, i32 %a, i32 %b) { 24*9880d681SAndroid Build Coastguard Workerentry: 25*9880d681SAndroid Build Coastguard Worker %0 = icmp eq i32 %a, %b 26*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %0 to i32 27*9880d681SAndroid Build Coastguard Worker store i32 %1, i32 addrspace(1)* %out 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}zext_i1_to_i64: 32*9880d681SAndroid Build Coastguard Worker; SI: s_mov_b32 s{{[0-9]+}}, 0 33*9880d681SAndroid Build Coastguard Worker; SI: v_cmp_eq_i32 34*9880d681SAndroid Build Coastguard Worker; SI: v_cndmask_b32 35*9880d681SAndroid Build Coastguard Workerdefine void @zext_i1_to_i64(i64 addrspace(1)* %out, i32 %a, i32 %b) nounwind { 36*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i32 %a, %b 37*9880d681SAndroid Build Coastguard Worker %ext = zext i1 %cmp to i64 38*9880d681SAndroid Build Coastguard Worker store i64 %ext, i64 addrspace(1)* %out, align 8 39*9880d681SAndroid Build Coastguard Worker ret void 40*9880d681SAndroid Build Coastguard Worker} 41