| // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -O2 %s -o - | FileCheck %s | 
 |  | 
 | // CHECK-LABEL: @test_r15 | 
 | // CHECK: call void asm sideeffect "", "{r15},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r15() { | 
 |     register int a asm ("r15"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r16 | 
 | // CHECK: call void asm sideeffect "", "{r16},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r16() { | 
 |     register int a asm ("r16"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r17 | 
 | // CHECK: call void asm sideeffect "", "{r17},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r17() { | 
 |     register int a asm ("r17"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r18 | 
 | // CHECK: call void asm sideeffect "", "{r18},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r18() { | 
 |     register int a asm ("r18"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r19 | 
 | // CHECK: call void asm sideeffect "", "{r19},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r19() { | 
 |     register int a asm ("r19"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r20 | 
 | // CHECK: call void asm sideeffect "", "{r20},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r20() { | 
 |     register int a asm ("r20"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r21 | 
 | // CHECK: call void asm sideeffect "", "{r21},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r21() { | 
 |     register int a asm ("r21"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r22 | 
 | // CHECK: call void asm sideeffect "", "{r22},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r22() { | 
 |     register int a asm ("r22"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r23 | 
 | // CHECK: call void asm sideeffect "", "{r23},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r23() { | 
 |     register int a asm ("r23"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r24 | 
 | // CHECK: call void asm sideeffect "", "{r24},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r24() { | 
 |     register int a asm ("r24"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r25 | 
 | // CHECK: call void asm sideeffect "", "{r25},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r25() { | 
 |     register int a asm ("r25"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r26 | 
 | // CHECK: call void asm sideeffect "", "{r26},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r26() { | 
 |     register int a asm ("r26"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r27 | 
 | // CHECK: call void asm sideeffect "", "{r27},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r27() { | 
 |     register int a asm ("r27"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r28 | 
 | // CHECK: call void asm sideeffect "", "{r28},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r28() { | 
 |     register int a asm ("r28"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r29 | 
 | // CHECK: call void asm sideeffect "", "{r29},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r29() { | 
 |     register int a asm ("r29"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r30 | 
 | // CHECK: call void asm sideeffect "", "{r30},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r30() { | 
 |     register int a asm ("r30"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  | 
 | // CHECK-LABEL: @test_r31 | 
 | // CHECK: call void asm sideeffect "", "{r31},~{dirflag},~{fpsr},~{flags}"(i32 undef) | 
 | void test_r31() { | 
 |     register int a asm ("r31"); | 
 |     asm ("" :: "r" (a)); | 
 | } | 
 |  |