1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=verde -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=CHECK %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=VI -check-prefix=CHECK %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Use a 64-bit value with lo bits that can be represented as an inline constant 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}i64_imm_inline_lo: 6*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 v[[LO_VGPR:[0-9]+]], 5 7*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VGPR]]: 8*9880d681SAndroid Build Coastguard Workerdefine void @i64_imm_inline_lo(i64 addrspace(1) *%out) { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker store i64 1311768464867721221, i64 addrspace(1) *%out ; 0x1234567800000005 11*9880d681SAndroid Build Coastguard Worker ret void 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; Use a 64-bit value with hi bits that can be represented as an inline constant 15*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}i64_imm_inline_hi: 16*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 v[[HI_VGPR:[0-9]+]], 5 17*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[[0-9]+:}}[[HI_VGPR]] 18*9880d681SAndroid Build Coastguard Workerdefine void @i64_imm_inline_hi(i64 addrspace(1) *%out) { 19*9880d681SAndroid Build Coastguard Workerentry: 20*9880d681SAndroid Build Coastguard Worker store i64 21780256376, i64 addrspace(1) *%out ; 0x0000000512345678 21*9880d681SAndroid Build Coastguard Worker ret void 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_imm_neg_0.0_i64: 25*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 26*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_bfrev_b32_e32 v[[HI_VREG:[0-9]+]], 1{{$}} 27*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 28*9880d681SAndroid Build Coastguard Workerdefine void @store_imm_neg_0.0_i64(i64 addrspace(1) *%out) { 29*9880d681SAndroid Build Coastguard Worker store i64 -9223372036854775808, i64 addrspace(1) *%out 30*9880d681SAndroid Build Coastguard Worker ret void 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_neg_0.0_i32: 34*9880d681SAndroid Build Coastguard Worker; CHECK: v_bfrev_b32_e32 [[REG:v[0-9]+]], 1{{$}} 35*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 36*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_neg_0.0_i32(i32 addrspace(1)* %out) { 37*9880d681SAndroid Build Coastguard Worker store i32 -2147483648, i32 addrspace(1)* %out 38*9880d681SAndroid Build Coastguard Worker ret void 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_0.0_f32: 42*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 0{{$}} 43*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 44*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_0.0_f32(float addrspace(1)* %out) { 45*9880d681SAndroid Build Coastguard Worker store float 0.0, float addrspace(1)* %out 46*9880d681SAndroid Build Coastguard Worker ret void 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_imm_neg_0.0_f32: 50*9880d681SAndroid Build Coastguard Worker; CHECK: v_bfrev_b32_e32 [[REG:v[0-9]+]], 1{{$}} 51*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 52*9880d681SAndroid Build Coastguard Workerdefine void @store_imm_neg_0.0_f32(float addrspace(1)* %out) { 53*9880d681SAndroid Build Coastguard Worker store float -0.0, float addrspace(1)* %out 54*9880d681SAndroid Build Coastguard Worker ret void 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_0.5_f32: 58*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 0.5{{$}} 59*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 60*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_0.5_f32(float addrspace(1)* %out) { 61*9880d681SAndroid Build Coastguard Worker store float 0.5, float addrspace(1)* %out 62*9880d681SAndroid Build Coastguard Worker ret void 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_0.5_f32: 66*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], -0.5{{$}} 67*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 68*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_0.5_f32(float addrspace(1)* %out) { 69*9880d681SAndroid Build Coastguard Worker store float -0.5, float addrspace(1)* %out 70*9880d681SAndroid Build Coastguard Worker ret void 71*9880d681SAndroid Build Coastguard Worker} 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_1.0_f32: 74*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 1.0{{$}} 75*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 76*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_1.0_f32(float addrspace(1)* %out) { 77*9880d681SAndroid Build Coastguard Worker store float 1.0, float addrspace(1)* %out 78*9880d681SAndroid Build Coastguard Worker ret void 79*9880d681SAndroid Build Coastguard Worker} 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_1.0_f32: 82*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], -1.0{{$}} 83*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 84*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_1.0_f32(float addrspace(1)* %out) { 85*9880d681SAndroid Build Coastguard Worker store float -1.0, float addrspace(1)* %out 86*9880d681SAndroid Build Coastguard Worker ret void 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_2.0_f32: 90*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 2.0{{$}} 91*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 92*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_2.0_f32(float addrspace(1)* %out) { 93*9880d681SAndroid Build Coastguard Worker store float 2.0, float addrspace(1)* %out 94*9880d681SAndroid Build Coastguard Worker ret void 95*9880d681SAndroid Build Coastguard Worker} 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_2.0_f32: 98*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], -2.0{{$}} 99*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 100*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_2.0_f32(float addrspace(1)* %out) { 101*9880d681SAndroid Build Coastguard Worker store float -2.0, float addrspace(1)* %out 102*9880d681SAndroid Build Coastguard Worker ret void 103*9880d681SAndroid Build Coastguard Worker} 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_4.0_f32: 106*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 4.0{{$}} 107*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 108*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_4.0_f32(float addrspace(1)* %out) { 109*9880d681SAndroid Build Coastguard Worker store float 4.0, float addrspace(1)* %out 110*9880d681SAndroid Build Coastguard Worker ret void 111*9880d681SAndroid Build Coastguard Worker} 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_4.0_f32: 114*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], -4.0{{$}} 115*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 116*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_4.0_f32(float addrspace(1)* %out) { 117*9880d681SAndroid Build Coastguard Worker store float -4.0, float addrspace(1)* %out 118*9880d681SAndroid Build Coastguard Worker ret void 119*9880d681SAndroid Build Coastguard Worker} 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_literal_imm_f32: 122*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 [[REG:v[0-9]+]], 0x45800000 123*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 124*9880d681SAndroid Build Coastguard Workerdefine void @store_literal_imm_f32(float addrspace(1)* %out) { 125*9880d681SAndroid Build Coastguard Worker store float 4096.0, float addrspace(1)* %out 126*9880d681SAndroid Build Coastguard Worker ret void 127*9880d681SAndroid Build Coastguard Worker} 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_0.0_f32: 130*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 131*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 0, [[VAL]]{{$}} 132*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 133*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_0.0_f32(float addrspace(1)* %out, float %x) { 134*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0.0 135*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 136*9880d681SAndroid Build Coastguard Worker ret void 137*9880d681SAndroid Build Coastguard Worker} 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_0.5_f32: 140*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 141*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 0.5, [[VAL]]{{$}} 142*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 143*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_0.5_f32(float addrspace(1)* %out, float %x) { 144*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0.5 145*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 146*9880d681SAndroid Build Coastguard Worker ret void 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_0.5_f32: 150*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 151*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -0.5, [[VAL]]{{$}} 152*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 153*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_0.5_f32(float addrspace(1)* %out, float %x) { 154*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, -0.5 155*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 156*9880d681SAndroid Build Coastguard Worker ret void 157*9880d681SAndroid Build Coastguard Worker} 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_1.0_f32: 160*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 161*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 1.0, [[VAL]]{{$}} 162*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 163*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_1.0_f32(float addrspace(1)* %out, float %x) { 164*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 1.0 165*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 166*9880d681SAndroid Build Coastguard Worker ret void 167*9880d681SAndroid Build Coastguard Worker} 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_1.0_f32: 170*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 171*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -1.0, [[VAL]]{{$}} 172*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 173*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_1.0_f32(float addrspace(1)* %out, float %x) { 174*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, -1.0 175*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 176*9880d681SAndroid Build Coastguard Worker ret void 177*9880d681SAndroid Build Coastguard Worker} 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_2.0_f32: 180*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 181*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 2.0, [[VAL]]{{$}} 182*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 183*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_2.0_f32(float addrspace(1)* %out, float %x) { 184*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 2.0 185*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 186*9880d681SAndroid Build Coastguard Worker ret void 187*9880d681SAndroid Build Coastguard Worker} 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_2.0_f32: 190*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 191*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -2.0, [[VAL]]{{$}} 192*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 193*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_2.0_f32(float addrspace(1)* %out, float %x) { 194*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, -2.0 195*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 196*9880d681SAndroid Build Coastguard Worker ret void 197*9880d681SAndroid Build Coastguard Worker} 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_4.0_f32: 200*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 201*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 4.0, [[VAL]]{{$}} 202*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 203*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_4.0_f32(float addrspace(1)* %out, float %x) { 204*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 4.0 205*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 206*9880d681SAndroid Build Coastguard Worker ret void 207*9880d681SAndroid Build Coastguard Worker} 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_4.0_f32: 210*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 211*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -4.0, [[VAL]]{{$}} 212*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 213*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_4.0_f32(float addrspace(1)* %out, float %x) { 214*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, -4.0 215*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 216*9880d681SAndroid Build Coastguard Worker ret void 217*9880d681SAndroid Build Coastguard Worker} 218*9880d681SAndroid Build Coastguard Worker 219*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}commute_add_inline_imm_0.5_f32: 220*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_load_dword [[VAL:v[0-9]+]] 221*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e32 [[REG:v[0-9]+]], 0.5, [[VAL]] 222*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 223*9880d681SAndroid Build Coastguard Workerdefine void @commute_add_inline_imm_0.5_f32(float addrspace(1)* %out, float addrspace(1)* %in) { 224*9880d681SAndroid Build Coastguard Worker %x = load float, float addrspace(1)* %in 225*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0.5 226*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 227*9880d681SAndroid Build Coastguard Worker ret void 228*9880d681SAndroid Build Coastguard Worker} 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}commute_add_literal_f32: 231*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_load_dword [[VAL:v[0-9]+]] 232*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e32 [[REG:v[0-9]+]], 0x44800000, [[VAL]] 233*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 234*9880d681SAndroid Build Coastguard Workerdefine void @commute_add_literal_f32(float addrspace(1)* %out, float addrspace(1)* %in) { 235*9880d681SAndroid Build Coastguard Worker %x = load float, float addrspace(1)* %in 236*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 1024.0 237*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 238*9880d681SAndroid Build Coastguard Worker ret void 239*9880d681SAndroid Build Coastguard Worker} 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_1_f32: 242*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 243*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 1, [[VAL]]{{$}} 244*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 245*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_1_f32(float addrspace(1)* %out, float %x) { 246*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0x36a0000000000000 247*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 248*9880d681SAndroid Build Coastguard Worker ret void 249*9880d681SAndroid Build Coastguard Worker} 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_2_f32: 252*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 253*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 2, [[VAL]]{{$}} 254*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 255*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_2_f32(float addrspace(1)* %out, float %x) { 256*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0x36b0000000000000 257*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 258*9880d681SAndroid Build Coastguard Worker ret void 259*9880d681SAndroid Build Coastguard Worker} 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_16_f32: 262*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 263*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 16, [[VAL]] 264*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 265*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_16_f32(float addrspace(1)* %out, float %x) { 266*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0x36e0000000000000 267*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 268*9880d681SAndroid Build Coastguard Worker ret void 269*9880d681SAndroid Build Coastguard Worker} 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_1_f32: 272*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 273*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -1, [[VAL]] 274*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 275*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_1_f32(float addrspace(1)* %out, float %x) { 276*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0xffffffffe0000000 277*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 278*9880d681SAndroid Build Coastguard Worker ret void 279*9880d681SAndroid Build Coastguard Worker} 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_2_f32: 282*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 283*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -2, [[VAL]] 284*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 285*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_2_f32(float addrspace(1)* %out, float %x) { 286*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0xffffffffc0000000 287*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 288*9880d681SAndroid Build Coastguard Worker ret void 289*9880d681SAndroid Build Coastguard Worker} 290*9880d681SAndroid Build Coastguard Worker 291*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_16_f32: 292*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 293*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], -16, [[VAL]] 294*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 295*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_16_f32(float addrspace(1)* %out, float %x) { 296*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0xfffffffe00000000 297*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 298*9880d681SAndroid Build Coastguard Worker ret void 299*9880d681SAndroid Build Coastguard Worker} 300*9880d681SAndroid Build Coastguard Worker 301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_63_f32: 302*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 303*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 63, [[VAL]] 304*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 305*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_63_f32(float addrspace(1)* %out, float %x) { 306*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0x36ff800000000000 307*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 308*9880d681SAndroid Build Coastguard Worker ret void 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_64_f32: 312*9880d681SAndroid Build Coastguard Worker; CHECK: s_load_dword [[VAL:s[0-9]+]] 313*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f32_e64 [[REG:v[0-9]+]], 64, [[VAL]] 314*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dword [[REG]] 315*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_64_f32(float addrspace(1)* %out, float %x) { 316*9880d681SAndroid Build Coastguard Worker %y = fadd float %x, 0x3700000000000000 317*9880d681SAndroid Build Coastguard Worker store float %y, float addrspace(1)* %out 318*9880d681SAndroid Build Coastguard Worker ret void 319*9880d681SAndroid Build Coastguard Worker} 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Worker 322*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_0.0_f64: 323*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 324*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 325*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 0{{$}} 326*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 327*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_0.0_f64(double addrspace(1)* %out, double %x) { 328*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0.0 329*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 330*9880d681SAndroid Build Coastguard Worker ret void 331*9880d681SAndroid Build Coastguard Worker} 332*9880d681SAndroid Build Coastguard Worker 333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_0.5_f64: 334*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 335*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 336*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 0.5 337*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 338*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_0.5_f64(double addrspace(1)* %out, double %x) { 339*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0.5 340*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 341*9880d681SAndroid Build Coastguard Worker ret void 342*9880d681SAndroid Build Coastguard Worker} 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_0.5_f64: 345*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 346*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 347*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -0.5 348*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 349*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_0.5_f64(double addrspace(1)* %out, double %x) { 350*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, -0.5 351*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 352*9880d681SAndroid Build Coastguard Worker ret void 353*9880d681SAndroid Build Coastguard Worker} 354*9880d681SAndroid Build Coastguard Worker 355*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_1.0_f64: 356*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 357*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 358*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 1.0 359*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 360*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_1.0_f64(double addrspace(1)* %out, double %x) { 361*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 1.0 362*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 363*9880d681SAndroid Build Coastguard Worker ret void 364*9880d681SAndroid Build Coastguard Worker} 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_1.0_f64: 367*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 368*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 369*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -1.0 370*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 371*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_1.0_f64(double addrspace(1)* %out, double %x) { 372*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, -1.0 373*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 374*9880d681SAndroid Build Coastguard Worker ret void 375*9880d681SAndroid Build Coastguard Worker} 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_2.0_f64: 378*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 379*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 380*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 2.0 381*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 382*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_2.0_f64(double addrspace(1)* %out, double %x) { 383*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 2.0 384*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 385*9880d681SAndroid Build Coastguard Worker ret void 386*9880d681SAndroid Build Coastguard Worker} 387*9880d681SAndroid Build Coastguard Worker 388*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_2.0_f64: 389*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 390*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 391*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -2.0 392*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 393*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_2.0_f64(double addrspace(1)* %out, double %x) { 394*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, -2.0 395*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 396*9880d681SAndroid Build Coastguard Worker ret void 397*9880d681SAndroid Build Coastguard Worker} 398*9880d681SAndroid Build Coastguard Worker 399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_4.0_f64: 400*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 401*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 402*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 4.0 403*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 404*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_4.0_f64(double addrspace(1)* %out, double %x) { 405*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 4.0 406*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 407*9880d681SAndroid Build Coastguard Worker ret void 408*9880d681SAndroid Build Coastguard Worker} 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_4.0_f64: 411*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 412*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 413*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -4.0 414*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 415*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_4.0_f64(double addrspace(1)* %out, double %x) { 416*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, -4.0 417*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 418*9880d681SAndroid Build Coastguard Worker ret void 419*9880d681SAndroid Build Coastguard Worker} 420*9880d681SAndroid Build Coastguard Worker 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_1_f64: 423*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 424*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 425*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 1{{$}} 426*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 427*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_1_f64(double addrspace(1)* %out, double %x) { 428*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0x0000000000000001 429*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 430*9880d681SAndroid Build Coastguard Worker ret void 431*9880d681SAndroid Build Coastguard Worker} 432*9880d681SAndroid Build Coastguard Worker 433*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_2_f64: 434*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 435*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 436*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 2{{$}} 437*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 438*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_2_f64(double addrspace(1)* %out, double %x) { 439*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0x0000000000000002 440*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 441*9880d681SAndroid Build Coastguard Worker ret void 442*9880d681SAndroid Build Coastguard Worker} 443*9880d681SAndroid Build Coastguard Worker 444*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_16_f64: 445*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 446*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 447*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 16 448*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 449*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_16_f64(double addrspace(1)* %out, double %x) { 450*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0x0000000000000010 451*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 452*9880d681SAndroid Build Coastguard Worker ret void 453*9880d681SAndroid Build Coastguard Worker} 454*9880d681SAndroid Build Coastguard Worker 455*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_1_f64: 456*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 457*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 458*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -1 459*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 460*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_1_f64(double addrspace(1)* %out, double %x) { 461*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0xffffffffffffffff 462*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 463*9880d681SAndroid Build Coastguard Worker ret void 464*9880d681SAndroid Build Coastguard Worker} 465*9880d681SAndroid Build Coastguard Worker 466*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_2_f64: 467*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 468*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 469*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -2 470*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 471*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_2_f64(double addrspace(1)* %out, double %x) { 472*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0xfffffffffffffffe 473*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 474*9880d681SAndroid Build Coastguard Worker ret void 475*9880d681SAndroid Build Coastguard Worker} 476*9880d681SAndroid Build Coastguard Worker 477*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_neg_16_f64: 478*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 479*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 480*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], -16 481*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 482*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_neg_16_f64(double addrspace(1)* %out, double %x) { 483*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0xfffffffffffffff0 484*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 485*9880d681SAndroid Build Coastguard Worker ret void 486*9880d681SAndroid Build Coastguard Worker} 487*9880d681SAndroid Build Coastguard Worker 488*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_63_f64: 489*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 490*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 491*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 63 492*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 493*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_63_f64(double addrspace(1)* %out, double %x) { 494*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0x000000000000003F 495*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 496*9880d681SAndroid Build Coastguard Worker ret void 497*9880d681SAndroid Build Coastguard Worker} 498*9880d681SAndroid Build Coastguard Worker 499*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}add_inline_imm_64_f64: 500*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0xb 501*9880d681SAndroid Build Coastguard Worker; VI: s_load_dwordx2 [[VAL:s\[[0-9]+:[0-9]+\]]], {{s\[[0-9]+:[0-9]+\]}}, 0x2c 502*9880d681SAndroid Build Coastguard Worker; CHECK: v_add_f64 [[REG:v\[[0-9]+:[0-9]+\]]], [[VAL]], 64 503*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 [[REG]] 504*9880d681SAndroid Build Coastguard Workerdefine void @add_inline_imm_64_f64(double addrspace(1)* %out, double %x) { 505*9880d681SAndroid Build Coastguard Worker %y = fadd double %x, 0x0000000000000040 506*9880d681SAndroid Build Coastguard Worker store double %y, double addrspace(1)* %out 507*9880d681SAndroid Build Coastguard Worker ret void 508*9880d681SAndroid Build Coastguard Worker} 509*9880d681SAndroid Build Coastguard Worker 510*9880d681SAndroid Build Coastguard Worker 511*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_0.0_f64: 512*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0 513*9880d681SAndroid Build Coastguard Worker; CHECK: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], v[[LO_VREG]]{{$}} 514*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 515*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_0.0_f64(double addrspace(1)* %out) { 516*9880d681SAndroid Build Coastguard Worker store double 0.0, double addrspace(1)* %out 517*9880d681SAndroid Build Coastguard Worker ret void 518*9880d681SAndroid Build Coastguard Worker} 519*9880d681SAndroid Build Coastguard Worker 520*9880d681SAndroid Build Coastguard Worker 521*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_literal_imm_neg_0.0_f64: 522*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 523*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_bfrev_b32_e32 v[[HI_VREG:[0-9]+]], 1{{$}} 524*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 525*9880d681SAndroid Build Coastguard Workerdefine void @store_literal_imm_neg_0.0_f64(double addrspace(1)* %out) { 526*9880d681SAndroid Build Coastguard Worker store double -0.0, double addrspace(1)* %out 527*9880d681SAndroid Build Coastguard Worker ret void 528*9880d681SAndroid Build Coastguard Worker} 529*9880d681SAndroid Build Coastguard Worker 530*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_0.5_f64: 531*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 532*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0x3fe00000 533*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 534*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_0.5_f64(double addrspace(1)* %out) { 535*9880d681SAndroid Build Coastguard Worker store double 0.5, double addrspace(1)* %out 536*9880d681SAndroid Build Coastguard Worker ret void 537*9880d681SAndroid Build Coastguard Worker} 538*9880d681SAndroid Build Coastguard Worker 539*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_0.5_f64: 540*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 541*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0xbfe00000 542*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 543*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_0.5_f64(double addrspace(1)* %out) { 544*9880d681SAndroid Build Coastguard Worker store double -0.5, double addrspace(1)* %out 545*9880d681SAndroid Build Coastguard Worker ret void 546*9880d681SAndroid Build Coastguard Worker} 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_1.0_f64: 549*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 550*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0x3ff00000 551*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 552*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_1.0_f64(double addrspace(1)* %out) { 553*9880d681SAndroid Build Coastguard Worker store double 1.0, double addrspace(1)* %out 554*9880d681SAndroid Build Coastguard Worker ret void 555*9880d681SAndroid Build Coastguard Worker} 556*9880d681SAndroid Build Coastguard Worker 557*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_1.0_f64: 558*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 559*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0xbff00000 560*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 561*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_1.0_f64(double addrspace(1)* %out) { 562*9880d681SAndroid Build Coastguard Worker store double -1.0, double addrspace(1)* %out 563*9880d681SAndroid Build Coastguard Worker ret void 564*9880d681SAndroid Build Coastguard Worker} 565*9880d681SAndroid Build Coastguard Worker 566*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_2.0_f64: 567*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 568*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 2.0 569*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 570*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_2.0_f64(double addrspace(1)* %out) { 571*9880d681SAndroid Build Coastguard Worker store double 2.0, double addrspace(1)* %out 572*9880d681SAndroid Build Coastguard Worker ret void 573*9880d681SAndroid Build Coastguard Worker} 574*9880d681SAndroid Build Coastguard Worker 575*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_2.0_f64: 576*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 577*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], -2.0 578*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 579*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_2.0_f64(double addrspace(1)* %out) { 580*9880d681SAndroid Build Coastguard Worker store double -2.0, double addrspace(1)* %out 581*9880d681SAndroid Build Coastguard Worker ret void 582*9880d681SAndroid Build Coastguard Worker} 583*9880d681SAndroid Build Coastguard Worker 584*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_4.0_f64: 585*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 586*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0x40100000 587*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 588*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_4.0_f64(double addrspace(1)* %out) { 589*9880d681SAndroid Build Coastguard Worker store double 4.0, double addrspace(1)* %out 590*9880d681SAndroid Build Coastguard Worker ret void 591*9880d681SAndroid Build Coastguard Worker} 592*9880d681SAndroid Build Coastguard Worker 593*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_inline_imm_m_4.0_f64: 594*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 595*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0xc0100000 596*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 597*9880d681SAndroid Build Coastguard Workerdefine void @store_inline_imm_m_4.0_f64(double addrspace(1)* %out) { 598*9880d681SAndroid Build Coastguard Worker store double -4.0, double addrspace(1)* %out 599*9880d681SAndroid Build Coastguard Worker ret void 600*9880d681SAndroid Build Coastguard Worker} 601*9880d681SAndroid Build Coastguard Worker 602*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}store_literal_imm_f64: 603*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[LO_VREG:[0-9]+]], 0{{$}} 604*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: v_mov_b32_e32 v[[HI_VREG:[0-9]+]], 0x40b00000 605*9880d681SAndroid Build Coastguard Worker; CHECK: buffer_store_dwordx2 v{{\[}}[[LO_VREG]]:[[HI_VREG]]{{\]}} 606*9880d681SAndroid Build Coastguard Workerdefine void @store_literal_imm_f64(double addrspace(1)* %out) { 607*9880d681SAndroid Build Coastguard Worker store double 4096.0, double addrspace(1)* %out 608*9880d681SAndroid Build Coastguard Worker ret void 609*9880d681SAndroid Build Coastguard Worker} 610