i965: Add support for control register
authorJose Maria Casanova Crespo <jmcasanova@igalia.com>
Sat, 1 Jul 2017 06:11:58 +0000 (08:11 +0200)
committerJose Maria Casanova Crespo <jmcasanova@igalia.com>
Wed, 6 Dec 2017 07:57:18 +0000 (08:57 +0100)
commitac8d4734f695b718ae072c2ad961a2cc546b21e0
treec24505b7b512fcb603c5738acef6fc9986d1f0e7
parent5d5ee507fb4a385f98ba19bd901ce4e3aca7def4
i965: Add support for control register

Control register cr0 in i965 can be used to change the rounding modes
in 32-bit to 16-bit floating-point conversions.

From intel Skylake PRM, vol 07, section "Register and Tegister Regions",
 subsection "Control Register" (page 754):

"Subregister cr0.0:ud contains normal operation control fields such as the
 floating-point mode ... "

Floating-point Rounding mode is changed at bits 5:4 of cr0.0:

"Rounding Mode. This field specifies the FPU rounding mode. It is
initialized by Thread Dispatch."
  00b = Round to Nearest or Even (RTNE)
  01b = Round Up, toward +inf (RU)
  10b = Round Down, toward -inf (RD)
  11b = Round Toward Zero (RTZ)"

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/compiler/brw_reg.h