|  |  |  | @ -47,39 +47,39 @@ namespace glm { | 
			
		
	
		
			
				
					|  |  |  |  | 		static float32x4_t copy_lane(float32x4_t vdst, int dlane, float32x4_t vsrc, int slane) { | 
			
		
	
		
			
				
					|  |  |  |  | #if GLM_ARCH & GLM_ARCH_ARMV8_BIT | 
			
		
	
		
			
				
					|  |  |  |  | 			switch(dlane) { | 
			
		
	
		
			
				
					|  |  |  |  |                 case 0: | 
			
		
	
		
			
				
					|  |  |  |  | 				case 0: | 
			
		
	
		
			
				
					|  |  |  |  | 					switch(slane) { | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 0: return vcopyq_laneq_f32(vdst, 0, vsrc, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 1: return vcopyq_laneq_f32(vdst, 0, vsrc, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 2: return vcopyq_laneq_f32(vdst, 0, vsrc, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 3: return vcopyq_laneq_f32(vdst, 0, vsrc, 3); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  | 			        assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  |                 case 1: | 
			
		
	
		
			
				
					|  |  |  |  | 						case 0: return vcopyq_laneq_f32(vdst, 0, vsrc, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 1: return vcopyq_laneq_f32(vdst, 0, vsrc, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 2: return vcopyq_laneq_f32(vdst, 0, vsrc, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 3: return vcopyq_laneq_f32(vdst, 0, vsrc, 3); | 
			
		
	
		
			
				
					|  |  |  |  | 					} | 
			
		
	
		
			
				
					|  |  |  |  | 					assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  | 				case 1: | 
			
		
	
		
			
				
					|  |  |  |  | 					switch(slane) { | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 0: return vcopyq_laneq_f32(vdst, 1, vsrc, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 1: return vcopyq_laneq_f32(vdst, 1, vsrc, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 2: return vcopyq_laneq_f32(vdst, 1, vsrc, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 3: return vcopyq_laneq_f32(vdst, 1, vsrc, 3); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  | 			        assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  |                 case 2: | 
			
		
	
		
			
				
					|  |  |  |  | 						case 0: return vcopyq_laneq_f32(vdst, 1, vsrc, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 1: return vcopyq_laneq_f32(vdst, 1, vsrc, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 2: return vcopyq_laneq_f32(vdst, 1, vsrc, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 3: return vcopyq_laneq_f32(vdst, 1, vsrc, 3); | 
			
		
	
		
			
				
					|  |  |  |  | 					} | 
			
		
	
		
			
				
					|  |  |  |  | 					assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  | 				case 2: | 
			
		
	
		
			
				
					|  |  |  |  | 					switch(slane) { | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 0: return vcopyq_laneq_f32(vdst, 2, vsrc, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 1: return vcopyq_laneq_f32(vdst, 2, vsrc, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 2: return vcopyq_laneq_f32(vdst, 2, vsrc, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 3: return vcopyq_laneq_f32(vdst, 2, vsrc, 3); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  | 			        assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  |                 case 3: | 
			
		
	
		
			
				
					|  |  |  |  | 						case 0: return vcopyq_laneq_f32(vdst, 2, vsrc, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 1: return vcopyq_laneq_f32(vdst, 2, vsrc, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 2: return vcopyq_laneq_f32(vdst, 2, vsrc, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 3: return vcopyq_laneq_f32(vdst, 2, vsrc, 3); | 
			
		
	
		
			
				
					|  |  |  |  | 					} | 
			
		
	
		
			
				
					|  |  |  |  | 					assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  | 				case 3: | 
			
		
	
		
			
				
					|  |  |  |  | 					switch(slane) { | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 0: return vcopyq_laneq_f32(vdst, 3, vsrc, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 1: return vcopyq_laneq_f32(vdst, 3, vsrc, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 2: return vcopyq_laneq_f32(vdst, 3, vsrc, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 		                case 3: return vcopyq_laneq_f32(vdst, 3, vsrc, 3); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  | 			        assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 						case 0: return vcopyq_laneq_f32(vdst, 3, vsrc, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 1: return vcopyq_laneq_f32(vdst, 3, vsrc, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 2: return vcopyq_laneq_f32(vdst, 3, vsrc, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 						case 3: return vcopyq_laneq_f32(vdst, 3, vsrc, 3); | 
			
		
	
		
			
				
					|  |  |  |  | 					} | 
			
		
	
		
			
				
					|  |  |  |  | 					assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			float l; | 
			
		
	
	
		
			
				
					|  |  |  | @ -104,7 +104,7 @@ namespace glm { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		static float32x4_t mul_lane(float32x4_t v, float32x4_t vlane, int lane) { | 
			
		
	
		
			
				
					|  |  |  |  | #if GLM_ARCH & GLM_ARCH_ARMV8_BIT | 
			
		
	
		
			
				
					|  |  |  |  |             switch(lane) { 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			switch(lane) { 
 | 
			
		
	
		
			
				
					|  |  |  |  | 				case 0: return vmulq_laneq_f32(v, vlane, 0); break; | 
			
		
	
		
			
				
					|  |  |  |  | 				case 1: return vmulq_laneq_f32(v, vlane, 1); break; | 
			
		
	
		
			
				
					|  |  |  |  | 				case 2: return vmulq_laneq_f32(v, vlane, 2); break; | 
			
		
	
	
		
			
				
					|  |  |  | @ -127,19 +127,19 @@ namespace glm { | 
			
		
	
		
			
				
					|  |  |  |  | #	define FMADD_LANE(acc, x, y, L) do { acc = vmlaq_laneq_f32(acc, x, y, L); } while(0) | 
			
		
	
		
			
				
					|  |  |  |  | #endif | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             switch(lane) { 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			switch(lane) { 
 | 
			
		
	
		
			
				
					|  |  |  |  | 				case 0: 
 | 
			
		
	
		
			
				
					|  |  |  |  |                     FMADD_LANE(acc, v, vlane, 0); | 
			
		
	
		
			
				
					|  |  |  |  |                     return acc; | 
			
		
	
		
			
				
					|  |  |  |  | 					FMADD_LANE(acc, v, vlane, 0); | 
			
		
	
		
			
				
					|  |  |  |  | 					return acc; | 
			
		
	
		
			
				
					|  |  |  |  | 				case 1: | 
			
		
	
		
			
				
					|  |  |  |  |                     FMADD_LANE(acc, v, vlane, 1); | 
			
		
	
		
			
				
					|  |  |  |  |                     return acc; | 
			
		
	
		
			
				
					|  |  |  |  | 					FMADD_LANE(acc, v, vlane, 1); | 
			
		
	
		
			
				
					|  |  |  |  | 					return acc; | 
			
		
	
		
			
				
					|  |  |  |  | 				case 2: | 
			
		
	
		
			
				
					|  |  |  |  |                     FMADD_LANE(acc, v, vlane, 2); | 
			
		
	
		
			
				
					|  |  |  |  |                     return acc; | 
			
		
	
		
			
				
					|  |  |  |  | 					FMADD_LANE(acc, v, vlane, 2); | 
			
		
	
		
			
				
					|  |  |  |  | 					return acc; | 
			
		
	
		
			
				
					|  |  |  |  | 				case 3: | 
			
		
	
		
			
				
					|  |  |  |  |                     FMADD_LANE(acc, v, vlane, 3); | 
			
		
	
		
			
				
					|  |  |  |  |                     return acc; | 
			
		
	
		
			
				
					|  |  |  |  | 					FMADD_LANE(acc, v, vlane, 3); | 
			
		
	
		
			
				
					|  |  |  |  | 					return acc; | 
			
		
	
		
			
				
					|  |  |  |  | 				default: 
 | 
			
		
	
		
			
				
					|  |  |  |  | 					assert(!"Unreachable code executed!"); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
	
		
			
				
					|  |  |  | 
 |