uint32_t response_length)
{
Gen8NativeInstruction *gen8_insn = &insn->gen8_insn;
- const GenMessageTarget sfid = GEN_SFID_DATAPORT1_DATA_CACHE;
+ const GenMessageTarget sfid = GEN_SFID_DATAPORT1_DATA;
setMessageDescriptor(insn, sfid, msg_length, response_length);
gen8_insn->bits3.gen7_untyped_rw.msg_type = msg_type;
gen8_insn->bits3.gen7_untyped_rw.bti = bti;
unsigned char msg_type, uint32_t msg_length, bool header_present)
{
Gen8NativeInstruction *gen8_insn = &insn->gen8_insn;
- const GenMessageTarget sfid = GEN_SFID_DATAPORT1_DATA_CACHE;
+ const GenMessageTarget sfid = GEN_SFID_DATAPORT1_DATA;
setMessageDescriptor(insn, sfid, msg_length, 0, header_present);
gen8_insn->bits3.gen7_typed_rw.bti = bti;
gen8_insn->bits3.gen7_typed_rw.msg_type = msg_type;
gen8_insn->bits3.gen7_typed_rw.slot = 1;
}
+ void Gen8Encoder::F16TO32(GenRegister dest, GenRegister src0) {
+ MOV(GenRegister::retype(dest, GEN_TYPE_F), GenRegister::retype(src0, GEN_TYPE_HF));
+ }
+
+ void Gen8Encoder::F32TO16(GenRegister dest, GenRegister src0) {
+ MOV(GenRegister::retype(dest, GEN_TYPE_HF), GenRegister::retype(src0, GEN_TYPE_F));
+ }
+
void Gen8Encoder::ATOMIC(GenRegister dst, uint32_t function, GenRegister src, uint32_t bti, uint32_t srcNum) {
GenNativeInstruction *insn = this->next(GEN_OPCODE_SEND);
Gen8NativeInstruction *gen8_insn = &insn->gen8_insn;
this->setSrc0(insn, GenRegister::ud8grf(src.nr, 0));
this->setSrc1(insn, GenRegister::immud(0));
- const GenMessageTarget sfid = GEN_SFID_DATAPORT1_DATA_CACHE;
+ const GenMessageTarget sfid = GEN_SFID_DATAPORT1_DATA;
setMessageDescriptor(insn, sfid, msg_length, response_length);
gen8_insn->bits3.gen7_atomic_op.msg_type = GEN75_P1_UNTYPED_ATOMIC_OP;
gen8_insn->bits3.gen7_atomic_op.bti = bti;
pop();
}
- void Gen8Encoder::MOV_DF(GenRegister dest, GenRegister src0, GenRegister r) {
+ void Gen8Encoder::MOV_DF(GenRegister dest, GenRegister src0, GenRegister tmp) {
GBE_ASSERT((src0.type == GEN_TYPE_F && dest.isdf()) || (src0.isdf() && dest.type == GEN_TYPE_F));
+ GenRegister r = GenRegister::retype(tmp, GEN_TYPE_F);
int w = curr.execWidth;
GenRegister r0;
r0 = GenRegister::h2(r);