mi1 --> miscellaneous-instruction-extensions facility 1
mi2 --> miscellaneous-instruction-extensions facility 2
mi3 --> miscellaneous-instruction-extensions facility 3
+ mi4 --> miscellaneous-instruction-extensions facility 4
msa4 --> message-security-assist extension 4
msa5 --> message-security-assist extension 5
msa8 --> message-security-assist extension 8
stfle --> STFLE facility
vx --> vector facility
vxe --> vector enhancements facility 1
- vxe2 --> vector enhancements facility 2 implies vxe and vx
+ vxe2 --> vector enhancements facility 2
+ vxe3 --> vector enhancements facility 3
vxd --> vector packed decimal facility
*/
"ncrk r1,r2,r3", // mi3
"ncgrk r1,r2,r3", // mi3
+ "bdepg r1,r2,r3", // mi4
+ "bextg r1,r2,r3", // mi4
+
// balr not implemented
// bal not implemented
"cpya a1,a2",
+ "clzg r1,r2", // mi4
+ "ctzg r1,r2", // mi4
+
"dr r1:{0,2,4,6,8,10,12,14},r2",
"d r1:{0,2,4,6,8,10,12,14},d12(x2,b2)",
"lfhat r1,d20(x2,b2)", // lat
+ "lxab r1,d20(x2,b2)", // mi4
+ "lxah r1,d20(x2,b2)", // mi4
+ "lxaf r1,d20(x2,b2)", // mi4
+ "lxag r1,d20(x2,b2)", // mi4
+ "lxaq r1,d20(x2,b2)", // mi4
+
"llgfr r1,r2",
"llgf r1,d20(x2,b2)",
"llilh r1,i2:u16",
"llill r1,i2:u16",
+ "llxab r1,d20(x2,b2)", // mi4
+ "llxah r1,d20(x2,b2)", // mi4
+ "llxaf r1,d20(x2,b2)", // mi4
+ "llxag r1,d20(x2,b2)", // mi4
+ "llxaq r1,d20(x2,b2)", // mi4
+
"llgtr r1,r2",
"llgt r1,d20(x2,b2)",
// all opcodes require VX facility
"vbperm v1,v2,v3", // vxe
+ "vblend v1,v2,v3,v4,m5:{0..4}", // vxe3
"vgef v1,d12(v2,b2),m3:{0,1,2,3}",
"vgeg v1,d12(v2,b2),m3:{0,1}",
"vgbm v1,i2:u16",
+ "vgem v1,v2,m3:{0..4}", // vxe3
"vgm v1,i2:u8,i3:u8,m4:{0..3}",
"vl v1,d12(x2,b2),m3",
"vlr v1,v2",
"vchl v1,v2,v3,m4:{0..4},m5",
"vclz v1,v2,m3:{0..4}",
"vctz v1,v2,m3:{0..4}",
+ "vd v1,v2,v3,m4:{2,3,4},m5", // vxe3
+ "vdl v1,v2,v3,m4:{2,3,4},m5", // vxe3
+ "veval v1,v2,v3,v4,i5:u8", // vxe3
"vx v1,v2,v3",
"vgfm v1,v2,v3,m4:{0..3}",
"vgfma v1,v2,v3,v4,m5:{0..3}",
"vnx v1,v2,v3", // vxe
"vo v1,v2,v3",
"voc v1,v2,v3", // vxe
+ "vr v1,v2,v3,m4:{2,3,4},m5", // vxe3
+ "vrl v1,v2,v3,m4:{2,3,4},m5", // vxe3
"vpopct v1,v2,m3:{0..3}",
"verllv v1,v2,v3,m4:{0..3}",
"verll v1,v3,d12(b2),m4:{0..3}",