forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			44 lines
		
	
	
		
			753 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			753 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
 | |
| // rdar://9894548
 | |
| 
 | |
| typedef unsigned long word_t;
 | |
| typedef unsigned long u64_t;
 | |
| typedef unsigned int u32_t;
 | |
| 
 | |
| class ioapic_redir_t {
 | |
| public:
 | |
|  union {
 | |
|   struct {
 | |
|    word_t vector : 8;
 | |
| 
 | |
|    word_t delivery_mode : 3;
 | |
|    word_t dest_mode : 1;
 | |
| 
 | |
|    word_t delivery_status : 1;
 | |
|    word_t polarity : 1;
 | |
|    word_t irr : 1;
 | |
|    word_t trigger_mode : 1;
 | |
| 
 | |
|    word_t mask : 1;
 | |
|    word_t _pad0 : 15;
 | |
| 
 | |
|    word_t dest : 8;
 | |
|   };
 | |
|   volatile u32_t raw[2];
 | |
|   volatile u64_t raw64;
 | |
|  };
 | |
| };
 | |
| 
 | |
| struct ioapic_shadow_struct
 | |
| {
 | |
|  ioapic_redir_t redirs[24];
 | |
| } ioapic_shadow[16];
 | |
| 
 | |
| void init_ioapic(unsigned long ioapic_id)
 | |
| {
 | |
|      ioapic_redir_t entry;
 | |
|      ioapic_shadow[ioapic_id].redirs[3] = entry;
 | |
| }
 | |
| 
 | |
| // CHECK: call void @llvm.memcpy
 |