| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,106 @@ | ||
| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | ||
| ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+shstk -mattr=+ibt | FileCheck %s | ||
|
|
||
| define void @test_incsspd(i32 %a) local_unnamed_addr { | ||
| ; CHECK-LABEL: test_incsspd: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax | ||
| ; CHECK-NEXT: incsspd %eax | ||
| ; CHECK-NEXT: retl | ||
| entry: | ||
| tail call void @llvm.x86.incsspd(i32 %a) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.incsspd(i32) | ||
|
|
||
| define i32 @test_rdsspd(i32 %a) { | ||
| ; CHECK-LABEL: test_rdsspd: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax | ||
| ; CHECK-NEXT: rdsspd %eax | ||
| ; CHECK-NEXT: retl | ||
| entry: | ||
| %0 = call i32 @llvm.x86.rdsspd(i32 %a) | ||
| ret i32 %0 | ||
| } | ||
|
|
||
| declare i32 @llvm.x86.rdsspd(i32) | ||
|
|
||
| define void @test_saveprevssp() { | ||
| ; CHECK-LABEL: test_saveprevssp: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: saveprevssp | ||
| ; CHECK-NEXT: retl | ||
| entry: | ||
| tail call void @llvm.x86.saveprevssp() | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.saveprevssp() | ||
|
|
||
| define void @test_rstorssp(i8* %__p) { | ||
| ; CHECK-LABEL: test_rstorssp: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax | ||
| ; CHECK-NEXT: rstorssp (%eax) | ||
| ; CHECK-NEXT: retl | ||
| entry: | ||
| tail call void @llvm.x86.rstorssp(i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.rstorssp(i8*) | ||
|
|
||
| define void @test_wrssd(i32 %a, i8* %__p) { | ||
| ; CHECK-LABEL: test_wrssd: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax | ||
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||
| ; CHECK-NEXT: wrssd %eax, (%ecx) | ||
| ; CHECK-NEXT: retl | ||
| entry: | ||
| tail call void @llvm.x86.wrssd(i32 %a, i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.wrssd(i32, i8*) | ||
|
|
||
| define void @test_wrussd(i32 %a, i8* %__p) { | ||
| ; CHECK-LABEL: test_wrussd: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax | ||
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx | ||
| ; CHECK-NEXT: wrussd %eax, (%ecx) | ||
| ; CHECK-NEXT: retl | ||
| entry: | ||
| tail call void @llvm.x86.wrussd(i32 %a, i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.wrussd(i32, i8*) | ||
|
|
||
| define void @test_setssbsy() { | ||
| ; CHECK-LABEL: test_setssbsy: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: setssbsy | ||
| ; CHECK-NEXT: retl | ||
| entry: | ||
| tail call void @llvm.x86.setssbsy() | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.setssbsy() | ||
|
|
||
| define void @test_clrssbsy(i8* %__p) { | ||
| ; CHECK-LABEL: test_clrssbsy: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax | ||
| ; CHECK-NEXT: clrssbsy (%eax) | ||
| ; CHECK-NEXT: retl | ||
| entry: | ||
| tail call void @llvm.x86.clrssbsy(i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.clrssbsy(i8* %__p) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,150 @@ | ||
| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | ||
| ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+shstk -mattr=+ibt | FileCheck %s | ||
|
|
||
| define void @test_incsspd(i32 %a) local_unnamed_addr { | ||
| ; CHECK-LABEL: test_incsspd: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: incsspd %edi | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.incsspd(i32 %a) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.incsspd(i32) | ||
|
|
||
| define void @test_incsspq(i32 %a) local_unnamed_addr { | ||
| ; CHECK-LABEL: test_incsspq: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: movslq %edi, %rax | ||
| ; CHECK-NEXT: incsspq %rax | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| %conv.i = sext i32 %a to i64 | ||
| tail call void @llvm.x86.incsspq(i64 %conv.i) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.incsspq(i64) | ||
|
|
||
| define i32 @test_rdsspd(i32 %a) { | ||
| ; CHECK-LABEL: test_rdsspd: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: rdsspd %edi | ||
| ; CHECK-NEXT: movl %edi, %eax | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| %0 = call i32 @llvm.x86.rdsspd(i32 %a) | ||
| ret i32 %0 | ||
| } | ||
|
|
||
| declare i32 @llvm.x86.rdsspd(i32) | ||
|
|
||
| define i64 @test_rdsspq(i64 %a) { | ||
| ; CHECK-LABEL: test_rdsspq: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: rdsspq %rdi | ||
| ; CHECK-NEXT: movq %rdi, %rax | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| %0 = call i64 @llvm.x86.rdsspq(i64 %a) | ||
| ret i64 %0 | ||
| } | ||
|
|
||
| declare i64 @llvm.x86.rdsspq(i64) | ||
|
|
||
| define void @test_saveprevssp() { | ||
| ; CHECK-LABEL: test_saveprevssp: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: saveprevssp | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.saveprevssp() | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.saveprevssp() | ||
|
|
||
| define void @test_rstorssp(i8* %__p) { | ||
| ; CHECK-LABEL: test_rstorssp: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: rstorssp (%rdi) | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.rstorssp(i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.rstorssp(i8*) | ||
|
|
||
| define void @test_wrssd(i32 %a, i8* %__p) { | ||
| ; CHECK-LABEL: test_wrssd: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: wrssd %edi, (%rsi) | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.wrssd(i32 %a, i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.wrssd(i32, i8*) | ||
|
|
||
| define void @test_wrssq(i64 %a, i8* %__p) { | ||
| ; CHECK-LABEL: test_wrssq: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: wrssq %rdi, (%rsi) | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.wrssq(i64 %a, i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.wrssq(i64, i8*) | ||
|
|
||
| define void @test_wrussd(i32 %a, i8* %__p) { | ||
| ; CHECK-LABEL: test_wrussd: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: wrussd %edi, (%rsi) | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.wrussd(i32 %a, i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.wrussd(i32, i8*) | ||
|
|
||
| define void @test_wrussq(i64 %a, i8* %__p) { | ||
| ; CHECK-LABEL: test_wrussq: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: wrussq %rdi, (%rsi) | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.wrussq(i64 %a, i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.wrussq(i64, i8*) | ||
|
|
||
| define void @test_setssbsy() { | ||
| ; CHECK-LABEL: test_setssbsy: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: setssbsy | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.setssbsy() | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.setssbsy() | ||
|
|
||
| define void @test_clrssbsy(i8* %__p) { | ||
| ; CHECK-LABEL: test_clrssbsy: | ||
| ; CHECK: ## BB#0: ## %entry | ||
| ; CHECK-NEXT: clrssbsy (%rdi) | ||
| ; CHECK-NEXT: retq | ||
| entry: | ||
| tail call void @llvm.x86.clrssbsy(i8* %__p) | ||
| ret void | ||
| } | ||
|
|
||
| declare void @llvm.x86.clrssbsy(i8* %__p) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,169 @@ | ||
| // RUN: llvm-mc -triple x86_64-unknown-unknown -mattr=+shstk --show-encoding %s | FileCheck %s | ||
|
|
||
| // CHECK: incsspd %r13d | ||
| // CHECK: # encoding: [0xf3,0x41,0x0f,0xae,0xed] | ||
| incsspd %r13d | ||
|
|
||
| // CHECK: incsspq %r15 | ||
| // CHECK: # encoding: [0xf3,0x49,0x0f,0xae,0xef] | ||
| incsspq %r15 | ||
|
|
||
| // CHECK: rdsspq %r15 | ||
| // CHECK: # encoding: [0xf3,0x49,0x0f,0x1e,0xcf] | ||
| rdsspq %r15 | ||
|
|
||
| // CHECK: rdsspd %r13d | ||
| // CHECK: # encoding: [0xf3,0x41,0x0f,0x1e,0xcd] | ||
| rdsspd %r13d | ||
|
|
||
| // CHECK: saveprevssp | ||
| // CHECK: # encoding: [0xf3,0x0f,0x01,0xea] | ||
| saveprevssp | ||
|
|
||
| // CHECK: rstorssp 485498096 | ||
| // CHECK: # encoding: [0xf3,0x0f,0x01,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] | ||
| rstorssp 485498096 | ||
|
|
||
| // CHECK: rstorssp (%rdx) | ||
| // CHECK: # encoding: [0xf3,0x0f,0x01,0x2a] | ||
| rstorssp (%rdx) | ||
|
|
||
| // CHECK: rstorssp 64(%rdx) | ||
| // CHECK: # encoding: [0xf3,0x0f,0x01,0x6a,0x40] | ||
| rstorssp 64(%rdx) | ||
|
|
||
| // CHECK: rstorssp 64(%rdx,%rax) | ||
| // CHECK: # encoding: [0xf3,0x0f,0x01,0x6c,0x02,0x40] | ||
| rstorssp 64(%rdx,%rax) | ||
|
|
||
| // CHECK: rstorssp 64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0xf3,0x0f,0x01,0x6c,0x82,0x40] | ||
| rstorssp 64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: rstorssp -64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0xf3,0x0f,0x01,0x6c,0x82,0xc0] | ||
| rstorssp -64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: wrssq %r15, 485498096 | ||
| // CHECK: # encoding: [0x4c,0x0f,0x38,0xf6,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] | ||
| wrssq %r15, 485498096 | ||
|
|
||
| // CHECK: wrssq %r15, (%rdx) | ||
| // CHECK: # encoding: [0x4c,0x0f,0x38,0xf6,0x3a] | ||
| wrssq %r15, (%rdx) | ||
|
|
||
| // CHECK: wrssq %r15, 64(%rdx) | ||
| // CHECK: # encoding: [0x4c,0x0f,0x38,0xf6,0x7a,0x40] | ||
| wrssq %r15, 64(%rdx) | ||
|
|
||
| // CHECK: wrssq %r15, 64(%rdx,%rax) | ||
| // CHECK: # encoding: [0x4c,0x0f,0x38,0xf6,0x7c,0x02,0x40] | ||
| wrssq %r15, 64(%rdx,%rax) | ||
|
|
||
| // CHECK: wrssq %r15, 64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0x4c,0x0f,0x38,0xf6,0x7c,0x82,0x40] | ||
| wrssq %r15, 64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: wrssq %r15, -64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0x4c,0x0f,0x38,0xf6,0x7c,0x82,0xc0] | ||
| wrssq %r15, -64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: wrssd %r13d, 485498096 | ||
| // CHECK: # encoding: [0x44,0x0f,0x38,0xf6,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] | ||
| wrssd %r13d, 485498096 | ||
|
|
||
| // CHECK: wrssd %r13d, (%rdx) | ||
| // CHECK: # encoding: [0x44,0x0f,0x38,0xf6,0x2a] | ||
| wrssd %r13d, (%rdx) | ||
|
|
||
| // CHECK: wrssd %r13d, 64(%rdx) | ||
| // CHECK: # encoding: [0x44,0x0f,0x38,0xf6,0x6a,0x40] | ||
| wrssd %r13d, 64(%rdx) | ||
|
|
||
| // CHECK: wrssd %r13d, 64(%rdx,%rax) | ||
| // CHECK: # encoding: [0x44,0x0f,0x38,0xf6,0x6c,0x02,0x40] | ||
| wrssd %r13d, 64(%rdx,%rax) | ||
|
|
||
| // CHECK: wrssd %r13d, 64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0x44,0x0f,0x38,0xf6,0x6c,0x82,0x40] | ||
| wrssd %r13d, 64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: wrssd %r13d, -64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0x44,0x0f,0x38,0xf6,0x6c,0x82,0xc0] | ||
| wrssd %r13d, -64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: wrussd %r13d, 485498096 | ||
| // CHECK: # encoding: [0x66,0x44,0x0f,0x38,0xf5,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] | ||
| wrussd %r13d, 485498096 | ||
|
|
||
| // CHECK: wrussd %r13d, (%rdx) | ||
| // CHECK: # encoding: [0x66,0x44,0x0f,0x38,0xf5,0x2a] | ||
| wrussd %r13d, (%rdx) | ||
|
|
||
| // CHECK: wrussd %r13d, 64(%rdx) | ||
| // CHECK: # encoding: [0x66,0x44,0x0f,0x38,0xf5,0x6a,0x40] | ||
| wrussd %r13d, 64(%rdx) | ||
|
|
||
| // CHECK: wrussd %r13d, 64(%rdx,%rax) | ||
| // CHECK: # encoding: [0x66,0x44,0x0f,0x38,0xf5,0x6c,0x02,0x40] | ||
| wrussd %r13d, 64(%rdx,%rax) | ||
|
|
||
| // CHECK: wrussd %r13d, 64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0x66,0x44,0x0f,0x38,0xf5,0x6c,0x82,0x40] | ||
| wrussd %r13d, 64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: wrussd %r13d, -64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0x66,0x44,0x0f,0x38,0xf5,0x6c,0x82,0xc0] | ||
| wrussd %r13d, -64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: wrussq %r15, 485498096 | ||
| // CHECK: # encoding: [0x66,0x4c,0x0f,0x38,0xf5,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] | ||
| wrussq %r15, 485498096 | ||
|
|
||
| // CHECK: wrussq %r15, (%rdx) | ||
| // CHECK: # encoding: [0x66,0x4c,0x0f,0x38,0xf5,0x3a] | ||
| wrussq %r15, (%rdx) | ||
|
|
||
| // CHECK: wrussq %r15, 64(%rdx) | ||
| // CHECK: # encoding: [0x66,0x4c,0x0f,0x38,0xf5,0x7a,0x40] | ||
| wrussq %r15, 64(%rdx) | ||
|
|
||
| // CHECK: wrussq %r15, 64(%rdx,%rax) | ||
| // CHECK: # encoding: [0x66,0x4c,0x0f,0x38,0xf5,0x7c,0x02,0x40] | ||
| wrussq %r15, 64(%rdx,%rax) | ||
|
|
||
| // CHECK: wrussq %r15, 64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0x66,0x4c,0x0f,0x38,0xf5,0x7c,0x82,0x40] | ||
| wrussq %r15, 64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: wrussq %r15, -64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0x66,0x4c,0x0f,0x38,0xf5,0x7c,0x82,0xc0] | ||
| wrussq %r15, -64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: clrssbsy 485498096 | ||
| // CHECK: # encoding: [0xf3,0x0f,0xae,0x34,0x25,0xf0,0x1c,0xf0,0x1c] | ||
| clrssbsy 485498096 | ||
|
|
||
| // CHECK: clrssbsy (%rdx) | ||
| // CHECK: # encoding: [0xf3,0x0f,0xae,0x32] | ||
| clrssbsy (%rdx) | ||
|
|
||
| // CHECK: clrssbsy 64(%rdx) | ||
| // CHECK: # encoding: [0xf3,0x0f,0xae,0x72,0x40] | ||
| clrssbsy 64(%rdx) | ||
|
|
||
| // CHECK: clrssbsy 64(%rdx,%rax) | ||
| // CHECK: # encoding: [0xf3,0x0f,0xae,0x74,0x02,0x40] | ||
| clrssbsy 64(%rdx,%rax) | ||
|
|
||
| // CHECK: clrssbsy 64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0xf3,0x0f,0xae,0x74,0x82,0x40] | ||
| clrssbsy 64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: clrssbsy -64(%rdx,%rax,4) | ||
| // CHECK: # encoding: [0xf3,0x0f,0xae,0x74,0x82,0xc0] | ||
| clrssbsy -64(%rdx,%rax,4) | ||
|
|
||
| // CHECK: setssbsy | ||
| // CHECK: # encoding: [0xf3,0x0f,0x01,0xe8] | ||
| setssbsy |